RSS
 

Archive for the ‘Games’ Category

Ambient Occlusion Maps

10 Feb

I’m back to rendering pipeline for our current project… this time: Ambient Occlusion Maps.

Ambient occlusion is the small dimming of ambient light in areas where the ambient light couldn’t reach…

Basically, ambient light exists to simulate the effect of trillions of photons bouncing off the objects in an area, so in fact, simulating indirect light. Note as a room is not completely dark in areas not illuminated directly by the window… that’s due to surface reflection.

While to do this normally in realtime you’d have to resort to high-end and extremely complex techniques (i.e. CryEngine 3 has something akin to this), you have three low cost alternatives:

  1. Radiosity computed lightmaps
  2. Pre-calculated ambient occlusion maps
  3. Screen-space ambient occlusion algorithms

While (1) is out of the question at the moment (because the interaction of lightmaped environments with dynamic objects is too complicated to get right), (2) and (3) can be used.

Problem with (3) is that I really only like their effect in Crysis… I’ve tried lots of different flavors of Screen Space Ambient Occlusion (SSAO) before, but results where never to my liking:

abstract_ssao02

azenha_ssao02

Although some of the things that were wrong could probably be tweaked out, I’m very strongly against tweaking stuff (my development time is very short, since I have a job and stuff)…

So that leaves me with (2)…

So I used the lightmap calculator to create some ambient occlusion maps that will be used in the realtime render of the scene.

First, I just tried visualizing the points corresponding to the lumels:

01_lumel_point

They didn’t seem very right at the time, but I thought it was because of my UV being wacky… Then I did some experiments with simple raycasting and the results were average (no screenshot, I forgot to take one!)… I decided I needed to use multi-sampling to achieve decent results. This is where everything went wrong… I did a first iteration of the rectangle in the lumels area using the gradients of the rasterizer, and these were the results:

02_lumel_area_incorrect

While some of it seems to be more or less right, most is totally wrong… I was expecting the rectangles to encompass a whole lumel, but they weren’t… After some hours of pulling hair, I decided to rebuild my rasterizer, thinking the problem was there… it wasn’t… 🙁

Anyway, after some attempts, I decided to ask for help in the GD-Algorithms Mailing List, and as usual, people came through… Thanks to the help of several people, specially Olivier Galibert, I managed to change my rasterizer and ambient occlusion map generator to barycentric coordinates, which fixed the problems:

03_lumel_area_correct

On a triangle barycentric coordinates are a pair (U,V) such that if (U+V<=1), then P(U,V)=V0+V1*U+V2*V belongs to the triangle.

So, the triangle (and all his properties) are defined through the use of just (U,V) coordinates, which makes everything easier and more precise. Instead of just trying to find spans and filling in the insides with interpolated values, I actually just interpolated the U and V along the triangle edges, and used those values to find all the properties, achieving with this the result above.

There’s still some imperfections on the edge cases, but that’s to be expected, since the triangles edges don’t exactly match the pixel boundaries, but most of it can be taken care with a “bleeding” of the resulting ambient occlusion map.

After I got this right, was just a matter of implementing the raycasting proper…

04_base_ambient_occlusion

I like seeing the blocky ambient occlusion… In the above case, we only have about 16 rays per lumel.

04_ray_casting

Without multisampling, we only cast rays from the upper-left corner of the lumel (in this case it seems to be reversed, but that’ because the UV space is “reversed” in the U direction on that lumel)… Adding multi-sampling:

05_multisampling

We get a more uniform spread… the quality improvement doesn’t show much with this amount of rays, but with loads of them, at the “edges” of the “shadows” of objects, they definitely show.

With 1024 raycast per lumel, on a 128×128 ambient occlusion map used by the whole scene:

06_ray_casts_1024_point_sampling

Sampling is set to point, so I can see the lumels properly. Note that there are some artifacts on the top of the box on the left… that’s due to the rasterizer not going “all the way” to the edge… this is solved through bleeding of the texture.

On a larger scene (with some rooms, etc), with 256×256 ambient occlusion maps, 1024 rays per lumel, half-lumel per unit resolution, this was the result.

07_large_scene_256_half_lumel_per_unit_1024_rays

There’s no light sources in the scene, only ambient light, and still point sampling for testing purposes… it looks ugly, but there’s already some feeling of space to it… Turning on linear sampling, increasing the resolution to 1024×1024 and going to 256 rays per lumel:

08_large_scene_1024_half_lumel_per_unit_256_rays

Results are a bit noisy, but they’re already very good for the intended purposes… Adding rays to the scene would get rid of the noise (I think, haven’t tried), but with the additional “noise” of the textures, normal maps and direct lighting, I doubt it shows in a real game situation.

There’s good details on this solution:

09_large_scene_detail_door

10_large_scene_detail_ceiling

I like this one in particular… The wall doesn’t touch the ceiling (hacked scene, this is what you get), but the ambient occlusion really fleshes out the volume.

