C64 IN 3D
"You are what you do. " Kuato, Total Recall.
This is a 3D Voxel simulation(using scalar fields) of the C64 bitmap system. It consists of a background 3D bitmap (landscape). A foreground 3D bitmap (trees, buildings, grasses, etc...). Finally it has eight 3D sprites (dynamic bitmaps). The sprites have a collision detection system with background to sprite collisions, foreground to sprite collisions, and sprite to sprite collisions.
The engine is a rebalanced version of the Mode 9 engine. The main thread was doing too much work, so I gave more processes to the second thread. It now runs at my target fps while only using 70% thread capacity. Before I required 4ghz turbo to reach my target. Now it can be done with 2ghz at 70%. May be able to run on a Raspberry Pi.
It has the following mappings
INSPIRATIONS
When I started this project my only inspiration was the game Parallax by Sensible Software, made in 1986.
The reason I chose Parallax is because it was top down, compatible with a change to a 3D voxel system. Also because the game was very advanced. You could fly a spaceship and land on the ground, access an inventory, equip weapons and transfer money and ammo. Then you could enter buildings and shoot an NPC, you could then LOOT the NPC for a Keycard. Take the Keycard to the bank and extract money to buy ammo.
My next inspiration was the Shoot Em Up Construction Kit. This also was made by Sensible Software!
When I was in my early teens I got a copy of SEUCK as it was affectionately known. I spent years creating games and this is what made me start my Kit based project. Although I started programming as a hobby when I got my VZ-300 at the age of twelve. It was SEUCK, the Atari Lynx hardware system, and mode7 hardware effects that ignited my passion. SEUCK is the genesis of the ROM image that allows the Voxel system to be completely edited.
SEUCK also showed the ingenuity of some of the people who made games using the system. The most notable was a TMNT game that turned bullets into handheld weapons. This was achieved by changing the bullet speed to zero and increasing the bullets duration. Such a clever and innovative solution.
My next inspiration was a game called Adventure Construction Set. Made in 1984, it too is a very advanced piece of software.
Screenshot from LEMON64
This was a gem I found on the C64.com website in the early 2000's. I studied this software in depth and I keep it in the back of my mind when considering the story telling aspects and play mechanics for my system.
Finally, when I think of AI I think of Dark Sceptre. This was a game I found in a C+VG magazine back in the day. It is a very ambitious game made by legendary programmer Mike Singleton.
Screenshot from hardcoregaming101.net
The AI system consists of giving orders to NPC's and obtaining the elusive Dark Sceptre . It reminded me of the Perfect Dark cooperative AI system where orders could be given to allied Simulants. Except the number of orders is magnitudes in scale.
Screenshot from hardcoregaming101.net
Screenshot from C64 wiki
My favourite game of all time. A rare platform rpg that allows you to purchase drinks, food, weapons, shoes, shields, and armour. Swords, shoes, shields, and armour have five classes. Cloth, leather, heavy, hard, and legendary. Upgraded shoes jump higher and reduce inertia, upgraded armour takes less damage, upgraded shields stop projectiles, and upgraded swords reach further and do more damage. Contains a secret side mission that gives you the choice of a bell that helps you through the final maze, or a ruby that takes 33% of the final bosses health! Also has a secret that gives over 60 gold coins when collecting spawning coins, just jump and shake the joystick left and right like crazy! All modern games are based on this game.
Check out Bytes 'n bits for some interesting retro stuff.
MVPs
Other notable inspirations include Perfect Dark (N64). Also Dark Savior (Sega Saturn) had an interesting multi-story system, for me Dark Savior has helped me solve the problem of making a high quality story path system.
Finally I am going to mention Metal Gear Solid V, as it is the best game I have ever played.
Cyberpunk 2077 as it has some of the best missions I have ever played. (If you have PS4 version 1.00 and do not have data for updates, avoid mission : human nature, the game runs perfectly ).
Prey has the best RPG system.
I would also like to mention Dues Ex: Mankind Divided and Outer Worlds. Both have the best story systems. I would also mention Metroid Prime as it is an "experience". Just finished COD Ghosts extinction on my own, that was truly intense. I will also play Shenmue just so I can walk around a Japanese village.
Game of the year Resident Evil 2 remake, on Claires 2nd run GET THE BATTERY LAST! I found out the hard way. Forgotten Soldier has the best music since Gauntlet Legends Ice Fissure.
Because the system is based on old styled consoles, there will be no updates/patches and no crashes!
Screenshot from Myabandonware
When I was a teenager I got my first PC. It was a 386 SX-33, and a friend of mine was going to university. I was in my local Arcade playing games when he walked in and said "I just got you a copy of Doom", from his university server.
I had moved 30 km away from my friends so my parents would drop me off on Friday and pick me up Sunday afternoon. I rang them and told them to pick me up from my friends house.
He loaded up Doom and I was able to see a little bit of the first stage. Then my parents arrived. On the journey home I was under the impression that it was a full 3D voxel world, with intricate surface detail (3D textures). My mind was racing, and I saw the mountains out the window and thought you would be able to walk out buildings onto rocks. When I started playing I soon realised it wasn't.
That didn't stop me from playing Doom for the next 2 years! I even got a Doom editor from a disc on the cover of a PC mag. It also had hundreds of user made levels. Some were very interesting and even infiltrated my dreams, it was an awesome age in computer gaming. Just played DOOM 2 on DOOM:ETERNAL amazed at how playable and exciting it still was.
Interestingly the only stage I made was called Gangwars.wad, it contained a massive cavern. I placed a Cyberdemon at one side and Spider Mastermind at the other. A dozen Hellbarons around them and 40 imps in the centre. When the player walked in the room they would all fire and start fighting each other. Each time the survivors would be different. Sometimes the Cyberdemon survived sometimes the Hellbarons would survive, but most of the time a couple of imps would survive! I always remembered my voxel vision of Doom and when I got Comanche my obsession with voxels became eternal.
Screenshot from Myabandonware
THE DREAM BECOMES REALITY
An Open Source 100% voxel engine with 6DOF.
Above is the low detail version, the high detail version will be twice as sharp. Because the app is fullscreen the output is 1080p. With a 1440p monitor the output will be 1440p.
Works on Microsoft Edge, Google Chrome, and Mozilla Firefox.
Is extremely smooth on Microsoft Edge.
The engine is similar to the Classic Doom engine except each vertical segment of voxels is equivalent to a Sector. Also non-sector areas have a heightmapped terrain.
This terrain @ 60fps is the eqivalent of 1 billion triangles per second.
Screenshot from Classicdoom.com
The above image is the sector map of E1M1 from Classic Doom. It has roughly 110 sectors. If the voxel engine made this stage at the same scale it would have 5,392,304 sectors! This allows for surburban houses with realistic roofs. Adding a whole new type of scene/map to be created.
Too "cartoony"
Sprites will be 3D volumes and will be oversampled. The above images are of an oversampled sprite at the exact scale the engine will have.
This sprite is half the size of the previous but I am happy with how it looks. This will give me 4 times the sprites available as the previous sprite.
New "onion skin" volume modelling technique. Only took 2 hours, will be making a huge asset library.
*Update* Changed from touchpad to mouse and reduced time to 15 minutes.
I have different editors for different styles of games. One is for action games with simple linear gameplay, this will use the smaller sprites. One has dialog and multiple story paths, this will use the larger sprites. In primary school I made my own choose your own adventure book. I have always wanted that style story in a game. It has not been easy but I have 4 candidate story systems to test out.
I will spend the next couple of weeks watching Far Cry Arcade maps on YouTube for inspiration. I have already seen some really good ones. I am sure the creators would be making maps for game companies, they were that good!
This is version 2.0, it has twice the number of objects and sprites. The game area is four times larger and the same size as Far Cry Arcade.
So that completes 20 years of research into voxel technology. Being able to say I have made my own 3D console from scratch has generated a catharsis, that on it's own has made the journey worth every second of hard work. But there is so much more to come, so much more...
Just finished months of continuous 4 hour and 8 hour testing. Completely stable, been making some Arduino and Raspberry Pi hardware systems.
Some 3d sprites that sit ontop of terrain. The samples are clipped using:
!((x - base >>>size) | (y - base >>>size))
This formula clips a point in a rect without branching, it is also a mathematical formula so I can explore variations to see if anything interesting happens. This system can easily be expanded to clip a 3d rect during a certain period of time (4d). The 4d clipping could be used to make a 3d version of "A mind forever voyaging". It will also control one of my story branching systems. A digital wavelet.
So now I have a 2.5D (non-overlapping) engine with sprites and collisions. I also have a new 3D sprite only engine which is totally 3D (overlapping) with sprites and collisions.
A quick rough approximation of sprite overlapping. This was enough to convince me to do a pre-clip of sprites. This will create a 70% performance boost.
The new 3D engine editor is equivalent to a LITE version of Far Cry Arcade editor, incredibly simple to use.
**Update**
No need for 8 sprites as sprites are rendered PER RAY. A single sprite per ray will still render dozens of sprites per frame.
Comments
Post a Comment