Worklog for jhocking

iphone puzzle rpg

Return to Worklogs

been drawing icons(Posted 2010-10-27)
new app icon:






icons for inventory and spells:



-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

working on the interface(Posted 2010-10-02)
The most visible work I've been doing recently is on the interface. For example, now the interface looks a lot more polished than it used to:



Still not finished (instead of garish colors to distinguish the buttons, they will soon use consistent colors and icons) but the beveled round buttons look much more professional than the blank squares I tested with for so long.

Similarly, I redid the textures on the characters in order to build an action pose of them for the main menu:



Painting character textures isn't strictly interface work, but working on the main menu is definitely what prompted me to finally get around to doing this. If you compare to the main menu's beginning a couple updates ago, you can see how it's evolving.

Of course now I have to design the rest of the screen. It's not going to be a bunch of blank buttons forever, and the background needs to be much more interesting. I'm thinking a darkly lit dungeon hallway with action lines radiating out from the center, like the characters are bursting forward at you.



In other news...

In order to get the game released faster, I've been considering dropping the water area. While the original plan was 4 areas to the game, 3 areas would still feel pretty complete. I'm not sure yet, but I'm leaning in that direction.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

still chugging away(Posted 2010-08-22)
It's been quite a while since my last update so I just wanted to post a new screenshot:



I'm rather frustrated that, for various reasons, I've accomplished considerably less by now than I was initially hoping/planning. Still, I am still chugging away at this, and it's really coming together.

Some of those reasons were more or less out of my hands. I'm at the hardest point in development though, the gap between the fun work of implementing new features and the final sprint to the finish. Working on new features is easy to get motivated for, and when the finish is in sight it's easy to find the energy for those final steps, but right now I'm in the demoralizing grind of just churning out level after level over and over. I'm a bit embarrassed to say but while I'm in the grind I can have an entire week go by without ever feeling motivated enough to work on the game.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

midway point(Posted 2010-06-21)
Here are a couple screenshots of newer features in the second prototype level:





Neither depicts features I implemented today, just stuff I haven't posted here previously. That'll probably become the norm at this point, me doing lots of work without bothering to document everything here. There's going to be much longer gaps between major milestones (eg. look, I've drawn the interface!) because now there are lots of existing features to polish. Instead of spending most of my time implementing new things, I'll be spending most of my time tweaking existing things.

