Tuesday, December 28, 2010

Big Update

A long time between blog updates due to the festive season. Rest assured that a lot of progress has been made!

Creating an ice cube with circle burst snowflakes

  • Light sources have been added to the editor. Each square can have up to 3 directional lights plus ambient light. This takes the look of the game to a whole new level.
  • Dynamic in-game lights. So far, I am only using this for doors. They have a red light when locked and a green light when unlocked.
  • Circle-burst particle effect. Rather than have a 100 random particles, which looked like crud, I now use expanding rings of particles, such as fire for explosions and snowflakes for ice. Looks a million times better in my opinion. Plus it gives the game that retro look that I am after, rather than being uber-realistic.
  • High friction tiles. Nothing can be pushed/pulled onto them, and anything on them cannot be pushed/pulled. I use them to surround my push puzzles to stop cheating (by pushing blocks off the puzzle).
  • Player now takes damage and dies.
  • Village levels are now starting to take shape.
  • Doors are now unlocked by push puzzle triggers, where appropriate and relock when appropriate.
  • Ice now melts over time
  • Ice can be pushed into enemies for massive damage
  • About a bazillion things under the hood

The development is starting to transition from game engine development to level design. Having said that, there are still quite a few things on the to do list for the game engine.

This morning work started on a 3D map selection map (for want of a better name). It something that requires little effort, but will look brilliant and will add that extra layer of polish.

Multiple light sources but still using BasicEffect

Circle burst explosion of an eyeTank

Friday, December 10, 2010

New enemy units: eyeTanks I & II



  • New enemy unit - eyeTank : Stands its ground and fires a plasma ball at you. Slow rate of fire, but large damage and infinite range.
  • New enemy unit -  eyeTank II : stands its ground and fires machine gun at you. Fast rate of file, but less damage. Range is infinite.
  • Better looking fire particles
  • Enemies now explode on death.
  • Explosions cause damage to other enemy, allowing for chain reactions.
  • Preliminary explosion particle effect with 100 random particles.




Tuesday, December 7, 2010

First enemy unit: eyeBomb


  • New enemy unit (actually the first, thus far)...the eyeBomb! Basically, its a big floating eye that follows you around or should that be "chase". Either way, when it gets too close....BOOM! When you kill it, it also goes BOOM! They don't go BOOM, yet, but it is quite fun running from them and trying to make ice cubes to block them. They need a bit of path finding AI to get around things. Another possibility: Chain reaction explosions!
  • Added better flame texture for Fire.

Saturday, December 4, 2010

Ice, pull, doors, lighting, first real map


  • ICE: Ice cubes can now be pushed. They don't decelerate until they hit something. If its an actor, they injure it with their current hp and destroy themselves. A formidable weapon!
  • PULL: Objects can now be pulled from 2 squares away to 1. This is, of course, the opposite of PUSH. handy as an "undo" in the push puzzles.
  • Doors can now be locked. Meaning they cannot be opened with USE. I use this in the test chamber to only allow you into the next room once the current puzzle has been solved.
  • Test Chamber A is about 80% complete! this is  new map consisting of 5 push puzzle rooms and an observation room. This will basically acts as a tutorial.
  • Played around with lighting a bit more. namely, the per-tile lighting. It works as well as I hoped! Even with one light, affecting blocks and actors, it is much better looking. Today's screenshot shows one yellow spotlight in a corridor. It is very light on FPS, as all of the calculations are done at design time, not run time.

Tuesday, November 30, 2010

New viewpoint. Working doors.



  • Metal power now switches to USE when facing a door.
  • USE can now open/close doors. Though, the usefulness of closing a door is debatable. I should maybe just automatically close the door after 5 seconds or so.
  • Changed the viewpoint to be higher up, making it more RPG-like and lighter on the FPS. Perhaps, I will have a button to switch between viewpoints.
  • I made some discoveries with BasicEffect when combined with the old school tilemap approach that I am using. Mainly that I can have 3 directional lights and an ambient light per tile! I started writing my own effect, when I discovered this, so now I don't need to.
  • Added an in-game editor to speed up minor changes. Should be handy when adding lighting. Need to add level save code. Note: the editor will not be in the released version.
  • Ice power now creates ice cubes in all 8 directions. Previously, it was only the 4 cardinal directions like the air powers.
  • HP and name of enemy injured now appears in HUD

Thursday, November 25, 2010

Doors, Ice, Prompts


  • Ice Power - Initially, I was going to have the ice power as an ice blast, but that seemed to just be the fire power with different graphics. So, I had a rethink: If fire destroys, then it's opposite, ice, must create! So, the ice power creates ice cubes that can be used to block enemies. They will also be a handy weapon when pushed, as they don't decelerate (think Pengo). Also, they can freeze water hazards so you can walk on them. So far, I only have them being created, so they are a work in progress.
  • Added doors that can be opened and closed. A lot more trouble than it sounds. I am drawing the doors as actors, so that they are easier to move. As a bonus, this makes them block and unblock the player correctly.
  • Added prompts. These will be used for informational screens and conversations with NPCs. Up to 2 NPCs can talk on each page and the player can choose from up to 3 responses.
  • Metal power - Initially, this was to be just punch. But I have decided to make it contextual.
    When you are near a friendly NPC it will be Talk.
    When you are near a terminal/door/etc it will be Use.
    Otherwise, it will be Punch.
    Note the new icon for it in the HUD (bottom-right). It will always be activated as right-mouse (right-trigger on gamepad).


