Doom 3D ZX81 style
Doom 3D ZX81 style
Here's something I've been working on for a few months. How about a 3D game where unlike 3D monster maze, etc you actually can turn your head and walk forwards or backwards? Here's a proof of concept game. All you can do is pick up the spinning ankh treasure which releases a key. When you pick up the key, a portal opens to the next stage. Obviously nothing really to do, but shows what it might look like. Clearly, this isn't going to render Doom Eternal at 60 frames per second, but that would be a bit ambitious for a ZX81.
I'm imaging a sort of Mummy's Tomb type game so this will need some enemies and weapons to complete the game. Any thoughts? This bare bones game could be the basis for anybody out there who wants to make something with it. Anybody interested?
Grab the treasure
Grab the key
Get to the portal
Here's an emulator file in case anybody would like a go with it. Q/A = forward/backward. O/P = left right turn. Press zero to reset the room
I'm imaging a sort of Mummy's Tomb type game so this will need some enemies and weapons to complete the game. Any thoughts? This bare bones game could be the basis for anybody out there who wants to make something with it. Anybody interested?
Grab the treasure
Grab the key
Get to the portal
Here's an emulator file in case anybody would like a go with it. Q/A = forward/backward. O/P = left right turn. Press zero to reset the room
Re: Doom 3D ZX81 style
Very cool. Played the demo for a bit trying it out. I'm interested. I wonder if it could be used for a simple maze game or even a dungeon crawler. The walls feel distorted though—seems to grow wider faster than taller.
Re: Doom 3D ZX81 style
This is an unusual program in that it needs a kind of calibration. There are scaling tables to calculate the size of objects and the walls. So those tables will need to be tweaked to make a better size transition.
One good thing about making the computer draw the frames is that it's very memory efficient. This isn't even 8kb. Models are just a few instructions in a table, things like draw a line, circle etc. So my 3D skeleton maze game used a lot of memory for graphics. That was kind of swapping memory for speed as it didn't have to do as many calculations. However, it only had four directions you could look or move in.
It uses two display files, one for viewing and one for drawing. When a new frame is drawn, the screen is flipped to the alternate value. So the screen addresses alternate at being the draw and view screens. So I've probably used most of 10kB once that's taken into account. Still, that leaves the ability to define a lot of objects and monsters etc. I wanted to have more monsters in the skeleton maze game, but there just wasn't enough room in 16k.
So far it's only able to draw a square room, however you could define a really long room as a corridor. Rooms can be from $0A to $2F long and wide.
One good thing about making the computer draw the frames is that it's very memory efficient. This isn't even 8kb. Models are just a few instructions in a table, things like draw a line, circle etc. So my 3D skeleton maze game used a lot of memory for graphics. That was kind of swapping memory for speed as it didn't have to do as many calculations. However, it only had four directions you could look or move in.
It uses two display files, one for viewing and one for drawing. When a new frame is drawn, the screen is flipped to the alternate value. So the screen addresses alternate at being the draw and view screens. So I've probably used most of 10kB once that's taken into account. Still, that leaves the ability to define a lot of objects and monsters etc. I wanted to have more monsters in the skeleton maze game, but there just wasn't enough room in 16k.
So far it's only able to draw a square room, however you could define a really long room as a corridor. Rooms can be from $0A to $2F long and wide.
Re: Doom 3D ZX81 style
Here's the Flat Assembler source code for the 3D room game. In this simple demo, grab three treasure items. A key appears and when you get that, the portal to the next room appears. I've added support for ZonX sound and Chroma colour.
There are plenty of comments (mainly to help me remember what everything does) in the code. I'm calling dibs on a pyramid raider type game, but feel free to make your own game based on it. ZX81 Doom might be a bit much but here's what it might look like.
There are plenty of comments (mainly to help me remember what everything does) in the code. I'm calling dibs on a pyramid raider type game, but feel free to make your own game based on it. ZX81 Doom might be a bit much but here's what it might look like.
- Attachments
-
- 3D Room.asm
- (86.08 KiB) Downloaded 140 times
Re: Doom 3D ZX81 style
Some time ago I coded a ray-casting engine in the style of Wolfenstein 3D. It is probably too slow in its ‘textured’ form, but like yours, could work in wireframe…
https://twitter.com/bobsstuffgames/sta ... 85127?s=21
https://twitter.com/bobsstuffgames/sta ... 85127?s=21
Re: Doom 3D ZX81 style
This sent me down a rabbit hole of researching ray casting. Interesting ideas. Both are actually pretty decent speed on the ZX81, all things considered. I really need to finish my other game before digging further, but would be fun to do more with these ideas.
Re: Doom 3D ZX81 style
bobs wrote: ↑Tue Oct 19, 2021 6:16 pm Some time ago I coded a ray-casting engine in the style of Wolfenstein 3D. It is probably too slow in its ‘textured’ form, but like yours, could work in wireframe…
Wow, that makes my efforts look pretty lame. I was hoping to get similar speed out of the system but it's pretty slow and only draws a room with objects you can pick up. A Wolfenstein type game would have been pretty amazing on a ZX81. It looks a little like some of my earlier efforts to make a 3D room. I had actual wall panels that could morph depending on angles. It didn't really grab me and was also pretty slow so I abandoned it and went with wire frame.
Re: Doom 3D ZX81 style
I do have a version of that demo which has fully textured walls, which sample correctly according to distance / angle. However, getting it to handle moving & scaling enemies (ala Wolfenstein) was getting difficult and slow, and I felt that a simple ‘find the key to escape’ game wasn’t much fun.
Was tempted to add a single dinosaur called ‘Rex’ though
Was tempted to add a single dinosaur called ‘Rex’ though
Re: Doom 3D ZX81 style
I don't supposed you published the source code. I'm very impressed with the speed of it and the way it draws the walls. I wouldn't have thought a ray traced system would have been much good at all, so I went with a wire frame program. Perhaps I should look into ray tracing more and see if I can work with it.bobs wrote: ↑Wed Oct 20, 2021 1:33 pm I do have a version of that demo which has fully textured walls, which sample correctly according to distance / angle. However, getting it to handle moving & scaling enemies (ala Wolfenstein) was getting difficult and slow, and I felt that a simple ‘find the key to escape’ game wasn’t much fun.
Was tempted to add a single dinosaur called ‘Rex’ though
Re: Doom 3D ZX81 style
I haven’t published the code - but I can see if I’ve still got it anywhere. It was a bit of a hack-job on top of a completely different game, so it would be a mess anyway! The fully textured version was slightly slower than that video, but (if I remember correctly) that wireframe version is actually textured but with a blank graphic, so a ‘true’ wireframe version would be somewhat fasterBukster wrote: ↑Fri Oct 22, 2021 9:40 pm I don't supposed you published the source code. I'm very impressed with the speed of it and the way it draws the walls. I wouldn't have thought a ray traced system would have been much good at all, so I went with a wire frame program. Perhaps I should look into ray tracing more and see if I can work with it.