I am pleased to report that the first playtests I've done went really well. First off, everyone who's played the game found it really compelling. A great sign is that they keep insisting on playing beyond what I ask them to (as in, I'll ask them to play two levels, but they really want to beat the third one too.) I've never developed a game before that drew people in so strongly.

Second, I got lots of great constructive criticism to chew on. In particular, the playtests have been really useful for telling me which of the tasks I already have planned are the highest priority. Although I expected some feedback covering tasks I already had planned (I specifically told people not to censor themselves because they're afraid of telling me something I already know,) this sort of feedback actually turned out to be the most important feedback I've gotten out of the playtests so far.

As an example, I already had planned to tweak the buttons on the interface to make them easier to tap, but I had backburnered that task in order to focus on other things. Well, every playtester complained about having trouble tapping the buttons, so I took care of that right away after the testing.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

starting work on user interface(Posted 2010-06-07)
It's kind of silly to include a screenshot with this update since there's barely anything to see but oh well whatever. I've started implementing the main menu of the game:



Since my last update I've been up to all sorts of edits (in particular, I've built most of the second prototype level) but today I decided to implement a main menu. I decided to pursue this task after starting to plan out the first playtesting session; since there are three different levels to test (the preview level that shows off level shading, and both gameplay prototypes,) I realized the game needs a startup menu to select the level.

It's hard to explain what this entailed to someone who doesn't program, so suffice to say I've spent all day doing finicky code work to restructure how levels load in order to accommodate a main menu.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

first preview trailer(Posted 2010-06-01)
Just made a trailer to show off the prototype of the game:
http://www.youtube.com/watch?v=v_zfF5RM01M

Notice the nice shading on the level. I figured out a pretty cunning way of cutting up polygons to optimize vertex colors on the level.

Still not quite ready to post this on toucharcade and tweet about it, I want to improve the visuals a bit (draw the interface in particular) before trying to really expose this.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

prototype level 1 finished(Posted 2010-05-20)
latest video http://www.vimeo.com/11901647

Fully functional level, finally! The players all work, the devices in the level all work, the AI enemies work. Now I can start playtesting this level, while also starting to work on a next prototype level. This first prototype level had the following devices:

dropoffs
locked doors
keys
slippery ice
sliding walls
floorplates
written messages
treasure chests
end zone

The next level will have more devices I want to develop:

automatic cannons
switches
retracting spikes
moving platforms
water
drawbridges
magic chargers (ie. triggers you shoot)
blocks you can push

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

The computer is thinking(Posted 2010-05-17)
Here's a montage of screenshots of the AI noticing the player and attacking:



woohoo

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

iminib3d 0.4(Posted 2010-05-09)
As the previous two screenshots show, I've been chugging away at the action-RPG combat system. Now you can attack enemies by tapping on them, but the enemies are still just static dummies and I need to program their behavior.

What I really want to mention in this post however is that yesterday I upgraded iminib3d, and it was a lot less painful than I feared. simon released version 0.4 a couple weeks ago and this weekend I finally got around to migrating my project to the new version:
http://www.blitzmax.com/Community/posts.php?topic=90019

As would happen with most IDEs, in XCode when moving all the stuff I created (game code and graphics) to integrate into a new project, there was a lot of fiddly adjusting of settings I had to do to make it all work again. Apparently I've become practiced enough with XCode that I knew all the steps required without having to look anything up, so moving the project turned out to be much easier than setting it up in the first place because I know what I'm doing now.

That was a pleasant development, but I still prefer the non-IDE approach of some other development tools and programming languages, where all the files just sit in the directories you setup without any central index to fiddle with, editing the code is done through a separate text editor rather than integrated with that central index of files, and the compiler or interpreter is simply invoked through a command line. I know I'm probably in the minority on that one, and other programmers rave about this or that full-featured IDE, but I do not like dealing with the extra layers of complexity.


Anyway, with the latest version of iminib3d came a bunch of welcome bug fixes (basically, a number of adjustments I made to work around bugs are no longer necessary, making the code a little cleaner and more robust,) along with... iPad support! The latter is very exciting but not something I'm planning to do much playing around with for the time being. I'm going to keep concentrating on getting this game finished, and then after the iPhone version is finished maybe I'll look at putting together an iPad version.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

FIRE(Posted 2010-05-06)


-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

ATTACK(Posted 2010-05-05)


-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

first gameplay video(Posted 2010-05-01)
Just a quick update to link to the gameplay video I just recorded:
http://vimeo.com/11385987

You can see that the enemy isn't functional yet, but I've implemented stuff like locked doors and switches.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

filling out the level(Posted 2010-04-27)
I am very close to having a playable level all finished, at which point I'll start having other people playtest the level. In this screenshot you can see all three characters with animations, plus I've created graphics for other elements of the level (an enemy, a key, a treasure chest, etc.) Now I need to program functionality for the devices (eg. collect keys and use them to open locks.)



A few semi-interesting things to note...

First off, I can use a two-finger gesture to rotate the map. I had mentioned this in a previous post actually, but never actually showed a screenshot of a rotated map.

I have on my todo list a bunch of standard iPhone features to implement (resume from call, multitasking in the new OS 4, stuff like that) but one thing I've had since the first prototype is two-finger gestures like pinching and sliding to control the camera, just like using the Maps app. I'll see in playtesting how useful people actually find that functionality, but I thought it was a neat feature.

Incidentally, there are actually two subtly different kinds of movement control that I need to playtest; that's what the white button does, it toggles between the movement controls. There's movement to where the player tapped, and movement toward where the player is touching. These are subtly different and I need to see which players prefer; move to target like Diablo on PC, or move while touching like Zelda on DS. Even if both options are in the settings screen, there still needs to be a default.



Another thing to point out is that I've written an XML export script for Maya (and then, just for the hell of it, Blender too.) This way I can layout the devices within Maya, and then simply save their positions to an XML file. The game will read that XML data to place devices around the level. I suppose I could write even more tools to use for level editing, but already this is pretty slick if I do say so myself.



Oh and I'm rather proud that I got stuff done while trapped overseas. I live in Chicago, but I happened to be in Spain for a conference when the volcano in Iceland erupted. Doh!

The goblin you see in the screenshot was largely modeled whie I was sitting on the floor in Madrid's airport. Amusingly, some English kid walking by complimented my laptop and asked if I play Warcraft.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

the main characters(Posted 2010-04-17)
Here are the three main characters:



The models are complete. I used under 400 polygons for each character (350 for the dwarf, so that I can use 50 polygons for the hammer he carries) because the iPhone is very limited in polycount. I'll probably work on the textures more later, but this is great for a first draft.

Note that I changed the color of the pixie's hair. Close up blonde looked great, but once I put her in the game I found that, with the tight top-down camera angle, her hair and skin colors just kind of blended together and looked blah.

While working on these I realized I need to model one other character, a goblin enemy, before I start working on the various traps and devices in the level.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

wip characters(Posted 2010-04-06)
I've started modeling the characters:



Up until now I've simply used blocks to stand in for the characters, representing them while I worked on the movement controls. Obviously I'm only half-way done; I've only modeled two of the three main characters, and their textures are just basic flat colors for now.

The three characters are going to be a flying pixie, gnome wizard, and dwarf fighter. I'll post better images of the characters once I've modeled all three and have worked on the textures more.


Incidentally, I threw in a subtle blob shadow underneath the characters. I wasn't sure before if I needed shadows, but it was really hard to pick out the characters against the floor texture without that dark contrast.

I also noticed that at this extreme downward-facing camera angle I had to skew the characters for them to look good. Basically, I scaled them in code so that they are short and stout; in any closeups (don't know if there will be, but it's good to think ahead) I can easily return the scale to normal.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

bitmap fonts(Posted 2010-03-30)
I programmed an object called BitmapText to display text using bitmap fonts. Bitmap fonts are basically an image with all the letters in a grid to cut up and display; here's a tool to generate bitmap fonts http://www.boxofrats.com/content/bitmap-font-machine-released

Now this image



turns into this message



Wait a minute, I didn't tell it to say that...



ASIDE:

Doing this made me realize just how great the XML handling is in Actionscript 3 (data about the different characters in the font is stored in an XML file.) I've gotten used to how Flash works when loading XML files, so it took me a little while to get used to how libxml2 does it. Once I got over that little hump though, working with XML files in C++ isn't much harder than anywhere else.

Also, I noticed that iminib3d has a few undocumented commands that aren't in Blitz3D. These all seem to be additions for working with iPhone. In this case, while searching online for information to work through a problem I was having loading the XML file, I noticed that iminib3d had a command called ResourceFilePath that looked a lot like the stuff I was reading online. Sure enough, after I used that command the XML file loaded. Handy!

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

first draft textures(Posted 2010-03-25)
I couldn't help myself, I started working on textures for the level:



This is certainly not the finished look (I'm especially annoyed by that floor, I really need to redo that image) and it's all so boring and repetitive looking that I definitely need to spice up the visuals with shadows and colorful accents lying around the dungeon.

This look is fine for now though, and I am going to move on to other tasks (ie. bitmap fonts) this weekend. I'm not sure how much progress I'll make this weekend, because I'm taking a little trip. Back to the grind next week certainly!

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

UVs on level(Posted 2010-03-22)
Wasn't planning to make another worklog entry until I was finished texturing the level, but I just captured this screenshot and liked it a lot.

I just assigned UV coordinates to the model in Maya. I threw on some basic gradient images to test with, and it doesn't look terrible:



I'm halfway tempted to just keep this look, but I want it to be a dungeon, not some abstract space maze. That said, I think I'll move onto other tasks for now before finishing the level textures, because I still need to do dynamic text display for the GUI (ie. display text that changes during the game, not just an image that has text on it) and had some great ideas for that.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

finally caught up to the present(Posted 2010-03-21)
I decided to tackle a few housekeeping sort of tasks just to get them out of the way so that I could get back to concentrating on fun stuff. First I restructured the code to a clean object-oriented architecture (up until now I was simply barfing out code as fast as possible just to see if it works.)

I also moved the entire XCode project to Dropbox for no-brainer version control and sharing of files. The latter is important because, even though I'm the only developer working on this game, I frequently have to shift around between different machines while working. It's pretty cool to touch up a 3D model on my desktop PC and then immediately hit compile on the Mac in my lap.

I also spent a little time making sure I could display 2D graphics for the game's GUI. In particular, I had to make sure all the math was right for pixel-perfect display of 2D images in a 3D scene. Here's a fullscreen image I displayed as a test:



Alright, back to the level. I already started testing the level after just laying out the basic shapes, but then I had to assign vertex colors to differentiate walls, floors, and bottomless pits. I had a difficult time putting together an art pipeline that would work for this project; I went through about half a dozen different partial-solutions for how to get models from Maya to .b3d file format with baked lighting, vertex colors, and skeletal animation.

I won't go into the gory details, but suffice to say that it involves multiple pieces of software on multiple computers, plus there are two different pipelines for levels and characters. ouch

But the effort was worth it! Here's the level with colors applied (note the vertex colors that look like the hole descends into blackness):



The vertex colors look great for now, but I really need to start texturing the level. Probably tomorrow...


ASIDE: While working on that level I realized I should split off a separate branch of the project where I can test levels by loading them directly, without the baggage of the (eventual) start screen or level progression or any of the other stuff that will go in the final game. I added that task to my todo list for after I'm done programming all the various devices that will go in the levels.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

up to last week(Posted 2010-03-21)
First I programmed a test of the controls. While the game design has existed in a mostly complete state for a long time, obviously I had to adapt the control scheme to the unique environment of the iPhone. I threw a bunch of big shapes onto a green plane for some test scenery, and then I plunked a few cubes into the scene to represent characters:



That prototype worked pretty well. The characters move to where you tap the screen, and you can rotate the scene with a two-finger gesture. Naturally I had a few kinks to work out; in particular, I discovered a few bugs in iminib3d that I had to work around.

My next step was to design a prototype level. It needed to involve many of the different obstacles and devices that would comprise the puzzles in this game. Here's the level I designed:



I figure I'll go through a few prototype levels before I start developing the finished levels that will go in the game. Anyway here's the beginning of the model in Maya:



Actually this screenshot isn't what I modeled first, this is after I did a couple iterations of testing and tweaking. Right after building the initial model, before doing any more work on coloring the level or anything, I plopped it in the movement prototype to get a feel for scale. Immediately I realized my initial guess at how large to make the level was way off, and that I needed to make the walls lower and the corridors wider and less cramped. It's always a good idea to figure out the fundamentals of scaling while it's still easy to adjust.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

settling on a game design(Posted 2010-03-21)
For a while now I've been kicking around plans for what to do for my first iPhone game. A few weeks ago I finally settled on a puzzle RPG. My plans for after this project include other game designs I have in mind, and probably purchasing Unity to use for future projects. For right now however I will be using the Blitz3D-based open-source engine iminib3d.

Using iminib3d has a few consequences for me, the most interesting of which is that I will be programming in C++ for the first time. Now, learning C++ while working on a game is not as big a deal as it might sound at first, since I am already quite proficient at programming in a variety of object-oriented languages. I just happened to have never needed C++ before, so it's been interesting to see how features I'm familiar with in other languages relate to this language that most people consider the most fundamental in modern computing.



That's what I find interesting about this project from a technical perspective. From a game design perspective however, what's interesting is how old an idea this game is. Because the iPhone is such a new platform, most people associate iPhone games with very new concepts. In fact however most iPhone games are based on game designs that predate the platform, sometimes by decades.

For example, I first came up with this game almost 10 years ago, and the game I designed drew heavily from games I played in the early-90s like the Legend of Zelda and Lost Vikings. Here's an illustration of one of the characters that I had drawn back in, oh, maybe 2001:



Notice that I scaled the image down to be an app icon. Obviously that's a primitive old sketch, and I'll be replacing it with a much better image once the game is finished, but for now that works great as the icon on my iPhone while I develop this.

...

Oh before I forget, the game is called Chronicles of Aerth. I have no idea if that name will survive until the end of the project, but I do like it!

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design

explaining why(Posted 2010-03-21)
A few years ago I decided to keep a worklog as I developed a game, Gyroman. Inspired by simonh's worklog for Super Gerball, I kept a journal of my progress with screenshots, hoping to end up with as spiffy of a development diary.

Well as unfortunately happens sometimes, that project died part of the way through. It's too bad, because the project got off to a great start. Actually, there's a chance I'll resurrect Gyroman, since it's a dual-stick shooter and that genre is pretty popular on iPhone. However, for now I'm working on a new project, and once again I decided to keep a worklog here that will try to be as inspiring and educational as the one for Super Gerball was.

-Joe Hocking
http://www.newarteest.com | Interactive Art and Experimental Game Design