Saturday, November 20, 2010

The pie is a lie, too!


  • Added alpha to actors and blocks. Found an interesting "undocumented feature" : When you make a mesh see-through, you can only see things that were previously drawn. Anything drawn after the see-through mesh, will still be blocked as if the mesh was opaque. The way I minimised this effect was to draw all the opaque things first, then draw the non-opaque.
  • More work was needed on the editor to rotate actors, so that I can have decorative objects on the walls cheaply.
  • Added a basic HP and SP status bars. The SP (special power) will drain as you use your powers, and regenerate as you don't. It is to stop players from spamming powers.


Saturday, November 13, 2010

DEMII goes to the beach


Mostly working on optimisations and other behind-the-scenes stuff. I came to the realisation that seeing as I have a grid of 64x64 tiles and each tile can have a mesh...the is no rule to say that the mesh must be 1x1 tile! In fact, I could save a lot of work, here. I tested it with an empty map consisting of nothing but 64x64 (4096) sand tiles. I got 12fps. But one sand tile that is 64x64 squares got 63fps (the refresh rate of the video mode as I lock to vertical refresh).

I just made this hut mesh. It needs better textures, but thats OK for now. It is 4x4 tiles and would make a village quick and easy to make.

Friday, November 12, 2010

Push puzzles complete!


  • Push puzzles completed and tested. Special trigger tiles activate only by a stopped crate.
  • Fixed clipping issues when pushing objects. Previously, you could push and object into the edge of a square and it would combine with the wall. I was collision testing the middle of the object and not the edge.
  • New weapons icons for the HUD. Much nicer looking and match colors of the XBox controller, for clarity as to which button is which.
  • Note the new model for DEMII herself. Still a work in progress, though.
  • Fixed a lot of issues in the editor. In fact, thats where I spent most of today's efforts.

Thursday, November 11, 2010

Trigger Tiles

Spent today mostly working on the map editor. Added trigger tile and actor configs to the editor. The game, itself now loads the trigger tiles and reacts when player enters that tile. So, I now have all of the elements for the push puzzle rooms!

Wednesday, November 10, 2010

Low Friction Tiles

  • Got low friction tiles working. Actors pushed on these don't stop until they reach a non-low friction tile, or get blocked.
  • Started working on trigger tiles.
  • Designed a number of push puzzles


Updated my to do list and noticed that most of the outstanding items are little things, with exception of 2 daunting jobs: Enemy AI and animation. I also note that I am 3 weeks away from the deadline I set myself. I must progress faster than what I currently am, if I want to meet it.

Designing the puzzles is interesting. They can add play time and challenge to a game, but make them too hard and it leads to frustration. I don't want to make them too big a part of the game as puzzles are only fun until you know the solution. Then it becomes a memory game.

Monday, November 8, 2010

The 80/20 rule bites


Been a while since the last update. Most of the changes are non-graphical...
  • New Particle (point sprite) engine. Now animates, moves and ages particles. On collision, it injures and changes particles. eg. fire turns to smoke, etc.
  • New menu system. Manager works, but needs coding for the options.
  • HUD. Displays all weapon and highlights the current weapon. Based on percentages of the screen as opposed to pixels, so it retains size/place on resolution change.
  • Design change: All acts will have an overmap for clarity.
  • I have also been learning/wrestling Blender. A new model for DEMII is in the works. Advantage of Blender is it exports to FBX, which contains animation! It can also export to .X with animation. I will be playing around with this today.
  • There are a few XNA animation libraries around. None of which are documented well. Dont know which to use, or maybe I should just write my own.
  • Design change: After seeing the "ice puzzle rooms" of some Zelda games, on youtube, (they are basically the old chestnut Sokoban :D ) I have decided to do something similar. Should be easy as. I love this idea as it is gameplay without violence, which suits a female child character. Bonus!
  • Level Editor now creates rooms. You choose the wall,floor and corner style you want, as well as the map region, and it creates the room with all of the corners and walls rotated correctly. Big time saver.

Friday, October 29, 2010

More interactivity.

Fire now fires 5 times as many particles, with a small, random spread. This adds more volume to the flame. Still not 100% happy with it, but it will do for now. Might need more/different particle frames, etc.
Added ability to change weapons via mouse wheel. Air weapon is now split into 2 weapons: Push and Pull. The logical (intuitive?) XBox weapon buttons are Y=Push(because its the furtherest from the player), A=Pull(because its the closest), X=Ice (because its blue) and B=Fire(because its red). Makes sense to me.
Push is already coded. Pull is going to take some thought. Push pushes something 1 square away to be 2 squares, so maybe pull can have the opposite effect (pull something from 2 squares to 1 square...and/or collect collectibles one square away).
I am hoping to work on doors, trigger points (which cause events like opening doors, dialogs, and change of level.), maybe even using things (doors, terminals, switches, etc) later today.

