Showing posts with label Completed. Show all posts
Showing posts with label Completed. Show all posts

Tuesday, January 19, 2010

Caged

Caged is a RPG game written by me and my team* in our first year (2007) at the university. The game development was difficult as hell, and fun as hell as well. I learnt to design the architecture and lead a team, while teaching the team to code. One of the most rewarding experiences in my life.

CagedMenu CagedGame

The game is written C++, using SDL and TinyXML as only support libraries. We worked on the Dev-C++ IDE and SVN. It has 20+ game levels.

Features

  • A scripting engine which feeds cut-scenes and dialogues from XML
  • A sound engine based of SDL_mixer
  • AI for the bots, with path finding, decision making and message system.
  • Core, with entity manager, event system, clocks and timers, log system, resource manager, FSM…
  • Physics with collision detection and some neat force driven steering behaviors.
  • Graphics. SDL isn't meant to be used as a Gfx engine, so the camera,  the GUI, and so on was also fun to make.
  • Integrated game editor, to make all the xml maps for the game.
  • Life-saver debug mode xD

CagedEditro CagedDebug

In the end, one year and 200k lines of code later, the game was completed. It won 2nd place in two different contests, “tu tambien puedes” and “CDV 2008”.

Just wanted to share my first game with the world :) Game SVN here and direct download here.

Team*

Programming
  • Jaime (Ying) Barrachina
  • Victor (CyanCrey) Villanueva
  • Maria (Chuel) Cabezuelo
  • Catalin (K_ta) Costin
  • David (Coper) Garcia
Art

(You know who you are ;) )

  • Jusep
  • Alberto
  • Kiwi
  • Yuna (Script writer)
Special thanks
  • Javier (NeoM) Belenguer (Our life saver, really)
  • Wynter (Zerotri) Woods

Wednesday, June 10, 2009

Game - Phagocitosis


Phagocitosis is a 1 week, simple, small puzzle game I created some months back.

It was developed in ActionScript with Adobe Flash CS4, using the KeyObject library as the only external help. A friend proposed the subject and I couldn't resist the challenge of coding a game and learning a new IDE and language at the same time, so here's how I went about it.


Design:
The Game Design was informal and written in miscellaneous pieces of paper, napkins, and the back of envelopes. It was mainly done by my buddy Undi. It took several months of sporadic work to get the general idea working.

Once the game design was over with, the Investigation and Technical Design phases began, in parallel. As it happens with new technologies, you can't design the technical aspect until you know how they work, and you can't know what you need to investigate until you know what you need.
The result of that phase was this Technical Design Document (TDD), (well, actually a draft, it was a quick development so it didn't need detail) specked with investigation notes, and this list of references:
Also, some interesting book titles:
  • Game Development With ActionScript
  • Essential ActionScript 3.0

Development:
The very first thing you come to realize when jumping into the Flash bandwagon is that there's ActionScript 2.0 and ActionScript 3.0 and that alone can shoot everything to hell.
I chose AS 3.0 on the grounds that, tough it might have a smaller support base, for learning purposes it's always a good idea to go for the next thing, as technologies outdate incredibly fast in this field.

After a few false starts, getting Adobe Flash working and setting up a SVN got me ready to start coding.

The game was built based on 3 things, the scenario, the player (a slimy Amoeba) and the enemy (a simple hole, if you fell in, you died).

The scenario was set up as a series of keyframes in the main timeline of Adobe Flash, with each keyframe having an associated Enter, Execute and Exit functions, creating a Finite State Machine to provide for all the screens of the scenario.
Scenes:
  • Menu
  • Scene Selection
  • Play
  • Pause
  • Game Over
  • Game Won
And you can guess what each one represents ;)

Each scene had it's own challenges, but the 2 biggest ones were:
Making buttons: 5 out of the 6 Scenes needed buttons, and those introduced me to the world of callbacks in AS, coupled with event handling and corresponding objects from the IDE to code entities.
The map: I wanted to have a easy way to create new levels and add them, and as I was using mappy to generate xml files of the levels, it stood to reason I had to have a in-game xml interpreter that also had access to the tilemaps and rendered the complete map. Now that was fun.

And everywhere, I had to take out my magical photoshop and produce crappy graphic after crappy graphic to fill my scene. I tried for a simple animation of the Amoeba and failed dramatically, after which I gave up and focused on static gfx.

The Amoeba and the Hole:
Each of these elements had to move around the map without charging trough walls. The pixel perfect collision detection was a real bugger, even tough the game only has 4 directions available.

The Amoeba was player controlled, so it needed a bit of input-handling magic, which had me fighting key input for more than a few hours.
The Hole on the other hand, was AI driven, and it uses a special pathfinding approximation algorithm based on it's relative position to the amoeba, instead of going for a full pathfinding with Dijkstra or A*. Not too surprisingly, this hack, apart from making the game run MUCH faster, made it more fun, as you could bait the hole to come out of certain areas instead of just waiting for it to chase you.

Game Play and Map-Making:
Final logic was added, specifically:
  • Collision between Hole and Amoeba results on player death
  • Collision between player and Objective results on loading next map
  • Map loading and changing
  • Game Over and Game Win
  • Select scene (start the game from a specific map)
Map after map was produced (special thanks to my brother there) each with different challenges, and tweaked to make them have a smooth difficulty curve (tough different players disagree on that one).

The End:
Final touches where made on the last wee hours of the morning in the last day of the development week, and a html file created for quick play without having to payload it to a server.

The game can be found at the SVN, along with all the code. Or if you prefer, a direct download.

Enjoy!