Showcase of TPS game

Hello,

since some time I am tinkering on a third person game. I would like to share some of the progress I made in the past time. In the beginning I was absolutely new to any kind of programming and then I looked into Armory3d.The starting phase was hard as everything was new. And also the following time still was hard as I had to transfer Unity or Godot Tutorials into Logic Nodes.

https://drive.google.com/file/d/1izZjx8Zsue2LcNBBE5Ke00PD-d3CLJ6z/view?usp=sharing

Please have a look:

Everthing is done wih Logic Nodes.

The rigidbody controller is base on the FPS contoller by @Armory Blender I found on YT.

But over the time I added some features. For example:

  • I got a root motion controller for the character, which works in XYZ directions
  • The character is able to walk up and down slopes without jittering
  • I translated and added an Inventory System from @Jayanam to LN
  • The doors are a completely linked collections predefined in another blend file with the possibility to lock the door and asign a key to it
  • the fires are also linked (therefore the tile sheet is not working :pensive:) but it decreases the characters health when walking through it and also flickers
  • the wall running and ladder work pretty much the same way and make use of the root motion controller
  • I also made the character crouch (that was pretty troublesome, as I couldn´t push him down, but had to remove and add the rigidbody in between :pensive:) not happy with that
  • The character has a Stamina system
  • behind everything is an FSM with (onEnter, onUpdate and onExit function) also not so happy about it, as even with the little actions there are, there are already a lot of states attached the the character. And also most of the variables have to be made public which causes a PIA to find the trait causing an error.
  • I got a splash menu for the game. Which I can control with a gamepad, as all of the game. Right now it´s not capable of much but it can continue and quit the game and also shows the active menu button. (As said by gamepad input, no hover, or click function)
  • The last thing I added was the wall running(thanks to @Dave/Game Development´s tutorial) and jumping (these alone caused 4new States to the FSM) but they work good. Improvements are coming.

I hope you enjoy looking at it and also believe in the potential of Armory3D

The Character I got from Kenney.nl and the animations from mixamo (had to tweek them a little to work with the RM controller)

4 Likes

Hey

Its always nice to see some showcase projects. But unfortunately, I could not download the files. It requires authorization for the google drive. Could you please make it so anyone with the link can download? Thanks!

1 Like

Okay my bad. I changed the setting. Should work now.

1 Like

First of all, interesting video! I love that there are several interesting mechanics. One thing I would suggest though, is that next time you share another of your cool videos, please consider uploading it to a video sharing site such as YouTube. That way people don’t need to download your video, and you might get even wider reach more audience through that sharing platform as well.

1 Like

Looks really cool!

Really liked the animations, specifically the wall running :slightly_smiling_face:

Interesting. I will take a look at this. I think it should work, but not sure why it does not. If you get any errors or warning at export, please do share. It might also be helpful to open a GitHub issue for such things. Maybe provide a small example file there.

I am not sure about the mechanics of your game, but I think rigid bodies can be scaled down to imitate crouch behavior.

This is also really cool! Could you elaborate a bit on how your root motion works in your game?

BTW, I am currently working on a better animation system for Armory. It has lots of additional features such as Root Motion, Animation Blending, Additive Blending, Blend Spaces, Transitions and One Shot Animations, Bone masking, Foot IK and so on, all using logic nodes. Here is a short demo of the capabilities:

Let me know if you are interested in trying out this newer version of animation system. It is not yet merged into the main repo since I am still testing and working on it. Here are my version of armory and iron if you are interested:

4 Likes

Okay, thanks for your advice. I´ll try it, maybe this makes it more accessable.

4 Likes

Hi thanks, I am still looking forward for your animation system. Looked great in the past already.
You offered me to use this already in January but I was hoping to see in Armory3D. Haven´t checked it yet as I wanted to go with the stable version of Armory3D.
But in the meantime I found a pretty good description how to implement one in Unity and so I went for it and I must confess it works good.

