Revenge of The Smiles 2

Anonymous Oct 02, 2005 at 14:00



Game is really simple, written in about 2,5 weeks. You are yellow SMILE and you have to fight with red SMILES, using one of eight types of weapons, including grenades.
There are friendly yellow SMILES too, they can provide some help sometimes …

You will get experience points for kills, more for harder enemies, extra damage, killing spree’s and couple of other things …
There is infinity number of levels, generated randomly at start. You can travel between levels using elevators (green for going previous level, red for going next level).

After gaining new level of experience, you can spend some extra points for attributes like shooting accuracy, shooting range, learning speed, camouflage and else…

Game is 3d, but on 2d maps, there is nothing else but floors and walls … and of course SMILES.
There is some nice physics, used to calculate movement of dropped weapons or grenades. There are many colourfull static lights and some dynamic (like flashlight for example).


Engine … there is no engine :) There is only twodimensional array of tiles, generating THE MAP and onedimensional array of smiles, generating THE FUN. There is no sound also. Rpt. no sound. Sorry. Will be in next version.

Lighting is both static and dynamic. Static is precalculated after random generating the map, and dynamic is just simple as that: the same, but in realtime.
As far as I remember, most things in code (lighting, collisions, movement, ai) is done by crude and brutal pack of functions like ray4something. And it’s really horribly written.

And one more warning: mostly second “start-game” after death will cause error: rotating camera, you are dead all the time. Of course you can exit using esc. And just run the program again.


You can see some more screens, download test versions at in polish) or just download last playable version 1.3here (use button POBIERZ - sorry - whole page in polish)


Game is in english and below I provide information about keys used in game:

w,s,a,d - standard movement :)
mouse X - rotate player
mouse Y - move camera up/down

left mouse click - shoot
r - reload
1 to 8 - choose a weapon
tab - next weapon

enter - use a elevator (when close to)
right mouse click - use a bonus (refreshment or bullet time)
z - on/off short player info
m - on/off map
c - on/off character menu

F2 - on/off precise dynamic lights
F3 - on/off FPS counter
Esc - exit

I hope you will enjoy it. You can write me:

7 Replies

Please log in or register to post a reply.

TheNut 179 Oct 02, 2005 at 14:41

Hah, I love it. The military smiley made me laugh. Good job on the theme.

On the wish-list side of things, some sound and eventually some multiplayer would really do wonders =)

Mihail121 102 Oct 02, 2005 at 15:37

Very nice piece of game dude!!!! The advices I can give you are:

  • don’t change nothing in the lighting model
  • don’t change the models but please add smoother animations
  • more enemies
  • better camera control
  • faster game speed and better challenge

  • keep up the good work!!!
Stoggs 101 Oct 02, 2005 at 16:57

I was just wondering what API did you use, Direct3D, OpenGL?

I played the game, really liked it… And i was thinking it would make a decent multiplayer game if you polished it up some…

Other than that, I think you should make the health display more prominent… Maybe a health bar on the bottom right corner?

Nice clean game…

klamacz 101 Oct 02, 2005 at 20:12

First, thank you for feedback :)

sound will be implmented in next version, but multiplayer I think not. The structrure of this game is so pure simple, that multi is next to impossible at the moment. There is much more features to polish in first place :)

And about API: I used Opengl without ANY extensions …

with regards

Uthman 101 Oct 02, 2005 at 21:27

your game is very nice; I like the game play and the feel.. it has something in it, i cant quite point it out, but something that makes it feel cool, hahaha.

anyhow, if you don’t mind, how are you going about with your dynamic lighting? You hinted about some ray function, but i’m thirsty for more information =)

klamacz 101 Oct 02, 2005 at 21:45

dynamic lighting uses the same calculation as static lighting, but in realtime of course it can use much smaller range for lights

algorithm goes like this:

  • map is built by tiles
  • every tile is a quad and has 4 points (corners)
  • rendering uses this points for normal brute force opengl glVertex :)
  • … and glColor with calculated light in this point of world
  • for every light
    (where light has “strength”, “range” and RGB “color”)
  • find tiles in range
  • send rays for every 4 points of every tiles (used only for collision with walls)
  • if no collision detected calculate using range and strength - add calculated color to 4 colors of tile

pretty straightforward :)

but …
there is two possible algorithms for dynamic lighting: simple and accurate (in game you can change by F2)
simple is sending 1 ray for every tile
accurate is sending 4 rays for every tile

that’s I hope is answer for your question :)

Methulah 101 Oct 03, 2005 at 06:21

Very nice work and great concept.