#Handpainted "DOOM like" shooter
151 messages · Page 1 of 1 (latest)
this is a small visual test of my idea, so far it's all 2D sprites
now I've made some more props and tried to populate the scene a bit to soak up more of the atmosphere
I can already tell this project is gonna be incredible
Thanks!
I'll squeeze in one more quick update with a sketched enemy.
now I'll take some time to paint everything up a bit so I will have something to look at when I'll try to tackle the 2D rig and animation
This is so sick! Love the style.
I would suggest you to make the game and release it slowly like idk if updating the game is possible but I feel like u will get caught in the trap of completing the game like keep on creating n creating but never releasing or publishing it n eventually giving up so idk 😅 maybe after 1 level or 2 levels are working u can release trailer game something instead of working so hard to create complete game
oooh yeah, that's most likely what's gonna happen no matter what I do 😅 the amount of projects I have like this is embarrassing. Will see how this one will go.
Right now I "wasted" some time with learning the Skeleton2D and making a rig for the enemy, because I found out it's not optimal to use it in 3D scenes even tho it will be a 2D enemy.
Now I'll try to paint the enemy texture to a semi-final stage, as I don't have it in me to deal with 3D rig right after the 2D one. So, look forward to some hopefully pretty picture + if you have any tips on doing the 3D rig for 2D char and implementing it in Godot, feel free to share it with me. Thanks!
I've stuck in a bit more into the art side of thing
even the character rig was pretty cool, when I finished the textures, but I am still a bit sad that I need to make it all over again in Blender, I'll probably spend more time doing 3D enviro
idk much about this character movement even this little movement looks dope to me 😁
this project looks incredible. would love to play a hand drawn first person game
I suggest you also implement cell shading of actual 3D geometry as well to make actual levels on top of just these hand drawn sprites and textures
if you want to make actual levels I think having caves or dungeons would make sense that you traverse to using this overworld
oh yeah, I was pretty happy with the rig and range of movement I got out of it, but yeah, will need to make it again in blender so I can have it in 3D scene
already working on that! No sure if I do a cell shading shader but I am definitely planning to do the 3D
doing some vistas from painting
I also switched up the scenery for some interior, trying out lights and postprocessing.
Does anyone know why the Sprite3D is not reacting to the light? I'll have a look into it later but if some of you were faster and told me why, I won't mind haha
looks good
Looks awesome, I love the unique art style
stumbled of a Fog and couldn't resist, maybe I've overdone it a little bit but I had my fun.
Also, just more modelling done, I've been working out the pipeline to make the work as smooth as possible.
This is so cool!
Thanks!
spending most of my time in Blender modelling details, I did bunch of ledges to hide seams, did a statue, candelabra, corner decorations, I've added back the cabinets and I figured how to set the sprites to be affected with a light + cast shadow.
and I plan to keep modeling!
might need a normal map for the sprite so its specular highlights display correctly, not sure exactly
Hey, thanks for the tip, but I'd like to avoid normal maps in my project + I manage to find the "Shaded" flag recently, so now sprites react to the light as I wanted.
wooooow keep up the good work!
This looks incredible!!
I got pretty "cheap" update. I switched the Fog for Volumetric Fog as the Fog works good only on a flat plane and I want to have more verticality.
- I found out the FPS template has interaction with physics, so I had to make something for it!
Can't wait to see you shooting some priests, hahaha
Oh me too haha. But I am kinda scared of the coding part tbh. Not my strongest side for sure.
Thanks!
And I want to loosely base it on Hussite wars. It was a rebellion against corrupted catholic church resulting in multiple crusades against Bohemia and all of them failed.
There was bunch of interesting events during this time period that I'd like to get the main hero involved in, but I haven't decided on all of them.
Neat!
Can't wait to see Jan Hus himself!
sick looks, cool idea, hussite wars could be a cool setting (určitě) 😄
Haha, yeah, I wm still thinking of how I would like to put him in
It's definitely one of my favourite parts of the history, so, hopefully others will like it too! 😄
It's been some time, but here is a new update!
what held me down the most was that I wanted to ditch the downloaded controller for something I constructed using tutorials, so I practice some code + know what's there. So I finally did it!
then it was pretty quick to setup navmesh and start on the basic AI that is just following you for now. I've then decided to reward myself with a temp Run animation + new art for the weapon.
This is awesome! Can't wait to see how it progresses!!
Thanks!
And all I am using in terms of "WorldEnvironment" is Background, SSAO and Volumetric Fog
then I just have non shadow casting PointLight here and there, and if I feel fancy, I put a spot light with shadows, that's all.
love this art style! keep up the awesome work.
Gameplay is slowly coming together.
I already know I will have to rewrite everything, but I am happy for now.
I am need tips on how to structure the project and not have everything in few scripts. Mainly some behaviour inheriting would be cool, something like:
melee_weapon_master
melee_knife
melee_sword
melee_axe
melee_hammer
@lost jacinth I find that Godot lends itself to a component-based design. Basically, your weapon could be a container for various components that give it bits of behavior. Like, one component could be a resource that holds the weapon stats, one could control the animations, one spawns a projectile (if it is a projectile weapon), one deals damage (if a melee weapon), etc. Then you could differentiate between a knife and a hammer by giving them different stats and different animations/images, but they may both use the same "damage-on-contact" component, for example. So you have a Weapon node and its behavior is controlled by child nodes and/or resources, which you can swap in and out to change behavior. I also want to say that this artstyle and progress so far looks amazing.
Thanks for the suggestion! I see I will have to look more into this as I am having a hard time trying to wrap my had around it. But now I know what to look for!
Also thanks, happy you like it!
I love this project and the art style. In my current project, I mixed inheritance and components for the weapons since sometimes you need to propagate changes to all weapons - while you need some functionality specific to a particular one.
- HealthComp
- StatsComp
- WeaponComp
--- Weapon -> Flamethrower
--- Weapon -> Gun
"Weapon Component" handles Weapon switching or picking one up. Also, it distributes Stats to all weapons. "Weapon" Script handles all general weapon functionality like reloading or aiming. And "Flamethrower" Script handles everything that only a Flamethrower does.
My approach was a bit of a hybrid with the base weapon manager handling generic raycasting or having an area 3D attached to it for melee weapons. underneath that were five nodes used as placeholders for fixed slots because I didn't feel really like coding it in one when it was as easy solution to instead just use multiple children in this one case.
I have a series of weapon definition files that have things like maximum ammo or ammo per shot or what type of weapon it is or what slot it belongs in, The weapon manager will have an inventory of those that it reads from as your actual inventory and dynamically create the weapon in the slot if it needs to AKA you changed weapons in the slot from the default starting one or something
I'd be happy to share more detailed example or other resources that I had on how that gets structured just let me know
Thanks!
Yes, that's exactly something what I want to do. Something that will handle the general stuff and then I can just do special behaviours where it is needed.
I've done bunch of this in UE with Blueprints, but I do have a bit problem to try to visualize it in Godot and in code in general.
Thanks for the tips! Sounds interesting, though, as I mentioned above, I am having hard time imagining it with my lack of experience in Godot/Code.
Some examples would be really nice so I can have a look at it and play with it. If you wouldn't mind sharing some of your stuff, it would be really appreciated!
i'm still figuring out a lot myself - but chaff's template was a good example
https://chafmere.itch.io/godot-4-fps-controller
anyway, my own implentation is undergoing huge changes to use proper states. that being said, the loading of stats, view models, raycasting won't need to change much just go elsewhere
one sec, gotta get the code
okay, so the player just has this "weapon" scene
this is where i could start to handle things better, but in the interest of time, and wanting dedicated 'slots' i hacked it together with helper nodes (avoid this tbh)
in general, when the scene initializes it checks each slot for existing children, if not, it look in the player's inventory or falls back to the default starting weapons list.
when you switch to a slot, it instantiates the defined view model scene in the weapon definition resource
each resource is responsible for the data parts of the weapon. how much ammo it has, what it loosk like and animates with, etc
the weapon resource itself looks like this:
class_name WeaponDef extends Resource
@export_group("Function")
@export var weapon_name: String = "WEAPON"
@export var type: Weapon.Type
@export var slot: Weapon.Slot
@export var drops: PackedScene
@export_flags("Uses Ammo", "Has Magazine", "Reloads to Full") var flags: int = 0
## Maximum ammo that can be carried
@export var max_ammo: int
## Currently carried ammo
@export var ammo_pool: int
@export var mag_size: int
@export var mag_pool: int
@export var ammo_per_shot: int = 1
@export var ammo_per_reload: int = 1
@export var projectile: PackedScene
@export var muzzle_offset: Vector3
@export var hurtbox_pos: Vector3
@export var hurtbox_size: Vector3
@export_group("Visuals")
@export var animations: AnimationLibrary
@export var view_model: PackedScene
@export var weapon_pos_offset: Vector3
@export var weapon_rot_offset: Vector3
there's more i cut out in the interest of space, as well as some helper functions like:
func get_muzzle_pos() -> Vector3:
return muzzle_offset + (weapon_pos_offset * weapon_rot_offset)
so the main weapon code when moving to a new slot (or in the begining, ready called to slot 0/melee) will instantiate the view model, position, and update the master weapon scril variables for the muzzle pos/instantiate the hitbox if necessary, or get a sound to change the audio stream player's stream to
i'm currently not using the aim and raycasts anymore but i like them as visual indicators when debugging sometimes
again: my system is defeinitely flawed and i'd recommend chaf's template as a better starting point, but in general i hope the idea of separating data from function is somewhat clear
in addition, gdquest has a good style guide that shows this that the openrpg adheres to which kinda helps a lot with this idea
depending on your demands, a state machine might be a good controller
wow, cool art
Thanks for the extensive breakdown! I'll give it a try! It will be a lot of reading 😵💫
I am thinking that I'll switch to building the graphics for a while and then back to code, as I am bit intimidated by it.
man do i feel that one! i took apart chaf's one piece at a time until resources clicked, then slowly again until state kinda clicked
I'd say in the mean time, i've kinda figured out how to properly do slots without all the extra nodes, just as a parameter in your states or some other option as well, so that extra overhead is realllly not necessary
and in the mean time it was like "ok, frustrated, back to Blender"
Keep it up :)
Do you plan on leaving your weapons sprites or do you want to model them eventually? I feel like a normal map would look really good on that particular detail.
Love the art style you've got going on here! It kinda invokes borderlands' art style IMO
I definitely want to keep all weapons as sprites as I like the look + I am looking forward to the animating. I guess some normal map might look cool, but ideally I'd like to keep everything just in albedo
Thanks! One of my main inspiration for the art style was Darkest Dungeon, but I can see the Borderlands too!
God damn, it is similar. Thanks for mentioning it, just bought both of them. Maybe I can "steal" something from there hehe
Yeah it's great, enjoy haha
wow the running animation is so good!
@sonic iron thanks! I was also surprised how it end up looking, because the individual frames look pretty rough 😀
not much of an update, but I've painted in the weapons for the enemy. It's just a black shape to see if the movement works before I'll paint it in properly
This whole project looks fantastic!!
Indeed, can't wait to see the next location. ❤️
So the environment is 3d and the player and NPCs are all 2d?
I believe the "2d" characters are also 3d models despite being "flat" (planes), but I could be wrong
The project looks excellent.
heh, me too haha
Yes, in short, the enviro is 3D and the enemies and player are 2D
In more technical way, the enemies and player are using Sprite3D with sprite animations, so they are 3D plane rotating in space, but I'd call it just 2D
Thanks, that makes sense. I imagine you just rotate the plane to face the player at all times.
there's a billboard flag already, yep!
on the topic, how'd you go about animating them? i was doing some sprite experiments earlier and used an animplayer keyed to a sprite3d's frames but it seems excessive
Yes, I do both rotate the plane and have the billboard setting turned on.
rotating whole thing so the attack detection works, but without the billboard it looked weird.
And that's exactly how I do it. I have a sprite sheet and then key the frames in.
here is a sneak peak how the attack frames look like
cool, thanks. also amazing sprite work :0
and I also animated squash and stretch in Godot. If you have a look a the gif I shared, you can see the enemy get squashed a little bit before they hit
Have you thought about what to do when the player is in a much higher position than an enemy? The billboards with your current sprites would maybe not work well then.
Although perhaps it looks fine if they just rotate around the vertical axis.
This problem can also be solved with some clever level design. Even with the vertical mouselook allowed by modern DOOM sourceports, the distortion is very rarely noticeable
I was thinking about it and I came to the similar decision as @lilac goblet is proposing here.
I'll just try to avoid these extreme angles as much as possible haha
that's fair
I guess I might do slight rotation in x axis, so they can "lean back" a bit, maybe like 15-20 degrees? I would have to test out the exact number
is it really just 5 frames turning into such an amazing animation with the squishing?
that's incredible
It actually is haha! I wanted something "quick for now" that "I'll make better later", but I am pretty happy with how it turned out, so I don't think I'll change it much
Any updates on this @lost jacinth ?
Oh hey! Got burned out on coding a bit + work, so am taking a break for a while
Ah damn, hope you come back to this, it's looking great
I'm curious, in your first screenshots (outdoors) the building seems to be somewhat 3d, and not as flat as the enemies etc. Are you doing minor modelling here?
it's kinda common in these games to do 'props' with map geometry and texture them, so you get a mix of some 3d assets and sprite props
Yeah, I guess so. Kinda reminds me a bit of that Crocotile3d app
Though this is all sprites
Dang, this looks really cool! Take care @lost jacinth
oh ye, in this post it was all just sprites, but later I did start to use 3d modeling as well
thanks! ^-^
woke up from slumber
I made myself a little template, that can get hit and break
(pic. 1)
My idea was that I would then just create New Inherited Scenes from it and only change the Mesh and Collision property for the ones I made in 3D software
but I just can't figure out how to change them, or which Node3D allows that
(pic. 2)
I am able to make the Inherited scene from the actual model just fine, but then I would have to add all the components and link them every time, which doesn't feel ideal
does anyone know what would be the best way to solve this?
Glad to see you're still working on this!
just started with rewriting everything xd
hopefully it will be a bit smarted than last time
- early prototype on destructible environment
tho somehow after updating Godot my bullets go through the target 50% of the time
how is the environment made, is it a model in blender that you use trimsheets or something on?
is it modular pieces that all fit together?
does each object have its own unique texture or do you re-use textures for the same stuff?
it looks really good
It is a combination, most of the environment is constructed in Blender using somewhat modular kit xd
Big architectural parts do use either a seamless texture or a trimsheet
The smaller props are exported as solo assets and are textured from an atlas where I have a bit of wood, bit of stone, bit of metal and so on.
Is it just going through the alpha? presumably the collision 3d shape follows the candelabra image closely.
I made a box collision for that asset, so that should not be an issue.
But I noticed my RayCast3D had the "Hit From Inside" turned OFF, so I turned it ON and now it hits everytime!
update
I've reworked my NPC and Projectile logic to follow the Composition workflow.
When I was at it, I made an audio component that let's user fill it with sounds by category and then plays them at random to have some variation
now I'll be moving to the Player and updating it too
got to try out making a new weapon with all the reworked workflow and it was pretty fast! (ignore that it still shoots the books)
I made more complex destructible assets
the broken pieces can be picked up and thrown at the enemies
implemented knockback on hit
You’re better at throwing stuff than shooting that crossbow!
this is very very nice!
Thank you!
Your interior geometry is much more detailed than I at first noticed.
hehe, well I am trying to keep on the lower side for sure, but I sprinkle some detail here and there
Did some scripted doors to separate out the levels + added scripted enemy encounters so they don't run at you the second you start the game but can ambush you
Cool. Is there any detection outside of triggers like this one? Like, do you think you need to give enemies proper sight to spot or lose the player?
I have a sight-based detection instead with shouted alerts for other nearby enemies, ability to make an enemy stand still and watch a direction, plus ability to lose the player. Feels alright for more "organic" feel, but I think I want to have triggered spawns and detection in some spots anyway. Just wondering if it's the same but the other way around for you.
I just wanted to say I really love the aesthetics. Best of luck with your project! 🔥
Thanks!
And yes, I have a sight based detection as well, without the option to lose the player that is, as I don't think I will need it for this project.
It's really good for sprinkling the enemies around less intensive parts of the levels, but I found it lacking for some stuff I wanted to do, so I also made this scripted approach
I've made myself somethig I call a "Squad Manager" that can force everyone assigned to it to attack + it keeps track of all assigned units and can trigger more stuff when they all die
right now it works only with player stepping into a trigger, but I will expand up on it t
thank youuu!
Super cute animation, easter eggs like this always make for fun game objects
Your art is incredible! Looking forward to this ❤️
agreed, I always love little things like this in games xd
thank youu!
It's back!