I’ve added some code to use multi-processors (since this is software only rasterization and calculation) to speed up the generation of the scene, and the raycasting isn’t as good as it should at the moment (probably will build an octree with all the geometry and use it for raycasting). This scene takes about 4 minutes to compute (resulting in 3 1024×1024 ambient occlusion maps), but hopefully I’ll be able to chop that time down…

My next step is really exporting the generated scene (I’m lazy and haven’t done that part of the code yet, the test application computes and displays the solution), and trying this with a “real” scene (which I’m waiting for my artist to finish, he’s been having some troubles getting some “walls” and “ceilings” he actually likes.

After that, next stop is trying this with direct lighting… I’ve added “soft-shadows” to my dynamic shadowmaps, and they will really help the scene, although they need loads of samples (16) to actually look good… Anyway, I’m hoping that combining the ambient occlusion, the soft-shadows, and playing around with the update times of the shadow maps, I can have a fully dynamic lighted environment that requires little tweaking and is fast enough to work with in the game…

Until next time, cya guys!

 
 

Lightmap work…

31 Jan

Well, after three days of work, I finally have a working lightmap renderer… I’m not very happy with the results, to be honest, but there’s still some places for improvement… to go further, I need a real example to work with, with some moving characters to see how enabling/disabling lights will work and the effect of having a priority queue for the light updates (so I can have stuff that only updates once every four or five frames)… more on this below…

Anyway, as I said in my previous post, I’m using the UV-unwraper that comes with D3DX, since this is just for a preprocess tool… the results are quite nice, but I had to tweak it a bit…

01_InitialScene

This was my first test scene, renderer without shadowmaps in my normal deferred renderer… There’s only diffuse color maps in the objects.

02_FirstIteration

This is the first iteration of the lightmap (rendered in 6 seconds in debug mode, a single 256×256 map).

03_EdgeArtifact

A closer look shows some edge artifacts… This got solved by simply doing a "bleed" effect on the generated lightmap.

04_BleedTexture

The black spots in the bottom of the pyramid are due to sampling artifacts (since it’s at the same height as the plane, so it intersects). This can be solved through multisampling (on my wish list).

05_Discontinuities

Here I had a big error (didn’t take a screenshot), where the orange and the yellow would fight, since that edge was shared in the lightmap. Fixing this was just a matter of tweaking the UV generation so that that edge wouldn’t be shared; so I added code that took in consideration that triangles whose normals differed more than 30 degrees wouldn’t be considered adjacent, and the results were good.

06_DynamicAndStaticLights

Mixing static and dynamic lights worked well. The red shadow cast by the red block is the result of a light circling the scene. Note that the edges are much more defined.

07_AlphaMaps

Adding the stained-window effect was pretty easy with the current system, and I love it, to be honest… 🙂

08_NormalMaps

Adding normal mapping was also pretty easy, but problems become evident when we zoom in:

08_NormalMaps_LowRes

The lack of resolution of the lightmap shows pretty obviously… I think this can be solved through multisampling, or just doing a better sampling of the normal map to consider the resolution… But it’s pretty obvious that normal maps won’t work well in lightmaps, since lightmaps are good for low-frequency lighting, and normal maps add high-frequency data to it… There’s other solutions for this, like what Valve did in the Source engine: http://www2.ati.com/developer/gdc/D3DTutorial10_Half-Life2_Shading.pdf

This considers the direction in which light is coming and applies normal mapping in runtime on top of the lightmapping, which improves quite considerably the results, besides enabling us to use specular highlights aswell. Still need to think if this is worth implementing, since I’m not sure about lightmaps anyway… Since I have my own renderer, I can change it suit me…

09_DynamicObjects

The worst problems came with the dynamic objects… Casting shadows on dynamic objects is simple enough, just use the standard shadowmap technique… Problem is that dynamic objects cast shadows on static (lightmapped) objects, and this is where things become complicated…

The way I solved it was by rendering the static lights three times… First time is the generic lightmap pass, in which all static objects are rendered, and a stencil mask is created. 0 on the stencil buffer means that pixel comes from a dynamic object, 1 means its from a static object.

Second time it’s for the dynamic objects (stencil buffer=0), and the results are as expected (both the static objects and the dynamic objects cast shadow on the dynamic objects).

Third time it’s for the static objects (stencil buffer=1), and it requires a subtractive pass… Basically, for each pixel of static objects, I compute the light that would reach that point, check if the point is being shadowed and subtract that light from what’s in the render buffer. Problem with this approach is that the lightmapped shadows will be twice as dark, since they’re already present in the shadowmap and the value will be subtracted.

To fix this, I had to find a trick, which almost does it… Basically, when rendering the shadowmap, I render the pixels in the [0..1] range if the object is static, and in the [1..2] range if the object is dynamic. Then, when I’m computing the subtraction, I only account for the dynamic objects (since the shadows cast by static objects are already accounted for in the lightmap). As I said, this almost works, with two caveats:

10_DynamicObjects_Artifact01

In this screenshot, you can see the "ragged edge" between the static-cast shadow of the block, and the dynamic-cast shadow of the skinned cylinder… This is due to the resolution of the shadow map, and it’s extremely hard to get rid of, without raising the shadowmap’s resolution to proibitive values… I think we might be able to solve this by multi-sampling the shadowmap, but that would required more cycles, and for the game we’re working on, I don’t think these small mistakes will matter…

A slightly worse problem:

11_DynamicObjects_Artifact02

The shadow from the cylinder in this case subtracts light to the block-cast shadow, which shouldn’t happen… This is due to the fact that the computed shadowmap only "sees" the cylinder, and the block behind, so the system doesn’t know that the block is also casting a shadow at that pixel… I can think of a couple of ways to solve this (two different shadowmaps for static and dynamic objects, for example), but most of them just consume more GPU/memory/etc, and for a small gain…

Finally, the biggest problem: due to the limited precision of the render buffer (8-bit per channel), if we have multiple lights illuminating a place and casting a shadow on that place, the shadows will become darker than they should… Reason for this is the following:

Imagine 2 lights, illuminating a certain pixel… Light A casts 80% light, light B casts 60% light… Summed together, this is 140% light, which gets clamped on the buffer to 100%. Then, we want a dynamic object casting a shadow on that spot (because it blocks light B). Because of the current algorithm, light B is subtracted to the frame buffer, which makes the intensity there go to 40%, instead of the 80% it should…

This could be fixed with HDR buffers (which wouldn’t be so hard to add), but by this time I’m under the feeling that I’m just fixing one problem after another, without having a complete lighting solution, or worst, having a complete lighting solution that requires too much tweaking…

So now I’m thinking that I may ditch all of this and go for a full dynamic lighted system. Of course, I can’t have 100 lights casting shadows, etc, but I think I can reduce this substantially by making lights that aren’t near the player use less resolution and updating less frequently, and go around interpolating the lights to get the correct results… Now I just need a working scenario so I can see the impact of this, with some characters moving around and some real geometry to check perfomance…

Anyway, this isn’t a complete lost… worst case scenario, I’ll be able to use this system to create ambient occlusion maps to get a bit more realistic look without having to resort to SSAO (which I only liked in Crysis)…

Unfortunately, for the next foreseeable days, I’ll be busy with hard work stuff, which means no energy in my free time to work this…

Stay tuned for more adventures with lighting pipelines! 🙂

 
 

The Quest for Lightmaps

25 Jan

Finally some of the work insanity has died down, and as so I can go back to do some cool stuff on my spare time again…

After the basis of the renderer for our next project is done, I still feel there’s loads of stuff to be done in the environment lighting… since it is unfeasible to have shadowmaps in all visible lights (still have to determine a good algorithm to select lights to be shadowmapped in real time),I’ve decided to add lightmaps to the environment, and in the process (since it’s easy to add), also add pre-rendered ambient occlusion maps.

I’ve worked on lightmap generators in the past.

First of my experiments were with direct lighting lightmaps, which only account for the light that shines directly in objects. I built my own UV-map generator, which didn’t work that badly, but it was slow and some of the results were terrible… The advantage of that renderer was that I could add stained-window effects (through alpha maps) and other nifty effects to the resulting lightmap…

Some pictures of the obtained results (over 3 years ago):

lightmap_only_direct

Two sources of light, one red and one white, no textures.

multi_light_textured

Same as above, but textured, which makes everything look infinitely better, since it disguises the imperfections of the limited resolution of the shadowmap.

lightmap_alpha1An alpha object that blocks part of the light and tints it.

lightmap_alpha4

Again an alpha object, but with a textured alpha-map… The effect is quite nice.

Although the results I obtained with this were nice enough, I was never too happy with the UV-generation and the lack of soft-shadows, so a couple of years ago, I did some experiments with hardware-accelerated radiosity.

I replaced my UV-generator with the one that DirectX 3DX library has, and used the normal HW-accelerated radiosity algorithm (render scene from the point of view of the patch, average results, rinse and repeat).

While the results weren’t terrible, it demanded too much tweaking to get good results:

radiosity02_uv_work_no_iterations

The wall is an emissive light source.

radiosity07_render_iteration_06_075

After 6 iterations, the shadows become more “real” and you can see some color blending near the green “barrels”, which is pretty neat. The window is a glowing polygon, to simulate intense outside light.

radiosity08_render_iteration_06_075

Using a light that’s not white, and a spherical light source (with volume), that’s not visible from the whole room. After 6 iterations, the scene looks warmer, but it has too many artifacts on the floor (sampling artifacts), and in the near wall (because the wall was too close to the patch, it wouldn’t get drawn in the buffer, due to the near plane. This would lead to that silly illumination).

radiosity10_colored_floor_iteration01

Using a colored floor (at a much lower resolution that the previous tests), the scene again becomes warmer and indirectly lit.

radiosity12_normal_pass01

I supported normal maps in the rendering, and the result is quite nice, disguising some artifacts behind the more complex lighting.

I even did an application that would enable me to change the reflectivity parameters:

radiosity16

But it was too much work getting this to work properly, too many small tweaks and too much time to actually see results… This is when I abandoned this project and moved on to other stuff (I know, I lack focus sometimes).

Anyway, back to the present, I decided to pick this up again… For the current game, I think radiosity is overkill, but I intend to divide the generation of lightmaps in two parts, so I can replace the direct lighting for radiosity later:

  • Preprocessor
  • Lighting engine

Basically, the preprocessor will take care of all the tasks that are common to any lightmap processor:

  1. See what meshes are present in the scene
  2. Create UV-map per mesh (using as a metric for resolution the surface area of the mesh and an adjustable parameter)
  3. Create instances of objects that share the same mesh (effectively copying the mesh with the new UVs)
  4. Create an UV-atlas that aggregates UV-maps
  5. Load into RAM the textures used (diffuse map, alpha map, normal map, emissive, etc). This data needs to be in accessible memory since we’ll need to sample it
  6. Initialize the lighting engine (give it all the meshes, etc, so he can build acceleration structures for raycasts, etc)
  7. For all lumels in all the lightmaps, call the light evaluation function on the lighting engine. This will probably be called multiple times for each lumel, taking into account the possible area of the lumel, so that we get anti-aliasing and reduce the artifacts caused by edge conditions. These samples will be averaged (either by standard average or some kind of distribution).
  8. This last step will be repeated a certain ammount of times, depending on the instructions of the lighting engine.
  9. If requested, build ambient occlusion map, by requesting the lighting engine an ambient occlusion factor. This will also take in consideration the area of the lumel, like in step 7.
  10. Save lightmaps generated

The lighting engine for now will be a simple Direct Light system. I want to take in consideration the following things:

  1. Take into account diffuse, normal and emissive maps
  2. An octree will be generated with all the world geometry for faster raycasting
  3. Raycasting will take in account the possible intersection of alpha/tinted objects and do the correct coloring to account for that
  4. Ambient occlusion will be computed by raycasting in an hemisphere around the lumel being computed, and considering what amount of rays gets intersected.

This system should also consider multi-processor usage (for direct light at least, since the HW-accelerated radiosity can’t take advantage of multiple processors, since there’s just one GPU).

Most of this stuff I already know how to do, since I have in done in previous projects… the exception is the octree generation (I usually use loose octrees, so there’s loads of code for splitting triangles, etc, that has to be done), and the part where I consider the area of the lumel for smoothing the lightmap.

Rendering the lightmaps in the deferred rendering pipeline will require an additional passage, since I don’t have any space left on the G-Buffer for three components (RGB, since I want colored lightmaps), but that’s ok, since it will enable me to do fill up the stencil buffer to avoid drawing the static lights onto the static geometry again, while I still have the possibility of using the static lights on the dynamic geometry. This will also enable me to light the environment with dynamic lights (in static and dynamic geometry) without wasting too much performance. Adding the concept of light volumes to both types of lights will also be easier this way, since I can filter out what parts of the scene shouldn’t be affected. The ambient occlusion term can be stored with the ambient component already in the G-Buffer, so that shouldn’t have a big performance hit.

All the lights and geometry that are present in the input scene will be considered static… Bad part of this is that opening doors won’t have the dramatic/cool effect I would like, unless I use dynamic lights and shadowmaps at the correct circumstance.

Anyway, I’ll hopefully have something working by next week (hopefully in time for the Screenshot Saturday thingie which I enjoy seeing every week).

Ah, just recalled… why do my own lightmap generator, instead of using an existing (free) one? Well, I never found one that produced nice results while making the trouble of writing an importer/exporter wasn’t a nightmare, to be honest… I feel that this is the kind of thing that’s kind of linked with your pipeline and your own way of doing stuff… besides, this is fun code! 🙂

So, wish me luck!

 
 

Independent Game Festival 2011 – Part V

16 Dec

Just some final thoughts on the IGF…

I’ve been following the IGF for years now, and each year, games get better and more polished… Trends are pretty obvious, but not so much as to claim the indy movement is starting to be a seconds, low-budget mainstream.

Why are indy games becoming more polished? Well, you could say that now you have more money to make the games, since they’re real businesses, but I don’t think that’s true for the most part… One thing I feel that has changed are the tools: indies have access to better tools, and that leads to better games, since they don’t have to focus on what they can do so much and can twist the existing technologies and tools to conform to their vision. The other thing is that the indy community is strong and sharing, and that sharing of ideas leads to the strange notion of “more experienced devs out of the box”, in which even a person that’s never done a commercial game before can learn from the experience of everybody else and not start from scratch. Indy game portals are also becoming more widespread and better channels for distribution (Steam, XBLIG…), and the fact that we’re all more connected (through YouTube, Facebook, you name it), helps these games to get more awareness…

All in all, it’s a great time to be an indy, and I sure hope to jump on that bandwagon soon! 🙂

Games on the IGF have always been experimental in nature, but while there’s more “normal” games there, there’s also more experimental titles, that defy established concepts, stuff like “Hazard: The Journey of Life” or “Achron”… Sure, most of them won’t become commercial successes, and some of them are just experimental for the sake of experimentation, but they’re an extremely important part of the indy ecosystem (and even the mainstream environment, now that they’ve started paying attention).

I’ve seen loads of twists on old genres, like Spectre Spelunker Shrinks, which takes an established genre and changes or adds some game mechanic, and that just works…

Multiple platforms also seem to be the rage, with games getting releases in a series of devices (specially handhelds… lots of games are comming out for iPhone, iPad, Android and PC, for example), which is a very positive move; it makes for better software development processes and expands your target audience, which is extremely important in the indy market.

Finally, there are some timid (and not so timid) forays into multiplayer (and massive multiplayer); these used to be the bastion of the AAA-publishers, but now indies are starting to move in that space, not only in the project phase (which we’ve seen millions through the years, kids trying to make the next “super-awesome-MMORPG” with a one-man-team), but in the released phase, with examples of success (Minecraft anyone), and potential success (Infinite Blank).

All in all, the future’s looking bright for indy developers, and if the IGF is a window that shows us that future, we’ll have a whole new slew of awesome games to play!

I’ll take my leave now, but before I go, I’ll leave you with a nice video:

Those guys at Loading Ready Run are crazy… 😀

 
No Comments

Posted in Games, Indy

 

Cataclysm feed, Part III

13 Dec

Well, as you might have noticed, I’ve been having too much fun playing WoW to update my blog…

Since last Thursday, the 9th, I’m a proud level 85:

Since then, I’ve been doing instances (normal and heroic), trying to get my gear raid-ready… Also been levelling professions (already a maxed out alchemist, and almost maxed out tailor)…

This was a great expansion for the game, in my opinion… it had a bit of everything… Blizzard took the formula they started developing in Wrath of the Lich King and squeezed even more fun out of it… quests with cutscenes (ingame, of course), an easier system to learn but harder to master, and more immersiveness… And that’s the keyword in this last expansion: immersion…

What they’ve done is to give the player a sense of urgency (which actually doesn’t exist, you can take how long you want to finish quests), through good storytelling/writing, they made you belong in the world and actually feel you’re making a difference, even with 100000 people around you doing the exact same thing! This is very great achievement for a MMORPG, one that’s extremely hard to pull off…

Lots of people say that the game is more geared to casual players, but that’s wrong… it might have been partially true in WotLK, but Blizzard certainly didn’t go that route… while the game has become more accessible (which is different from casual), with a big quest helper, marked quests on the map, etc, the dungeon difficulty (particularly the heroics) has been cranked up to the extreme… while in WotLK, even from the start you could just AoE all enemies in sight and still survive, Cataclysm demands players to use they’re classes’ abilities to the maximum, having to resort to crowd-control (which I haven’t used since The Burning Crusade, to be honest) and other less-used skills and spells…

The game has become more tactic in nature, demanding players to adjust from fight to fight, which in my opinion is better, less-casual.

The game still is a lot of fun for newcommers (the Worgen and Goblin zones seem to be ace, as the Gnome and Troll), but demands more of the more dedicated players, giving much less than WotLK for free, demanding effort to actually get good gear… Finally, epics are really epics, not just some stuff you pickup in any instance in the game…

Now, it’s back to work… those monsters aren’t going to kill themselves! 🙂

 

Independent Game Festival 2011 – Part IV

09 Dec

Hi again!

When you’re reading this, I’ll probably be playing “Cataclysm”, getting my awesome mage to level 85 and raid ready! 🙂

Anyway, I’ve prepared this beforehand, and I probably posted on that before this goes online.

So, let’s get down to it: the last part of my IGF2011 showcase… I’ll still do a wrapup post aswell, with some last impressions on this IGF…

Nimbus

According to the creator, “Nimbus” is an open ended puzzle-racing game. The player controls a ship that doesn’t propel itself, instead relying on the stuff on the levels to increase it’s speed (and mainly to go up).

“Nimbus” has already been released (through Steam), and seems like a fun game… unfortunately, haven’t had the time to play it yet, but I’ll be sure to take my turn at it!
 

Overgrowth

Another known name in the indy community, “Overgrowth” is a game by Wolfire Games. Although I’m not a big fan of the game itself, their toolchain and marketing abilities are impecable and well worth taking a look into, to learn “how it’s done!”. The game features is a Rabbit on Rabbit action… Kung-Fu-wise, that is!

Proun

“Proun” is a racing game of sorts… the objective is to avoid the obstacles by rotating a sphere around the tube it is travelling on… Some stuff on the trailer is insane, and it looks great.

Q.U.B.E.

“Q.U.B.E.” is a game that kind of reminds me of “Portal”. It plays as a first person game in which the player has a glove that enables him to extrude or push blocks of the same color as the glove, and has to use that to solve puzzles and progress further into levels. Looks sweet!

Ray Ardent: Science Ninja

This one has the Silly Factor crank way up! Best way to explain it is that it’s like Cannabalt with more stuff in it… 🙂

Player has to control “Ray Ardent” in a scrolling environment, avoiding obstacles and bad guys without loosing pace… Simple, yet addictive, if it’s anything like Cannabalt.

Retro City Rampage

If Grand Theft Auto was done in the 80’s, this is what would come out… An open-ended sandbox-y game with 8-bit graphics (that look totally awesome). ’nuff said, I think!

Retro/Grade

This is one of the most original twists on a shoot’em up I’ve ever seen: you play the game backwards in time… This makes the game look more of a rythm game than a shooter, to be honest, but the result is impressive nevertheless… Basically, the player has to position himself at the correct position where he was when he fired his lasers… weird, hum?

In the video, it’s easier to understand, but I fear this mechanic might be too strange to get acceptance, since it involves a mental paradigm shift to accomodate for the time-is-backwards thing… The execution is also a bit weird, since there are lots of glowy things to confuse the player and misleed him to the wrong position. Still, it’s very impressive!

Shield the Beat

Another mix between a rythm game and a shoot’em up, in this one, the player has to use the analogue stick to control the shield’s position around the ship while changing the color of the shield to reflect the incomming bullets… This all in a “on-rails” shooter context…

It’s pretty neat and innovative, which is always good to see!

Snapshot

Another original one (seems I can’t use any other word to describe most games I’ve chosen for my IGF2011 overview)… In this platformer, the player can take “pictures” of areas of the screen and then move them around the play area to solve puzzles. It’s really weird and wonderful…

Spectre Spelunker Shrinks

Although it has a terrible name, the concept behind this platformer is quite nice: play with the characters’s size. Although plenty of games have done in the past (for example, “Legend of Zelda: The Minish Cap”), this is the first time I saw this mechanic applied to a platformer, and to such a good effect:

Spiral Knights

Co-op action RPG? I’m in! 🙂 Specially if it reminds me of “Darkstone” (an old game I really loved!). I’m curious on what the creator means by “clockwork world” that changes over time…

Strength of the Sword

This one is impressive for an indy game… top-notch graphics and animation, which is rare these days (animation being so expensive to produce, compared to the other parts of the tech/art). The gameplay seems to be a bit too “arena-based” for my taste, but each to his own, to be honest… “Heavenly Sword” was arena based and it was enjoyed by millions… 🙂

Swimming Under Clouds

Physics-based platformer… The awesome part is that it looks beautifull and includes fluid simulations, which is something I love… The weirdness of the main character (a fish in water travelling through a world) is just the strawberry on top of the cake!

Symon

This graphical adventure got me curious because of it’s procedural generated puzzles… I’m extremely curious on how this will work in practice, to be honest…

The Line

Looks good and seems to have an interesting gameplay going on… Just draw and erase lines to get the player character from one place to another. Another game that seems to be a good match for the iPhone.

Trainyard

Another interesting puzzle game, it seems to me this one will drive me insane (if it would come out for Android)… Just lead the trains from start to finish, avoiding collisions… seems simple, right? 🙂

Vizati

This is an interesting puzzler, and I wish it would come out on Android (since I don’t enjoy these games so much on PC as on that kind of devices, not sure why)… A puzzle game in which you shift the game world to move pieces together. It’s available for PC, iPhone, iPad and WindowsPhone 7 (an impressive feat by itself, with just one tech guy working on the game, in a short while).

So, that’s it… now back to levelling (well, technically not, since I posted this on Monday, but you get the general feeling!) 🙂

 
5 Comments

Posted in Games, Indy

 

Independent Game Festival 2011 – Part III

05 Dec

And I’m finally back… the main part of the project is done, now just some tests and bugfixing to go…

Besides that, I have Cataclysm comming out this week and I’m gonna play until my eyeballs drops, which means I have to prepare some posts to come online during this week… 🙂

So, without further delay, part 3 of my IGF2011 analysis!

Hasta la Muerte

This game caught my eye because of its unusual visuals and because of the simple gameplay… 6 basic game rules, then some polish…

In this game, you play as “Death”, which has to take the souls of the recently expired to the afterlife… take too long and they’ll transform into monsters that can hurt you… There’s more to it than this, but this is the short version…

An interesting twist of the “survival”-style game.

Hazard: The Journey of Life

This is a first person exploration game, with some puzzle solving. The game takes place in a non-euclidean space (which means that going “inside a room” can leave you in a bigger room than the outside), and supposedly an exploration of the journey through life… Can’t speak for that myself, since I’ve seen only the video, but it’s an interesting concept which can lead to some nice gameplay.

 

Hero Mages

“Hero Mages” seems to be quite an achievement… looks nice, and has a big feature list, which is impressive for a single-developer game.

It’s a turn based strategy-RPG, in which a number of players (up to 8) battle out for supremacy on a board.

History of Biology

What? An educational game that doesn’t suck!? My world views have been shattered! 🙂

“History of Biology” is an edutainment product, and seems to be quite a good one at that, mixing actual gameplay (and not just silly actions stringed up together to call a digital encyclopedia a game!) with learning… I always thought that games could be amazingly good educational tools, but it’s taking forever for us to reach that state that game makers and educators can actually join forces and create fun games that can teach something! This one is a step in the right direction, it seems…

Hohokum

Love the visuals in this one, and the gameplay seems to be quite interesting aswell. In this game we control a snake-like creature that has to carry NPCs to a target area. There’s some fighting going on (although I didn’t understand it very well)…

All in all, seems like a polished product with nice visuals and innovative gameplay.

Hue Shift

This iPad game is an interesting twist on the general platformer. The player can shift color, and only platforms of the same color as the player are actually solid.

It’s amazing that people still can find something to do with a beaten old mechanic like a platformer, but there you have it, they actually do it! 🙂

In the Dark

“In the Dark” is a platfom game in which you control a monster. In this mythos, monsters can only be in the dark, and light acts as a solid barrier. Because of this, the player will have to use shadows and solve some physic-based puzzles to move around the level and reach the goal. Another nice use of the light/shadow aestethic and extended platform-mechanics.

Infinite Blank

Like “Minecraft”, this game isn’t exactly a game, but more of a sandbox multiplayer world where all players can express their creativity. In this case, through drawing.

So, “Infinite Blank” is a multiplayer paint application, in which players go around continuosly filling the world with more drawings and exploring drawings made by others. Quite a neat project!

Jolly Rover

Pirates in a graphical adventure… hum… where have I heard that one before? Oh, but wait, this one has dogs! 🙂

I included this one because it looks very polished and it’s a graphical adventure, a genre that I have a lot of affection for… But it has a good vibe to it!

Kill Timmy

This game looks sick… and so much fun! 🙂 Basically, this is a sadistic “The Incredible Machine”… the objective is to kill the innocent “Timmy” in each level, placing some stuff in the level and watching it all go… And while this kind of game bores me nowadays on the PC, seems like a perfect match for smartphones in general!

La Mulana

La Mulana is also one of the best know titles in the indy scene… This game is full of 8-bit old-fashioned platforming action, and although the game has already been out for some time (since 2005); so why is it in this year’s IGF? Well, it has been remade for Wiiware, that’s why! 🙂

Light of Altair

Light of Altair is a 4X game, and I’m a sucker for these… I particularly like the colony building aspect of it, with the hex-grid and limited space, which makes you go more strategic in the empire expansion… Looks very polished and well done…

Light in the Deep

Another game that looks really polished (on a side note, the level of polish on these games have been going up and up and up, year after year!), “Lost in the Deep” tells the story of a girl that wanders off into the deep after some mermaids… The visuals are gorgeous, and its action-adventure-exploring gameplay seems very suited to young girls (a mostly ignored demographic, in terms of actual good games).

Lylian: Episode One

This game is every teen-goth’s wet dream, complete with psyco-girl, insanity, darkness and evil nurses… 🙂

Nevertheless, it seems like a very interesting game, very well executed and well deserving of a look.

MageMaze

This one is fairly interesting… at first glance, it seems like your average roguelike, but after looking at the gameplay video below, it seems to really be innovative and fun… Instead of just walking about a dungeon, you can actually change the dungeon, by shifting “rows” and “columns”… pretty nifty stuff.

Miegakure


Puzzles in the 4th dimension? Yes, please! 🙂 It’s kind of hard to explain exactly what the 4th dimension is, but in this game you can rotate in a all 4 dimensions in order to solve puzzles… now this must be some great mental workout! 🙂

Minecraft

Not going to talk about this, to be honest… I leave that to all the 10000 indy blogs and sites that can’t seem to stop talking about i! 🙂

For everybody that has been living below a rock this past months, Minecraft is the indy gaming version of crack… Notch, the creator has supposedly done a bazillion dollars with this, and because of that 10000 clones are popping all over the place…

Sorry if I sound pedantic, but I’m really tired of talking and hearing about Minecraft… but it is awesome! 🙂

So, that’s it for me, I’ll see if I can post the last part of this series this week (while levelling my imba mage to level 85!)… Cya all! 🙂

 
No Comments

Posted in Games

 

Some links…

17 Nov

This week has been hectic at the office this week, with a project approaching deadline (nothing gaming related, unfortunately)… It’s a weird project, since it’s web based and we’re using a mixture of PHP/JSON on the server side and GWT/JSON/Java on the client… since I’m new to these technologies, it has been an uphill fight, but it’s been rewarding in its own way…

Anyway, so I don’t get complaints about lack of posts, I’m just sharing some links with you guys:

First off, a game called “Cubesome”… Similar to “Exit”, it’s a platformer that you play on the surface of a cube, with parts of the level in each side; it seems fun:

Also, I found an interesting project for all of those that (like me) like to watch screenshots of games in development… It’s called “Screenshot Saturday”, and it’s a collection of screenshots, extracted from Tweeter feeds that feature the word “#screenshotsaturday” on them, grouped by weeks…  You can access the site at http://screenshotsaturday.pekuja.com/. It doesn’t seem to work on IE9, but works fine on Firefox or Chrome…

Finally, I found an interesting tutorial on creating pixel art, which is great for people who lack artistic skill like myself… it gives some really nice pointers on how to improve that programmer art! You can check that out at http://gas13.ru/v3/tutorials/sywtbapa_almighty_grass_tile.php, and following the links…

And that’s it for today… 🙂

I’ll try to have some free time to put up some more stuff this week, but we’ll see…

 
 

Independent Game Festival 2011 – Part II

11 Nov

Hi again, and welcome back to another post in my series about the IGF2011 finalists… If you’ve missed my previous entry, you can check it out here.

So, let’s get started!

Colourbind

I don’t usually get too excited about physics-based puzzlers, since I find them to be too finicky. But this one is interesting, since it plays with gravity. The idea is that objects of different colours get pulled by gravity in a different direction. For example, blue stuff might fall down, but green objects fall up. There is also objects that change the color of the affected object, for added effect and more creative puzzles. An interesting one, check out the video below:

 

Continuity 2

This one is a very neat idea; I loved the first one. Basically, you have to reorganize the “level grid” to allow your character to progress… The usual assortment of keys and doors mechanics, associated to a fresh perspective and a clean aesthetic.

Crusade Of Destiny

An interesting game for mobile platforms… I like ambitious games in these kind of platforms, instead of row-upon-row of puzzle games. This one is a 3d RPG, with controls that seem (from what I could gather) nice in this kind of environment (multitouch). I like the 3d graphics, very angular and such (I’m guessing for artistic and performance reasons).

Desktop Dungeons

I love rogue-like games… This one has the interesting variation that is balanced towards 10-minute games, which might make it viable for short breaks (and even for mobile platforms). Although this isn’t exactly a “rogue-like”, since it uses low-res retro graphics instead of the usual ASCII, it’s close enough for me to put it in the same category.

Din’s Curse

Ambition – Check; Co-op – Check; Procedurally-generated – Check. This game has everything I like, and looks good aswell!

This is a dungeon crawler (much in the vein of Diablo), with the possibility of co-op (which sadly not many games have).

Soldak Entertainment are no newcommers to indy game development, they’ve been at it since 2004, with 3 interesting titles already released (all RPGs, including this one), and it shows, since every game it’s been better polished than the previous one; and if there’s an important thing for an indy nowadays, to be able to stand out in a saturated market, is polish, polish, polish…

Dungeon Defenders

First things first: this game looks absolutely gorgeous! It’s a mix of tower defense and action-RPG, in which they have to defend the castle against a horde of enemies, using not only their quick reflexes, but also traps and defenses. Don’t know if this will work in practive (it’s two very different games, that are targeted at very different people), but the ideia is nice.

Oh, and did I mention that it looks absolutely lovely?! 🙂

Family Farm

Following the success of games like Farmville (maybe I’m being unfair, but that’s what comes to mind when I look at this one), this games puts you in charge of a virtual farm… but it’s much more complex than Farmville, having to manage work groups, seasons, different plantations, etc… It’s a tycoon game, but with cattle and crops!

This is another game that shows that even the simplest game concept can be extended further by creative thinking and polish…

Freakspace – Escape From Hell

This platformer has the interesting idea of instead of bestowing on the character special powers, it enables him to use the enemies in the game to help him progress; for example, he can grab a creature that makes him jump higher or further.

Graphically, the style is a bit confusing for my taste, but it has lots of work put into it.

Frozen Synapse

This game seems to be totally awesome… a turn-based tactical game with a kind of “virtual reality” visual to it… The neat part about it is that all the turn takes effect at the same time, so you give instructions to all your team members, and then press go and see them execute, which demands a more tactical approach to the scenarios, since it’s harder to react to changing circumstances (so you have to plan to avoid sticky situations).

Terrible name, though…

And that’s it for this week’s coverage of the IGF games… next week we’ll have more, I hope!

 
No Comments

Posted in Games

 

Distortion Buffer

10 Nov

Was intending to write the second part of my IGF2011 analysis, but didn’t have time because of silly bugs on the shadow systems… The code that chose either the “front” or “back” shadowmap (for my dual paraboloid shadow maps) was wrong, and it took me forever to see where the problem was…

Anyway, completed the distortion buffer work… still have some issues “controlling” the effect, but it will have to wait for the artist to put his hand on it to see exactly what is the best course of action for this…

Hopefully I’ll have a bit more time tomorrow and will be able to post my initial plan…