Die to Survive - Railshooter

What me confused was that the pin only spit out “load asset blocking” i should have read the tooltip also. Than i would have know it is the sync load :slight_smile:

And thank you for the code snipet. I will try this tomorrow. I did not test what happens if you have an base c++ actor in marketplace content.

Not sure if asyn load is really needet for this because it will run the construction anyway. As far as i am aware of this will only increase loading time.

Today i finished all models and also redo some UV´s for texel density so it is perfect possible to use whatever texture you want. I am happy i can get away with such less resources. No need for polypaint if you can use 1 texture set and a few masks for all the meshes.

I also addet the option to invert the masks. So now i have now 19 tombstones meshes and 38 signs meshes. This in combination with all the options you can play around gives an insane ammount of possiblitys to have different tombstones.

1 Like

Regardless of where it’s ran, a synchronous operation is a blocking one, meaning you can’t do anything else until it is loaded. The construction script runs every time an actor is moved or when a property is changed on it. Technically soft ptr is always better because if a texture property on a tombstone is soft, you can still load and manage a tombstone without loading the texture by default. In any case it’s a memory saver and should normally be the default. With the async loading snippet I provided you can also specify a priority for the loading process which is very useful. For UI this should usually be “high” and for level objects “normal”.

Nice work on the stones, I like the sun shaped details.

1 Like

Thank you for the help @Roy_Wierer.Seda145. And yes you are right async loading is of course always the better option if you can use it. You can see this while games show some sort of spining loading wheels, every this it gets stuck a little it is loading sync stuff and stop the spinning of the loading bar/wheel. Or the loading screen is simply not run async.

I tested before doing the test to load async to include an c++ actor/component into a normal BP project. But this does not to work the easy way. Seems like this would need to be a code plugin, and this i never have done before.
Also this will be a little to much for a asset thats meant to be models.

Not sure if i should just put it in with sync load only (so it stays BP only) to see if people will even like and use this kind of tombstones. I was looking and there are a few cheap plugins for async loading already in the market place. So if someone really want to use it they could simply change the sync to the asyn from this plugins.
A later update/change is always possible.

For my own needs i dont even need to use this BP, this was more meant to be a convenience bonus for the marketeplace to use the models.

But i will finish this, sooner or later i guess there will be a point where i can use a similar asset. Thank you again for this, i did not even think about softptr before :slight_smile:, just because i mostly use the meshes witout BP´s.

3 Likes

After quite a while here is the latest test of the gore system.

Still needs more love and some changes for the masks and the mesh, but now all of the functions to run the gore system are finally ready and tested.

I changed the belly hit to be more realistic. Before after 1 hit you could not dismember any further, but this feelt strange and just wrong. Now i use 3 damage states to look more realistic.
Still WIP but at least a quite complicated function is running almost perfect for what i try to archive.

3 Likes

Looking Amazing. I see three layers of damage skin, bones, organs. Are you using Physics Animations? Is the next step to individually apply the methodology to all body sections: arms, head, legs?

2 Likes

Thank you @TechLord. I use a combination of meshes to archive the dismembering. Still working with hiding hitted parts with oc masks, spawning meshes and copy material values to the parts the are spawning. This gives the ilusion of beeing the same mesh.

I tested a little more the new UE5 system with deforming but as i noticed with the first tests this will break the whole approach to what i use now. So i finally decide to stick as it is right now. There will not often more then 5 enemies at the same time so the system will run very smoth.

Yes i use a lot of physic with the animations.
It works this way → i start after hitting the enemy the animation, stop it to start the physic, stop physic and start the animation again. This way you get a lot more different looking variations for the same animation.

This is already in place, in the short vid i only tested how cutting the body with the third hit into the belly (spine_01-03 combined) will look like.
I hope to have a least 1 model finished during the weekend and hopfully can upload a complete dismebering test with all body parts.

3 Likes

Little update vid. Here you can see how it looks if you dismember the arms. I think it really isn´t noticable that i spawn meshes with copied material.
Only still struggling with niagara for the organs i want to use. Often if i use collision with niagara it stops falling down after colideing with the mesh.
Need to figure out if i can start collision with niagara after a certain amount of time.
Maybe i should just use the guts as static nanite mesh.

2 Likes

Dont forget the Groin Shot :slight_smile: I know there will be those players that use it.

2 Likes

I would love to do this but at the moment it is not possible. I need the “pelvis” to stay as “NonePhysic” for the phys anims. This would the most logic way to use it as hitzone (maybe i will look into this later again).

Here is a vid of the dismember system fully working. Need to adjust the model a little more but the functions and combined hitzones are final for now.

3 Likes

Love to see the updates. Can you please try one where the zombies are close quarters and come very close in their attacks? Like running around an indoor corner (Resident Evil 1) and hugging your neck I think it would be intense :smiley: . Also something that popped up into my mind is how the world is interacted with in One Finger Death Punch (hit an enemy, enemy falls back into scene, scene prop breaks, whole stage breaks) that level of interactivity can create some crazy close quarter action scenes to keep the tension high.

2 Likes

