RSS
 

Archive for August, 2011

SurgeED

30 Aug

Worked a bit on my editor, fixed some bugs, improved some others…

Main improvement was a bug fix on the shadowmaps for point lights… everything that was behind the light (used the “back” shadowmap – using dual paraboloid shadows here) was being rendered wrong, depending on light orientation (that shouldn’t affect point lights).

Good shadows on point (and hemisphere) lights still depend a lot on the tessellation of the scene (due to the dual paraboloid projection)… I’ll probably add the option for cube-map based shadowmaps, they might be better (albeit way more expensive) for specific cases. The cost might be offset with better batching of solid geometry (create a bunch of vertex buffers with just positions, which is all is needed for shadowmaps), shadow-atlas (eliminate render target switches, but need more complex shader code and the “border” ability on the texel-sample – win the ability of batching shadow-mapped lights and less texture source set-operations) and slower updates on the shadowmaps (update only every 2nd frame or something like that).

The video quality is crap, and the mouse cursor isn’t visible… I was using SnagIt 8 to do the capture, with a DivX codec and 30 FPS capture, but the results were terrible… Hopefully I’ll figure out a better way to do these captures in the future…

 
 

GUI stuff…

29 Aug

I’ve been working on and off on “Amoeba”, mainly focusing on the GUI work (area selection, level selection, etc), and it has been a struggle:

gui_work

First, the “simple” problems: font aliasing was hard to get rid of (and its not completely solved, but on my Android phone you can’t see any major artifacts, specially if you aren’t looking for them).

Then the complex problems: different screen resolutions/orientations. I want “Amoeba” to work on all devices I can possibly put it on, and that means different resolutions and orientations. We got 480×800, 1024×768, 640×960 and many more… And these means different aspect ratios, which just add more confusion to the problem.

The game itself is easy to adjust to the resolution (I have a virtual resolution system coupled with some “margins” disguised with some GUI elements), but if I do the same on the GUI, it looks amateurish, and that’s a definitely no-no on indy game development…

I could program a kind of interchangeable file with the positions of the elements (or use structures in C++, whatever), but even that is hard to tweak, because of dynamic scaling, and I have to consider ALL the possible resolutions. But this might be a solution in the future; I’ve already decided that all my next mobile games will only support one orientation anyway, since it’s too much work supporting multiple ones…

So, getting the GUI working on different resolutions/orientations/aspect ratios has been a though fight… and it’s only half the battle…

Then we have the code problem, where we hook behaviors… what happens when I left click and drag the mouse (equivalent to taping the screen and dragging my finger on it)? What’s the reaction…

On this project, I initially had all the code in C++ in the animation loop of the screen, but it was becoming unmanageable. Every change implied going through loads of conditions to get to the right place, and half the time I’d just get it wrong anyway… Confused smile I decided to scrap that and go for scripted GUI. While it’s not much better, it’s easier to control a GUI with LUA co-routines, specially transitions between “pages” of GUI. It’s still not optimal, but a bit better…

Working on this (and on my previous experiences with GUI elements), I got thinking… I hate GUI work, but mainly because it seems to be much less organic than the rest of my code (at least the end result). Why is that?

One reason I can think of is that “I HATE GUI WORK”, so I do sloppier code to try to get it over with… the other possible reason is lack of planning of the GUI and its elements. Finally, the lack of a really defined GUI framework on Spellbook might hinder me aswell…

Basically, I see 7 different ways of creating a GUI/GUI logic:

  1. All GUI elements on a particular game are a separate C++ object that can handle itself. This was the approach I used on “Blitz and Massive” and it worked very well, from a code organization point of view. This was further facilitated due to the fact that most of the “end result” of the GUI actions were script calls.
  2. We have a generalized object system (with sprites, text, aggregate objects, etc) and we instance it in C++. Control is done by using the animation pump that reacts to specific events. This results in long, hard-to-manage code, and loads of “temporary” variables to handle the state of the system.
  3. Same as last, but using scripting to instance the objects and registering events. Events trigger script calls that change the system. The “temporary” variables are more contained and can be handled locally by the scripting. Problem is that a language like Lua has great facilities for co-routines (superior to all languages I’ve ever seen!), but it’s terrible for flow control (because of syntax… seriously, on the 21st century, someone still requires the “THEN” keywork for an “IF” clause!?!?)
  4. Same as 2), but use a more sophisticated event system for the event handling, instead of the animation pump.
  5. Use a GUI middleware (from native stuff like Win32 or iOS stuff (not cross-platform), to more “game-like” alternatives like Scaleform (expensive) or “web-like” like Webkit/Awesomium (I hate web-technologies and don’t want to have 2 scripting languages involved in a single project)).
  6. Roll your own GUI middleware (a giant enterprise by itself!)
  7. Hire a gnome to do it!

 

