[WIP] Doom I clone

Based on ideas from this thread, I’m planning to make a doom I style retro game.
I"m planning a short term one level project with several enemies, music and soundtrack.

What I have right now:

Level editor:

“Retro” shader:

And a few sketches.

I’ll be posting updates from time to time.

6 Likes

Editor tools update:

Planning to test movement next, then it’ll be dealing with art assets.

8 Likes

Uhh, I’m actually impressed with that level editor. That’s really cool.

Thanks.

It took 3 days to get it to this point.

3 Likes

That’s precisely the thing I need to master next and you will start popping all sort of pgc modeling from me, potentially realistic human character too :smile:

Nice work @neginfinity ! How long do you reckon you can do this in? (assuming nothing in life comes up that eats up your time)

Original idea was to try to wrap everything up in one or two weeks.
“Everything” means one-level doom-style game, with sprite-based characters.

Given that level editor already ate 3 days, “one week” probably isn’t happening anymore.

Well, the editor was pretty unnecessary if you just wanted a one level clone.

I thought about it.

If I were cloning Quake, sure, I’d go with standard approach - I’ d model the whole level and import it. However, this isn’t Quake.

Basically, I figured out that modeling the whole thing in blender will be actually quite painful due to nature of texture mapping used in doom. Basically, I’d get one level, but adjusting anything in it would be very difficult because moving one vertex would screw up half of the room (basically I’d need to script UV mapping somewhere either way). I also wanted to get some experience with custom handles and scene editor gui. So I wrote the level editor. I think it turned out alright.

Anyway, I’ll post an update when I have anything else to show.

3 Likes

Hmm, how about giving yourself 1 to 2 weeks after finishing all your editor tools? So that long on just the game

I got horribly sidetracked by an “Amazingly INteresting problem ™”. I wasted a lot of time on it but results of work didn’t pay off and had to be scrapped. Anyway, I’m back on track. Currently I’m making art assets.

I DID clone half of the original level, but it turned out that that cloned level didn’t feel right, so I decided to redo it, starting again with graybox phase (rough level shape to get distances right, once sizes are right, it’ll be detailing/textures + properly aligning walls.

Apparently texture resolution of individual items is much higher than what original doom had, and same applies to the level.

I also added few minor tweaks to the editor (like much needed ability to join multiple adjacent polygons together, which ended up being quite simple, ability to flatten floors/ceiling to the same height, etc).

1 Like

Looking good :slight_smile: what was it that you got side tracked on?

1 Like

Collision detection. It is a long story.

3 Likes

Please share when you have time. I deeply enjoyed reading the details you wrote on your previous low poly game - especially your information on decals even though it was beyond my knowledge.

2 Likes

I made a few models to be turned into sprites. (Prettty sure original Doom used clay models at least in some places.
3090969--233142--sprite-models.jpg
Have two more enemies, then it’ll be sprite making time. Will probably spend the rest of available time this week making artwork for it.

I’ll get to it eventually. Need to get some sleep first.

4 Likes

Made one more character and colored existing ones. Need one more enemy and then it’ll be sprite making time.

Basically, I thought that cloning original designs woudln’t be fun and wanted to have a differnet take on monsters, though largerly with the same roles.

4 Likes

Now…

Basically, I had an “amazing idea™” to roll out my own collision detection system that would work in 2d, like original doom did.

Doom I has 2d collision detection where your bullets autoaim vertically. Meaning you can’t just 3d raycast int. Another problem is 2d map you can see in doom overlay, which tracks sector and wall visibility. So, I made a wrong decision and tried to roll out 2d collision system that would deal with both of those issues.

XYZ hours later I got a grid based colision detection in 2d that took handled collisions with level, collisions between objects and the level, and collision between enemeis as well. Also, it could return current 2d polygon in the scene for any map coordinate:
3091970--233273--collision.png

^^^ Object’s pushed away from initial position by collision detection system.

Grid based means that there was a 2d grid and each grid cell stored polygons/edges that were located in it, plus objects upon moving would register/deregister themselves from the grid cells. The issue with this and BSP approach is that BSP takes significantly less space for polygons.

Now… then I hit problems.
First, because Doom character moves around at 50 kmph or somethign along thise lines, the character could easily tunnel through thin walls. Also, it could tunnel through not so thin walls and end up outside of the level, if the move would place him into another cell that didn’t have any grid registered in it.
But the big problem is that on larger levels I got very choppy performance, because of garbage generation (which I actually tried to minimize).

So, I took a hard look at the whole mess, sighed, put it into “Obsolete” folder and then set up replacemenet with rigidbodies in one hours or so.

So, lessons learned:

  1. Apparently C# in unity is very bad choice when dealing with large number of containers. The system I had would work just fine in C++, due to tight memory control.
  2. Rolling out your own collision in untiy is generaly a bad idea. It is a FUN idea to tinker with, jsut not a good one.

Well, I did get some sort of fun coding warm-up with it, and figured out a routine that can shoot 2d raycast through poly grid by walking through adjacency information. This one will be probably used for 2d map, when I get to it.

But the whole “let’s handle ALL collision on our own” was a massive waste of time and nothing more.

8 Likes

Anyway. Things need to do right now:

  1. Need one more enemy
  2. Need to rig those guys then render them in blender into sprites
  3. Need to finish blocking out the level.
  4. Need few more textures (those will be added when needed)
  5. Need to add animated texture support for walls (this one is easy)
  6. Ideally Moving floor for secret buttons
  7. Opening screen graphic.(this one will be definitely a paint-over)
  8. Sounds + Music.
2 Likes

Looking good neggy.

Honestly, I thought you was gonna do the enemies totally in 2d → so I didn’t think you’d get around to it. The enemies have got a decent low poly base mesh to turn in sculpts with possible retopo and texturing, but that’s a massive time sink, if you wanted.

How do plan to get that pixelated look on the enemy sprites?

Will you music/ sound track be unique and how do you go about composing that?

I was thinking either tweaking blender ‘freestyle’ or using something like this, for 3D to pixel art.

^^Not tried or tested the above though.