Wednesday, October 27, 2010

The first screenshot

I have spent a few days learning and wrestling with point sprites. Amazing things. Basically, they are billboards (2D polygons that always face the camera)...and you only have to specify the 3D position of its centre and the texture. Upside is that you can have thousands of them using HLSL (processed by GPU). Downside is that all the variables like TEXCOORDn, etc get trashed by them, so you can't, say, send an UV offset to animate. I found a way around that by using multiple calls. Could just use quads, I know, but this works.
The above screenshot shows the current <b>fail</b> graphics. Just place holders, really, as I am more concerned with the interactivity/engine at the moment, than pretty graphics and level design. Anyway, it shows a simple fire effect using point sprites. I am changing the color from blue to white to yellow to red, so it looks like gas being ignited. Quite a cheap and effective effect. I may randomise the angle slightly to give a widening flame.
EDIT: Fireballs now are blocked by walls/actors and can injure/kill actors. It is starting to feel like a game, now. I am not quite sure how to handle death in the game ie Do the actors lay on the ground, do they raise up to the heavens (or sink down below) or do they flash and disappear ? For the moment, they are just being rotated to look like they are laying down.
As for my site, gameinfonline.com, well, my host (freehostia) is playing silly buggers with an upgrade. I may move this project diary to a blog or facebook (vomit) or something. Would be nice to get feedback, etc.

Thursday, October 21, 2010

The story thus far...

A few months back, I discovered Microsoft's XNA, which is a programming framework which sits on top of DirectX and .NET to facilitate the writing of games for both Windows and the XBox360. Let me just say that M$ is hereby forgiven for all past and future sins for releasing XNA (so long as they continue to support and update it). I am using XNA 3.1, at time of writing XNA4.0 is the latest, but that is geared towards Windows Phone 7.

I first started working on a 3rd person version of Wolf3D, using the same maps, textures, etc, just to learn XNA and model making, etc. It got so far along, I simply had to convert it away from iD's IP, and make a releasable game out of it.
DEMII is a single player, third person, old school dungeon crawler/shooter.
I started the project on 1-Oct-10. With the view to having a playable game by the end of Oct-10, and a releasable one by the end of Nov-10. I am hoping to release through XBoxLive-IndieGames and/or Steam. Both have a bit of an approval process. XBLIG is peer reviewed and practicaly everything gets through (there's a bunch of "games" that just turn the controller into a vibrator, FFS). Steam, on the other hand, is privatly reviewed my Steam and approval is based on quality. There are a few XNA games already out on Steam, so I am hopefull. Anyways, I have to write the bloody thing first :)
So far, I have coded:

  • 3rd person camera. I have controls to reposition until I get confortable with where I want it.
  • Map editor. Made this using VB.NET. Which is VB in name only, IMO, as most of the "good stuff" of VB1-6 has been dropped. I had to bodge control arrays which ate up some time. grrr....
  • XBox360 Controlls. Had a heck of a time trying to buy a wired controller, so I could use it with Windows :)
  • Player Movement
  • Mesh rotation. Both from map and auto rotation for objects that can be picked up.
I have only made basic models, so far, as I don't want too get bogged down in the graphics. I want to have a playable game, and then worry out the art side of things. Animation, however will be a pressing issue as XNA doesn't natively support mesh animation. there is a framework library available, but I haven't been successfull in using it. I may have to write my own.
I am using strictly nothing but freeware tools : XNAVisual Studio 2008 - Express Edition (I know 2010 is available, but XNA doesnt intigrate into 2010, yet), Deled3D CE (awesome freeware Model editor...although the UV Editor is fail and the .X exporter doesn't export animations. Yes, I am aware of Blender, but the learing curve on that is incredible!), and LithUnwrap (an excelent UV Editor).
The game itself will be aimed at younger players. More Mario64/Zelda, than GTA. Which allows for more fun/humor than realism.
DEMII is a young girl, who wakes up in a lab, with no memory of who or what she is (as she gets her memory wiped every night). She is taken through various "test" rooms. In which, she learns to use her powers to solve puzzles. I have modelled her powers off a combination of the elemental powers and the abilities of the old classic DungeonMaster (Ninja=throwing, Wizard=Magic, Priest=Healing, Fighter=Melee) and the Jedi powers in JediKnight:JediAcademy. At this point, her powers are...
  • Fire = Shoot fireballs. Weak, but ranged.
  • Air = Push and pull things.
  • Ice = Freeze things.
  • Metal = Melee. Short range, but big damage.
Fire, air and ice will be charged by crystals. Metal will be unlimited. It is set in modern day, and DEMII's ultimate goal is to escape the labs, solve the problems of the islanders who live on the same island as the lab, and then defeat the mad scientist who built her.