I see pros and cons in all of these, but I think that most of my problems can be addressed with taking the time to think about the GUI, to plan it appropriately, like I do with the rest of the game components…In the meantime…. I REALLY HATE GUI WORK!

 
 

VVVVVVV

27 Aug

vvvvvv

VVVVVV is a game developed by Terry Cavanagh that has caused quite a buzz in the indie game scene… Unfortunately, I didn’t pick it up right away when the buzz started, since I was put off by the retro graphics (I like retro graphics, but those just look ugly!). Only when it hit the Humble Indy Bundle 3 I finally gave it a try, and boy, was I missing out!

At first glance, VVVVVV is a standard platform game with a gimmick: instead of the usual jump action, you can reverse the gravity of the screen, making your character shoot out in the air and walk on ceilings… Although this looks like pretty simple stuff, it really adds a differentiation factor to the game. That, coupled by an exploration component really makes the game shine.

The level design is brilliant, with very challenging areas… when you die, you just restart in that room, so frustration is kept to a minimum.

The story is as straightforward as possible: a ship gets thrown into a strange dimension (the VVVVVV dimension) and the crew gets split. The captain has to go rescue them… Throughout the game you get clues on what the dimension is all about. What the game does right is to make you empathize with the characters, even such so crudely drawn and distinguishable only by color, by using simple texts and making you work hard to get access to them…

The game ends when you rescue all 6 members of the crew (I did it in 2h30, dying “just” 1400 times, but I’m not very good at platformers).

VVVVVV does a minimum of hand-holding and it’s quite merciless in some rooms, but even rooms where I got stuck for 10 mins seemed to be “fair”, i.e. the challenge wasn’t overcome because the game was being too hard, but because you suck! Smile

Seriously, this game deserves all the praise I’ve been reading about it in the last months, specially considering how cheap it is! Even the graphics, which at first glance seem really ugly kind of it with the overall theme, and I ended up appreciating the simple color schemes and forms…

This game is a 10/10!

 
No Comments

Posted in Games

 

Guild Wars trailer

25 Aug

 

Although I’m not a big fan of “Guild Wars”, this trailer (at least the first part) is amazing… the music is absolutely brilliant, and the special transition effects just put me in the mood for some epic-ness… Brilliant work…

I’m wondering if you can do something similar to the transition effects in the first part of the trailer with realtime 3d graphics and some nice juicy shaders… You could go around it by creating a “stroke map”, by analyzing the direction of the surfaces you render and use that as a basis for a “paint stroke” effect that would fill the screen with the painted scene. To do the depth effects, you could “clamp” the Z of the objects to specific depths before transforming them to screen space, doing “layers” of an ortho-perspective… I’d love to have the time to experiment around with this…

 
No Comments

Posted in Games

 

Dropping out…

20 Aug

I’m dropping out of the compo…

I’ve been tired like a dog, and not feeling very motivated with this game (although I have an idea and progress has been good)… Some ideas just don’t click like they should when it’s time to develop them… Confused smile

Anyway, good luck everyone that is still participating!

On Monday it’s back to work for me, so expect more regular updates on the blog!

 
No Comments

Posted in Games

 

36h31m to go…

20 Aug

Finished most of the art for the starting area, the bedroom… It is supposed to be a night scene, hence the blue hue… I’ve screwed up on that already, since I want to make a light spark cast glow on the scene, and it will all show blue (should have done stuff in their “normal” color, and let the lighting engine take care of the blue-fication…). I may fix that before the end, but I’ve lost enough time on this, with 3d props, etc… specially considering this is just for a cutscene…

screen02

Next step is adding the scripting system to this, so that I can start coding the cutscene proper and get some gameplay in…

  • Load level
  • Get Lua scripting working
  • Draw main character
  • Character display
  • Character movement working
  • Draw area tiles
    • Bedroom
    • Corridor
    • Forest
  • Game mechanics:
    • Follow mechanic
    • Reversed keys
    • Perpetual movement
    • “Just jump” mechanic
    • Darkness
    • Random teleport
  • Cutscene system
  • Initial cutscene
  • Text render
 
No Comments

Posted in Games

 

38h08m to go…

20 Aug