Thank you @Roy_Wierer.Seda145

This is a great idea, i was already thinking about this. There is a great and almost perfect example in HotD Overkill (my favorite of this series).
You need to hit some attched targets on the attacking enemy to kill him. I did not try it till now but i like the idea to use something similar. Like jumping into the scene so you would have to know where this will happend to react fast enough to avoid this.

This is also a great idea, desctructible or at least responsible environments always look good and make a static world more living. I tested this with some static objects like lights and monitors. Feels like it is very performance heavy if you use it on to many objects.
But defenetly something to consider at a later point.

2 Likes

I started to change the player profile more in deep for more detaild informations. I know lot´s of player love to watch at their statistics.
But what i thought should be pretty easy turned out to drive me crazy. It is really hard to do this without doing this with a real plan at a later point in development.
So i started to search all i have done to have something to look at what and how i can keep track of it. Feels like this will take days …

Here you can see a small part of it.

1 Like

I think you should pull this out of the player profile (decouple it) and put it in an ActorComponent which you can inject into the GameState / GameMode. Normally it is the GameMode its task to set up rules when a player scores / does something / is allowed to do something and its the GameState its purpose only to hold a state of the score. This is mostly for networking reasons but in your situation perfect for decoupling your code, usually saves a ton of time. Personally I start a level, figure out what “score rule” component to inject into the GameMode and do that. The component registers any relevant events or listens to events on spawned actors like your zombies (observer pattern using delegates). The component could then decide that when a zombie is hit by the player the score will increase. No modifications made to the zombies or the player. Bonus feature is that to swap out to a different game mode (think deathmatch to capture the flag) you can just swap out one component for another on the GameMode.

1 Like

Planning-on-Paper Is something I find myself doing often. In fact, this is the purpose I use Design Docs for and I create one for every project/subproject. Its good to see this in Development Threads because its part of the development process.

Stats definitely require a plan, because they can be various datatypes, numerical tickers or timers, scalar or composite, nested / linked to other Stats, hard coded or soft coded, volatile or non-volatile, replicated or non-replicated.

My inspiration for designing Stat Systems is based on the concept of simple key:value pairs which can be easy to map to other data, serialize, and parse. I constantly eyeball using UE’s Gameplay Ability System but keep getting the feeling I need to roll my own Stat System. This is where i find the difficulty.

1 Like

Thank you @Roy_Wierer.Seda145 for the suggestion with the Component.
I was looking today at this but this would take way to much time as i handel all of the depencities for all the actors.
But i will denfently keep this in mind for next time. I did not thought at the start how the project would evolve to the point it is right now. Really not a good idea change your mind as often i did and change a lot of thinks so much.

At the moment i use messages to hand over the data to GameMode/Instance for calculations and storing data.
For example, i use the data directly from the enemy and different hitzones to count the bodyparts that are dismembered.

It is more about the mistake i did with the documentation of what variables i store in wich structs. I need to do this now to see exactly what is stored where to have an overwiev.
After doing so it is much more easy to see how to do what.

Just all is much to deep writen into the code to change this without getting crazy.

1 Like

Yes planing is really one of the most important thing.
I do this almost every time with some sort of code.
Like here:


It is just easier to see if an idea turns out to be a good or bad idea.

Just a little lost at the moment to figure out wich data i need in the long term so i can prepare expandable functions so this will be easier to change or expand at a later point.
I hate doing mistakes twice.

1 Like

I concur 1000%. I consider myself a Audio/Visual person, thus, I use Google Slides for design docs / idea boards & mind maps / story boards / documentation / webpages because I can easily embed media (youtubes), insert urls, draw shapes, animation, collaborate, and present in ‘read only’. You never know when you need to share your design.

1 Like

This → Procedural Cemetery in Blueprints - UE Marketplace reminded me of our previous discussions on procedural tombstones.

Yes this looks pretty nice. I did not work any further on the tombstones, i just forget to finish this and at the moment i am to busy to finish it.

Edit:
After almost finishing the documentation i did a first test on how a statistic after finishing a level could look like.


While doing this i noticed a few other mistakes i did. I often send msg´s to the GameInstance. But this way i would need to reset this before starting a new level.
So i changed all to send to GameMode instead, this way it will set back on its own. It is much more clearer to read this way. Now i send the msg´s to the GameInstance before the new level starts and save the data there.
I feel like i should write a book about on how NOT to do things :grinning:

2 Likes

This short video shows how it could be InGame. Still thinking about what to add within the screen. Another table that shows at the end of a level wich collectables you have found should also be nice.

Also some sort of calculation to give an rating like other rail shooter do. Tier S and so on.

Doing this let me also think about to have later some sort of dailly or weekly challenges. Maybe something like Timeruns or a specific number given of BodyParts to dismember to finish the challenges.

It feels like i can go i a lot of directions to keep the game interesting to play over a long time.

Edit:
Almost the same video, but here is the option for later to come more “special” enemies activated. They will not stop if they take damage.
But it looks like something went a little wrong with the activation of the physic animation if they take damage. Need to check why this not really work as aspected.

2 Likes