The backbone of the controller is a FSM build with Logic nodes. It´s not nested and therefore has a lot of transitions between its states.

Every state has an onEnter/ onUpdate/ onExit function which get called by the FSM.

And the states then call the changeState function when making a tansition.
This is an example of the “Fall” state. It´s one with less spagetti nodes :grinning:

The speed of the animation is driven by the player input when required.

To get the root motion from the animation I added a root bone to the armature and copied the hips bone locations to it which I on the otherhand muted when necessary for X,Y or Z what ever was necessary. I parented an Empty to the root bone.

I think I could have gone without that but so I got the option the calculate the location of it parent relative.

And here is how calculated the root motion and stored in variables.

And last there is my player movement. Looks a bid odd, I know. I had to store the velocity2 as a Property before setting it, I know there was an error if I didn´t do it this way, so I keep it for now.

Hope it´s somehow understandable. Looking for forward for any suggestions to improve it.

5 Likes

Little update on my progress.

Isn´t much but most of the time I untangled the node trees and also had some trouble getting my Prefabs into the game as some of the modifiers I needed for these weren´t supported so had I to find some long other ways.

The Ziplines are also Linked Collections and bring everthing (Stand, Zipline, Collider) with them. They come in a a set and with a Library override they can be placed where ever you like. The Zipline itself I had to scale “on Init” as the used “Hook modifiers” is not working, even through I read that it should. Would be good if this could be fixed, as I have other Assets where I could need that as well.

Anyhow, hope you enjoyed the short Video.

3 Likes

Hi,

Again, really cool progress! :slightly_smiling_face:

I saw your feature request on GitHub about the hook modifier. I wanted to ask here so we don’t clutter the issue itself. Could you please elaborate a situation in game where you would want to use the hook modifier? Perhaps a rigid body constraint is what you are actually looking for…

The hook modifier in Armory is specific for soft body physics. That is because it will be used to “anchor” soft bodies vertices to certain mesh or objects. So it does not work with any other objects. More over, even if hook modifier were to work with non-soft body objects, it would be as good as a simple parent-child relation. There will be no dynamics involved between the objects connected via the hook.

Hi, thanks for the recognition :grinning:

Also for the quick response to my request/ question.

Right now I have two examples where I would need that modifier.
Not sure if the following is correct but in general I need that “Hook modifier” in Blender for some assets, so for Armory it doesn´t need to work on runtime but it would be good if is applied when just pressing “play”. But not in Blender so I can do adjustments later on.

One example is for my Zipline. Where you can see the rope is way to short. But it is constrained and thereby points from on post to the other. I tried to overcome the length problem with some different parenting but I haven´t found a solution yet and it wouldn´t be as good as the hook solution. I am now doing it via scaling when the Objects are initialized

The other example is a ladder I build. The length of the ladder is determined by two emptys I can easily place on the two levels I want to connect with it. But the length of the rails and the amount of steps are both driven by a curve i connected with hooks to the emptys. There is also a “copy location” which causes an error but I can overcome this with different parenting.

1 Like

I see, that makes perfect sense that the hook modifier(or any other) should be applied if possible at export. Thanks for the examples. The issue posted on GitHub did not explicitly state that you wanted it to be applied before export, so I assumed the request was for runtime implementation of the hook modifier.

Oh, if it makes it any easier, just remove these two lines from the ArmorySDK/armory/blender/arm/exporter.py file as a work around. The hook modifier should then be applied at export.

1 Like
1 Like
2 Likes

Hi, it update my version of armory this morning and got an error message and in the beginning I did´t have a clue what was causing this. Then I remembered I did this change on my exporter file. After doing the change on the new file it worked. Is there an possibility on your side to make this a permanent change or maybe to toggle it in armory.

Hi, the changes I mentioned isn’t an actual fix, but just a workaround. I will work on the fix and make a PR for it soon.

2 Likes
3 Likes