Got the level loading working (placeholder tiles) from an XML file:

screen01

Also designed the main character:

main_character

Imba pixel art skills… Smile

I still have no idea on what to do on the environment front, from an art standpoint… Don’t want to do the usual “dungeon” theme I do on this kind of thing, but my graphic skills don’t go much further than that…  but I have to try, since I wanted the game to start in the heroine’s bedroom…

  • Load level
  • Get Lua scripting working
  • Draw main character
  • Character display
  • Character movement working
  • Draw area tiles
    • Bedroom
    • Corridor
    • Forest
  • Game mechanics:
    • Follow mechanic
    • Reversed keys
    • Perpetual movement
    • “Just jump” mechanic
    • Darkness
    • Random teleport
  • Cutscene system
  • Initial cutscene
  • Text render
 
No Comments

Posted in Games

 

39h26m to go…

20 Aug

Got an idea for the game… You’re a girl trying to escape the nightmares in your mind… Each level has a different gameplay mechanic, like inverted keys, or having to follow something, and hopefully a surprise ending (which I still don’t know what it will be!).

Want to have time to work hard on the cutscenes, general ambience and level design, so I need to do good progress in the beginning.

Task list:

  • Load level
  • Get Lua scripting working
  • Draw main character
  • Character movement working
  • Draw area tiles
  • Game mechanics:
    • Follow mechanic
    • Reversed keys
    • Perpetual movement
    • “Just jump” mechanic
    • Darkness
    • Random teleport
  • Initial cutscene
 
No Comments

Posted in Games

 

Starting up…

20 Aug

Theme is “Escape”, hum? Didn’t see that one coming… Smile

Already have an idea, involving some insanity (escaping your own mind) and whatnot…

Anyway, time to check out the blog, eat breakfast and start cranking some code!

Good luck everyone!

Ah, obligatory deskphoto:

desk

 

Vacations and Ludum Dare

19 Aug

Back from my vacations, all over Portugal… Well deserved, I might add! Open-mouthed smile

Anyway, what better way to finish vacations that with a Ludum Dare 48-hour game development competition?!

I’ll be cross-posting the progress on my game throughout the competition, so stay tuned!

Anyway, I’m using the same framework as last time, done by me, just added a 3d tilemap system (doesn’t have any type of querying yet, just rendering at the moment, I’ll add the rest during the competition, according to needs).

You can download the framework here, if you want to use it (it has two sample applications that show most if not all the features):

  • D3D9 initialization and some helpers
  • FMOD interface for sound
  • 2d Sprites (with sprite caching, etc)
  • 2d Particle System
  • Text
  • 3ds file loading (only tested with 3ds generated by 3d Studio Max). Loads lights, meshes and cameras.
  • Small simple math library (vectors and quaternions)
  • Simple 3d camera handling system (just with a “look at” operation)
  • XML loading/saving (might come in handy for configuration files, load/saves, etc. The XML loader was created by Frank Berghen, not me… the writer is all me, although the loader also has save functions, but I’m too lazy to figure out how they work)
  • 3d particle system (based on the 2d one, so very rudimentary)
  • 3d sprite system (quads that always face the camera)
  • LUA library support (it’s actually ripped from my engine, so it’s a good support system for LUA)… Last time I used cutscenes and scripting, and loads of the game code was much simpler because of that…
  • DDS image loading for an offscreen buffer (just supports R8G8B8A8 images). Might be useful for some level design stuff, although I’ll probably go back to my old days of text files
  • 3d Tilemap (Kind of a blocky heightmap with an automatic texture atlas generation and partition of the map in chunks for possible culling (not implemented))

 

On the tools side:

  • Visual Studio 2005 (hope I can get used to it again, been using 2010 at work)
  • Photoshop CS5 (for 2d graphics and textures if I decide to adventure into 3d, and for map creation, etc)
  • 3d Studio Max (for modelling if I go 3d, or for title screens and such otherwise)
  • sfxr (or Bfxr) (for audio effects)
  • Wolfram Tones (for the music creation – fun tool, saves loads of time) and MIDI Converter Free (to convert the MIDI generated by Wolfram Tones to OGG)
  • Live Writer for blogging

 

About the themes, I have a gut feeling that “Dreams” is going to win, although I don’t have any ideas for that… or any of the others, to be honest, since the times in the past when I tried to think of an idea for all the themes it didn’t work that well… Smile

Anyway, very excited about this all!

Good luck if you’re participating (and you totally should, it’s great fun!)

 
No Comments

Posted in Games