After getting rid of all the adverse forces in life hindering one in
developing video games, I'm now entirely on my own journey and have started
programming a prototype of a concept of a video game, codename: Ex Nihilo.
Ex Nihilo puts the player into a fast-paced, surreal, adrenaline amplifying,
and unforgivable environment that will put the players senses to the test.
The prototype will be build on some very small systems first under very
limited system resources to focus only on the core gameplay and to program
different backends to scatter the prototype around showing that its gameplay
is system independent. After that, the prototype will grow to more advanced
systems to use their computational abilities to compute complex shapes,
structures, and sounds forming the essence of the game.
Contrary to the current consensus of how to approach developing video games,
or a prototype for that matter, where one starts on a huge platform using many
different tools, I have decided to strip it all off to an absolute minimum.
The animation above shows the first version of a 3d engine, running on the
dcpu-16 (v1.7), that implements a minimum of graphics algorithms to be able to
render a three-dimensional fly-through environment with the following
characteristics:
- homogeneous local vertex/edge object definition
- homogeneous matrix transformation
- 2.14 bit rotation, 8.8 bit translation
- 8.8 bit perspective projection
- bitmap font renderer
- Bresenham line rasterizer
- integer iterative Cohen-Sutherland 2d line clipping
- 8.8 bit Cohen-Sutherland 3d line clipping
Display characteristics:
- video adapter: NYA ELEKTRISKA, LEM1802, id: 0x7349f615, ver: 0x1802
The LEM1802 is a 128x96 pixel color display adapter made up of 32x12 16 bit
addressable cells. Each cell is a portion of video memory 4x8 pixels in size
(2x 16bit) containing one monochrome character out of 128. As such one is left
with a resolution of 32x12 "pixels" (cells) for doing graphics, i.e. low-res.
- video mode: custom built hi-res video mode
Due to special non-linear memory mapping and by tinkering around with the
LEM1802's font map, I was able to built a hi-res video mode that makes it
possible to render arbitrary many pixels at a portion of the native
resolution.
- video resolution: 64x64, 1bpp, 1 color out of 16
- double buffering
Language: assembler
Well, I would be delighted to go on this journey with some more people who
follow a deep interest in developing games. I'm looking for one or two eager
coders that follow an interest in building games and technology from the
ground up on different systems pushing them to the limits. If your are
interested in assembler, c/c++, sound, graphics, math, and various systems
from a low-level and performance oriented perspective, and if you want to pull
all these together into breath-taking games, we may partner. Let me give an
example about what I'm looking for further down the road; say we want to
generate surface patches controlled by tangents which are themselves
controlled by sound, and with the patches textured for example with a 2d flow
based on the patches' curvature - all computed and rendered in realtime. Stuff
like that.