Let's make an adventure game - Simple iOS Adventure Game Project

LATEST VIDEO

Introduction
A small development diary on making a small 3D iOS adventure game in the style of Grim Fandango. All development on this project started on the 20th of december 2012.

Things the game should contain

  • GameCenter achievement support
  • Character control relative to active camera
  • Proper menu system
  • Option to save/load progress
  • Inventory to store items the player picks up
  • Gameplay time tracker
  • Speech tree
  • Should run with at least 25fps on iPad 3
  • High quality realtime cutscenes
  • Code should scale to other platforms (PC/Mac) without elements needing to be rewritten

Things the game may contain

  • Dynamic news feed on the menu screen to inform about news
  • Buttons to access GameCenter and Facebook sharing on menu screen
  • Chapter selection depending on progress
  • Game rendering in retina resolution on iPad 3

Outcome
The final product is not being developed for commercial distribution, but if the quality of the product is good enough it may be uploaded to the Apple App store.

About me
I am a 22 year old graphic designer from Denmark with a passion for cinematography and interactivity. My stance on games is that it can be an art form by which we can express ourselves on the same levels as Movies, Music, Photography and Illustration, but is for the most part limited by fundamental design choices that aims at making the core gaming experience about fast player choices rather then go for a more slow pace that enables the player to take in the rich content they are served.

As a media form, the consumer of the content is consistently underrated and the aim is generally not to respect the player, but instead to hold their hands and to make things far more elaborate then they need to be. Movies are a great platform to look at and a big inspiration on how to create experiences that can appeal to wide audiences while respecting them. Movies are generally pretty elaborate in the ways they tell their story, but due to the condensed nature of the medium, a lot of the underlying meaning of the entirety comes from what we perceive in the minor details for actually engaging in the experience we are presented.

Another stance for me is regarding the nature of the mobile gaming market outside of the dedicated console market is that the platforms aren’t bad at all in terms of hardware, there are just not enough original quality content on those devices. There are too big a focus on everything being a social experience and creating lazy dumped down experiences for a quick cash grab.

Initial progress
A video of the projects current state:

As of now the basic fundaments are mostly in place for controlling the character and make it move relative to the active camera. I need to implement a function that makes the movement direction stick to the direction the player was moving in before a camera shift in order to get rid of some navigational annoyances.

The active camera is triggered by the player entering a triggezone and is then switched. The script could possibly be improved to make me only need to select the camera i need to switch to.

There is an onscreen joystick for now, will be changed so the entire screen acts as a touchpad at a later time.

GameCenter is implemented and can properly award the player with an achievement for reaching X situation in the game. To ensure that GameCenter can always be started by the game regardless of the changes i make in a level or change how the application starts, GameCenter is loaded automatically as the game boots and is not tied to a given scene.

The script is easy to implement in the scene and is easily changeable to the desired achievement to give to the player. The code also wont run the GameCenter specific activation if running on another platform, so the same script could be changed to trigger achievements in another framework (Steamworks).

As you can see from the video, there is a pretty broken logo fader in the beginning that needs to be fixed and some junk on the screen. Some of the test HUD items i have worked on will also scale to have the same height and width regardless of the resolution.

The next step i think will be to look at how i can create good cutscenes and have a look at how i want my player to interact with things in the environment. I also have a concept for a story in my head that i maybe wanna use for this project.

A small update on some progress i have made today.

The camera triggering system have been changed to automatically disable the current active camera before switching to the new one, thus not requiring me to manually select what cameras to be deactivated every time i want to make a camera change.

I have made a small Gizmo i can see in the editor to act as my levels spawn points. Each Gizmo will need to be assigned an ID that will be used when a level is loaded to make sure that the player spawns in the correct place. I also think i will need to assign a camera trigger to it in order to correctly trigger the levels initial camera.

The player spawned by the Gizmo is a prefab that i can change as i want, making any changes to my player game wide.

looks like you’re off to a great start :slight_smile: I really like how the lights play on the character as it walks down the hall. the setup almost reminds me of the first few resident evil games. It does look a little clunky going around corners, but im sure that has to do with the camera placement and all that, so im sure that’ll improve with time and practice, finding out what angles work best and all that.
keep it up, it looks really cool :slight_smile:

Eteeski, your my youtube hero. I also like how to lights look on the player, but it looks hard to control as you get far away from the camera.

lol thank you :slight_smile: yeah, i agree, perhaps it’d be better to avoid being far away from the camera…but then again, it looks cool. I think the real thing that’ll make the controls hard is if the difference in camera angle is too much when switching between cameras. maybe try to create a flow to the camera angles. idk though, i’ve never tried making cameras in a game like that before.

Thanks for the input guys!

It’s actually not hard to control at all, the navigational issues you see are the result of me not yet compensating for the change in camera direction the controls are relative to (right now they will switch immediately).

I have made quite some progress today and i will post a video of it soon.

Small video showing the level changing in progress and some other various behind the scenes improvements (recorded on an actual iPad):

Some new progress on my system to make the player interact with the environment using touch controls:

Great start! keep it comming.

Been a bit preoccupied the last week, but i finally got some time today to test some basic cutscene creation within Unity using uSequencer, also doing a ton of background stuff. The test was also to create a fairly graphics intensive scene for the iPad to render and i think it came out fine when you take into consideration the models are just freeloaded off TurboSquid and not optimised for mobile use.

Video of the cutscene:

Its silky smooth on the actual device and looks pretty good, some pics:
http://i.minus.com/iKjvqw5gHoQ5G.png
http://i.minus.com/iv8q4QbsaG0X6.png
http://i.minus.com/ib16vQ6z5mQeNU.png
http://i.minus.com/iSVXNwT8kHzD2.png
http://i.minus.com/imdW0qhiTPQSx.png

Finally fixed my level changing script, rewriting it from Java to C# made me go into some issues with the whole “WaitForSeconds” function. I have been setting up some global variables to help me easier change game wide functions such as how long the camera fades should be and other neat stuff that i am trying to implement. Also put in a debug function that i can easily activate and get access to information regarding the framerate and what the current build is, but i made it easy to add more functions to it.

I went ahead and made some basic interaction with my cutscene room so the player can move and interact with it:

I also think the game looks quite nice when rendered in the retina resolution:
http://i3.minus.com/ibzrjjBEbUwZLU.png

I was talking to a friend about how time could be introduced as an element in an adventure game and how it would be set up, so made a small system that can keep track of the games global time in realtime or sped up by x times (speeding it up doesn’t work properly yet). The system can keep track of the games current time in hh:mm.ss and will keep a track of how many days have passed.

To the the function i made a small clock that responds to the game worlds current time and a small time debugging overlay. You can test it out here:
http://sentiovision.com/clock/clock.html

The system still needs some work done, but it seems to function well so far.