DOOM-clone

windastellawindastella Posts: 21Member
edited September 2016 in Projects
The current status : Unplayable

This unnamed project of mine is like what the title said. And open source DOOM clone made with Godot engine. The idea is to have a fully playable template for an FPS game that can be use for other project. Currently I'm writing down a simple GDD for future reference. Here the elevator pitch for it.

The Game
This game is an Single Player FPS designed to be a Doom clone made with Godot Game Engine. This game will provide the basic gameplay so that it can be use as a module for future FPS game development.

The Story
Your Objective is to kill anything moving. A demon is moving? Kill that!! Heck even if a chair moves you should kill that too!

Motivation
This is a hobby project so I can't guarantee it will ever be finish project. I'm also not an experience programmer so the code structure I might use will surely be a little unorthodox for some veteran. I will consider this project as a way to gain experience. So hit me hard with those C&C !

Finally here is the link to the Git https://github.com/Windastella/fps-game
Be sure to read the Wiki if you want to see what I'm going for.

Tags :

Comments

  • SchusterSchuster Posts: 306Member
    It is amazing, because the 3d FPS template here enough is missing. <br />How are you planning to do the bullet system-Hitscan bullets(only raycasting) or object(mesh)bullets?<br />...I think if it is to be an template of a better way to do both -Hitscan weapons, and an object bullet for grenades and a rocket launcher.
  • PCMXMSPCMXMS Posts: 67Member
    Single Player only? A death match mode would be awesome.
  • windastellawindastella Posts: 21Member
    on 1466864070:
    <br />...I think if it is to be an template of a better way to do both -Hitscan weapons, and an object bullet for grenades and a rocket launcher. <br />
    <br /><br />Come to think of it, I might do both if this is a template. Might need to rewrite the GDD on how to achieve.<br /><br />
    on 1466879565:
    <br />Single Player only? A death match mode would be awesome.<br />
    <br /><br />To be honest. I'm not that good yet with UDP and such. I might try to do it after I finish the bare bone of the SP. I can try making it the same way as how Sauerbraten handle their SP. If anything changes, I'll change the Wiki too.
  • windastellawindastella Posts: 21Member
    Will these weapon be enough?<br /><br />1.Pistol  <br />The balance base weapon. Hitscan weapon.<br /><br />2.Rifle  <br />A long range weapon with high damage but a long cooldown and reload time. Hitscan weapon.<br /><br />3.Minigun  <br />A mid range weapon with low damage but short cooldown and no reload time. Hitscan weapon.<br /><br />4.Grenade Launcher  <br />Fire a slow projectile that will bounce and explode in-time or when hit. Effect the user as well. Bullet projectile.<br /><br />5.Rocket Launcher  <br />Fire a slightly faster projectile in an arc and will explode on contact. Bullet projectile.<br /><br />6.Crossbow  <br />A mid range, insta-kill weapon with low ammo capacity, long cooldown/reload time. The projectile also cause the target to be ragdolled(will try that) back or stuck to wall if near one. Bullet projectile.<br /><br />7.Chainsaw  <br />A melee weapon with DPS(Damage per Second) damage.<br /><br />8.Katana  <br />A strong melee weapon with range slightly farther than the Chainsaw. 
  • SchusterSchuster Posts: 306Member
    It will be great!!<br />...of course these are completely sufficient, great work, thanks a lot for this G:
  • windastellawindastella Posts: 21Member
    I had add the current status of the project to the title and change it when it is in a playable state.
  • PCMXMSPCMXMS Posts: 67Member
    I would be happy to help by doing some maps. Is there a map editor or something (like Build, in duke nuken)? Will it ever have a map editor? Is the mechanics like doom (Stairs, elevators, Red/yelow/blue key, etc)?
  • windastellawindastella Posts: 21Member
    Well the level editor is already there. The Godot Editor is enough for it. I'll try to make the system to be as modular as possible where people doesn't really need to code but just use the editor to drag and drop things into the scene to make a level.
  • PCMXMSPCMXMS Posts: 67Member
    on 1466983381:
    <br />Well the level editor is already there. The Godot Editor is enough for it. I'll try to make the system to be as modular as possible where people doesn't really need to code but just use the editor to drag and drop things into the scene to make a level.<br />
    <br />Sorry, I was too lazy to check by myself. Last time I tried to do something like this was a disaster (there was no development at all).<br /><br />I will check it out ass soon as I get home.
  • windastellawindastella Posts: 21Member
    It looks like I will shift focus on having a simple multiplayer deathmatch game mode first since it's simpler than SP for now. Co-op SP will be easier to imagine.
  • GokudomaticGokudomatic Posts: 70Member
    That project looks a lot like mine, except that I don't try to make a clone of Doom, but more like a mix of doom/halo and binding of isaac.<br /><br />Windastella, how will you solve the common problem I had to solve? I notice that in your code the player is an instance of RigidBody. How will you avoid the bouncing problem when going down a ramp or a stair? Also, how do you manage to climb up stairs?<br /><br />Second point I noticed is that levels in Doom are meshes. Will your editor do the same kind of map? I tried with blender but that's always a lot of work, specially because of the textures. I finally decided for the gridmap.<br /><br />And third point but not the least (especially because I just solved it), it's the monster AI. In Doom, you probably noticed that monsters go a bit randomly in the direction of the player, or the target (when another monster hit him too much). But the monster doesn't jump of a cliff, even though it doesn't use a navmesh. That's because the monster can calculate very easily the height of the ground at a coordinate x,y, since Doom is not true 3D and the maps are in 2D. But here in Godot, it's true 3D. Calculating the height of the ground is not so obvious, especially in stairs and bridges. I'm really curious how will you solve it.<br /><br /><br />Of course I can help you if you want.<br />Overall I'm happy that more and more people try to do this kind of game.
  • GokudomaticGokudomatic Posts: 70Member
    on 1466864070:
    <br />It is amazing, because the 3d FPS template here enough is missing. <br />How are you planning to do the bullet system-Hitscan bullets(only raycasting) or object(mesh)bullets?<br />...I think if it is to be an template of a better way to do both -Hitscan weapons, and an object bullet for grenades and a rocket launcher.<br />
    <br />Well, along my project, I plan to create a 3d fps template. I've already implemented various kind of weapons:<br />
      <br />[li]bullet[/li]<br />[li]fireball[/li]<br />[li]flamethrower[/li]<br />[li]missile[/li]<br />[li]grenade[/li]<br />[li]laser[/li]<br />
    <br />
  • SchusterSchuster Posts: 306Member
    It would be great, thanks guys for your great work!!<br />Good templates/demo of 3d fps is enough missing
  • windastellawindastella Posts: 21Member
    on 1468055521:
    <br />That project looks a lot like mine, except that I don't try to make a clone of Doom, but more like a mix of doom/halo and binding of isaac.<br /><br />Windastella, how will you solve the common problem I had to solve? I notice that in your code the player is an instance of RigidBody. How will you avoid the bouncing problem when going down a ramp or a stair? Also, how do you manage to climb up stairs?<br />
    <br /><br />This project isn't like DOOM 1 or 2 but more of DOOM 3 and beyond. I can try to make a raycast engine like Doom 1 & 2 but I wasn't aiming for that in the first place.<br /><br />About the rigid body. I see it was a problem when making 2D platformer but I don't think it was a big deal in 3D space as it was unnoticeable. Of course if you're aiming for a true realistic physic this wasn't the best way to deal with it.<br /><br />
    on 1468055521:
    <br />And third point but not the least (especially because I just solved it), it's the monster AI. In Doom, you probably noticed that monsters go a bit randomly in the direction of the player, or the target (when another monster hit him too much). But the monster doesn't jump of a cliff, even though it doesn't use a navmesh. That's because the monster can calculate very easily the height of the ground at a coordinate x,y, since Doom is not true 3D and the maps are in 2D. But here in Godot, it's true 3D. Calculating the height of the ground is not so obvious, especially in stairs and bridges. I'm really curious how will you solve it.<br />
    <br /><br />We have something called AI boundaries. A set boundaries where AI will try to avoid/ can't pass  through. I knew it was used in a few games but Doom must had used a simpler version of it. I knew Doom 2 had some sort of partitioning algorithm for the map. Well for the most part just use an AI boundaries would suffice.
  • GokudomaticGokudomatic Posts: 70Member
    on 1468292573:
    <br />
    on 1468055521:
    <br />That project looks a lot like mine, except that I don't try to make a clone of Doom, but more like a mix of doom/halo and binding of isaac.<br /><br />Windastella, how will you solve the common problem I had to solve? I notice that in your code the player is an instance of RigidBody. How will you avoid the bouncing problem when going down a ramp or a stair? Also, how do you manage to climb up stairs?<br />
    <br /><br />This project isn't like DOOM 1 or 2 but more of DOOM 3 and beyond. I can try to make a raycast engine like Doom 1 & 2 but I wasn't aiming for that in the first place.
    <br />I see. Not that it makes so much difference. I understood well that you weren't planning to write a raycast renderer but an FPS game instead.<br />
    on 1468292573:
    <br />About the rigid body. I see it was a problem when making 2D platformer but I don't think it was a big deal in 3D space as it was unnoticeable. Of course if you're aiming for a true realistic physic this wasn't the best way to deal with it.
    <br />Well, it was noticeable enough for me to have to rewrite the controller with a kinematicbody instead. Sure when you go down only for a few meters you won't notice anything. But when you run a long way downhill, you literally become a superball. It depends on what you need.<br />
    on 1468292573:
    <br />
    on 1468055521:
    <br />And third point but not the least (especially because I just solved it), it's the monster AI. In Doom, you probably noticed that monsters go a bit randomly in the direction of the player, or the target (when another monster hit him too much). But the monster doesn't jump of a cliff, even though it doesn't use a navmesh. That's because the monster can calculate very easily the height of the ground at a coordinate x,y, since Doom is not true 3D and the maps are in 2D. But here in Godot, it's true 3D. Calculating the height of the ground is not so obvious, especially in stairs and bridges. I'm really curious how will you solve it.<br />
    <br /><br />We have something called AI boundaries. A set boundaries where AI will try to avoid/ can't pass  through. I knew it was used in a few games but Doom must had used a simpler version of it. I knew Doom 2 had some sort of partitioning algorithm for the map. Well for the most part just use an AI boundaries would suffice.<br />
    <br />That looks like extra works in the level design instead of the AI. But you said you will write a map editor, right? Maybe some of this work will be done automatically in this editor?
  • windastellawindastella Posts: 21Member
    I will write a Godot Plugin for the level editor soon. I planned to design of the tool to be the same as Cube 2 Sauerbraten's Level Editor tool. But that was still in planning stage for now.<br /><br />https://en.wikipedia.org/wiki/Cube_2GDN_Sauerbraten
  • windastellawindastella Posts: 21Member
    on 1468313339:
    <br />I will write a Godot Plugin for the level editor soon. I planned to design of the tool to be the same as Cube 2 Sauerbraten's Level Editor tool. But that was still in planning stage for now.<br /><br />https://en.wikipedia.org/wiki/Cube_2GDN_Sauerbraten<br />
    <br /><br />Scrap that I have found this baby for Blender.<br />https://www.youtube.com/watch?v=gM1N6WUQ_gc
  • GokudomaticGokudomatic Posts: 70Member
    on 1468372338:
    <br />
    on 1468313339:
    <br />I will write a Godot Plugin for the level editor soon. I planned to design of the tool to be the same as Cube 2 Sauerbraten's Level Editor tool. But that was still in planning stage for now.<br /><br />https://en.wikipedia.org/wiki/Cube_2GDN_Sauerbraten<br />
    <br /><br />Scrap that I have found this baby for Blender.<br />https://www.youtube.com/watch?v=gM1N6WUQ_gc<br />
    <br />I understand you don't want to spend time to reinvent the wheel, especially if it's implementing a whole editor in godot (how many years would it take?). But I can already see some issues with this plugin for blender.<br /><br />Sure it is really nice and convenient. I'll probably use it too (thanks for sharing), especially since it does the texturing right automatically. However it doesn't support ramps/slopes. The editor is made for doom 1&2 engines, where slopes don't exist.<br />Also, you'll still have to manage the navmeshes yourself. It might be not much at first (delete it and duplicate the ground to make a new one), but I can foresee that would be really a pain when you have to edit an existing complex map.<br />Also, it's too bad that most options from this editor are too specific to doom and can't be exported with collada.<br /><br />The Cube 2 editor got my interest too, as it's more like what I'd like to see in blender (or even better, godot). Very cool stuff.
  • windastellawindastella Posts: 21Member
    You might need a little more imagination to fill out the problem that you had present. But I had to disagree to certain point. It does had a ramp, you'll had to use 3D sector or brush for those instead of 2d Sector.<br /><br />When I saw this plugin. I thought it is very useful for primarily plan and built a whole level and then I follow these steps to optimised it for Godot.<br /><br />1. Build the level.<br />2. Separate the level into rooms and portals.<br />3. export these with tag -room and -portal<br />4. Maybe add all the lighting with blender too.<br />5. Add the props in Godot.<br /><br />As the only feature that I was looking for is the auto texturing. I had to agree that this is a far cry from the best practice of developing an editor optimised for the game but when you're developing alone, you had to prioritised something over the others.<br /><br />For now, I better finish a playable version of the game. Then I might pour all the resource into making a proper editor. It might be more useful to community as whole since there is no level editor plugins are yet in the work by any contributor as of now.<br /><br />The Octree of Sauerbraten is the best and somewhat natural realtime level editing I had so far. If I tried to make an editor based on it, I wanted to address some issue I had with it. But overall it is a nice Idea to implement such system in Godot.
  • windastellawindastella Posts: 21Member
    I think I need a theme for this game. The Free For all Deathmatch is done so far, I guess I'll need a theme to make the art asset for it. Any suggestion?
  • SuryaSelSuryaSel Posts: 21Member
    I think I need a theme for this game. The Free For all Deathmatch is done so far, I guess I'll need a theme to make the art asset for it. Any suggestion?
    You could try following a turf-war type of theme a la GTA - San Andreas where the players have their scarves, masks and clothes showcasing their gang identities. I thought such a 'twisted' take on DOOM mechanics may turn out to be unique and enjoyable :)
Sign In or Register to comment.