4096 B.C.

Hi, after I epically failed with my second attempt for a 4k game last week (too hideous to show), this week I came up with something new.
4096 B.C. will be a retro 3D shooter using ray-casting technique. There is no game-play right now, but you can walk around and shoot frost balls.
Packed jar is around 2.5KB without much optimization, so there is some space left for enemies, level generator and better procedural textures.

You can try the work in progress version here.
Any comments or critique are appreciated.

Enjoy.

very impressive and smooth!

You gotta love the effects that noise can give cheaply!

You probably have noticed already, but when you get too close to a wall the graphics stretch out horizontally. Bullets fired at certain angles sometimes go through walls.

ClassFormatError - Incompatible magic value 1012089682 in class file GA
Java Plug-in 10.11.2.21
Using JRE version 1.7.0_11-b21 Java HotSpot™ Client VM

Works well here with latest java build (build 1.7.0_13-b20). Lovely ray casting. The flame effect is good: I’d like to find out how to do that. Is it purlin noise? It would look better with a variable border to the flame perhaps. Blending would probably be too slow, but inhibiting drawing the flame based on luminance might be ok, particularly with flickering. I wonder what other interesting effects one could do. A lava or running water texture effect would be really handy. An attack of keenness is coming on over here.

Thats ‘<SCR’ in ascii. The magic number is the first 4 bytes of the file. Looks like you got served up an html file instead of a jar for some reason. It can happen with a misconfigured server, but it might be a cache problem. Since the applet worked for me, try clearing your browser and probably your Java Cache.

This is very good, running very nicely on my computer. I wish you could implement some interesting gameplay. Have you any idea of what you are going to do ?

As a suggestion, I wanted to invoke the name of a first person 3D RPG project with a strong 8 bit style that I discovered a few years ago on the internet, however I can’t remember it anymore…

I finally added some basic game-play. Now you will be able to destroy most of the walls and battle with the first (hope not last) enemy type. The fire is gone as I’m running slowly out of space.
I’m not 100% happy with the visuals, but at this time I will not put much effort in this direction. Instead I have to focus on ‘good enough’ level generation and more game-play elements, as the final stage of the game should be a action dungeon crawler.

All the effects and techniques used are old school tricks and algorithm like cellular automata (fire), raycasting and blured noise covered in many articles and tutorials.

You can try the new version here.

A suggestion of gameplay, if it can help you : with some invincible enemy boss on her/his heels, the player would have to race across the dungeon level, fighting minor enemies and avoiding to fall into deadly pits, on the way to a place where is stored some sacred weapon. Then, with this better equipment, the final fight against the enemy boss may begin… Upon victory, the player would be send to a new and harder dungeon level with the same problem.

Don’t worry, I won’t feel offended if you completely ignore this suggestion. I just imagined what I may do if I was at your place.

Added portals as level goals and more types of enemies. I’m out of space, so this is the final version (if no major bug arise). The enemies are sometimes stuck in the walls, it’s annoying I know, but they are ghosts and are immune to debugging.
Would be cool, to implement the idea of invincible enemy boss and a ‘boss slayer’ weapon but the source was a mess and this was the easiest game-play implementation.

You can try the game here.

Good job getting this up and running.

My suggestions:

  • Option to control view with mouse - I found it very difficult to aim/move with the keyboard controls. Then maybe have W/S as forwards/backwards, A/D as strafe left/right and mouse button 1 to fire.
  • Increase collision distance on player/walls to stop view going “inside” walls
  • Display messages on level end/beginning, even if it’s just “LVL: 2!” in the middle of the screen. There is no sense of accomplishment at the moment.
  • Might also be good to have a simple points system where you score for completing a level and killing enemies.

Love the 3D maze. Nice fireballs/iceballs. Aiming is a bit hard, there’s a difficult tradeoff between turn rate and aiming accuracy. Perhaps the turn rate can come down just a tad.

The texturing is having a problem at close quarters. Not sure if it’s spherical aberration (algorithm projects onto a cylinder, but is drawn on a plate). Alternatively, it might be you are using the fast (inaccurate) method for calculating texture points. That is known to bow in/out if the surface being textured varies considerably in Z-depth. I’ve made both of these errors at various times. Or more likely, it’s something else.

Actually, I try to have these games done quickly by not getting every glitch under control. For example, the texture scratching is just a clamp of infinite wall height, because it took me 3 seconds and a proper solution would take couple of minutes (or hours as I’m horrible at time estimating).
My greatest weaknes in software development is that I can’t let go a software before it is ‘perfect’. I’m not comfortable to show something that has flaws, so I try to use these small contests as training to get the ‘shit’ good enough ;).