Vap's Project

I started a project not too long ago. In short its a small scale, tactical RTS. Controlling a dozen or so big stompy robots with no base building.


My goal with this project is to learn Bluescript, learn Unreal Engine 4, learn what all it takes to make a game, and have something to point at when people ask what I know how to do, and say “This, this is mine, I made all of it, Thats what I know how to do.”

If I complete this, which I doubt I will, I would have a remake of a game I enjoyed playing growing up.
I generally upload a packaged version of my project every few days to my dropbox. If you are curious, check it out at https://www.dropbox.com/s/3hxmf627c02alyz/WindowsNoEditor.7z
Controls are currently mouse for aiming, right click to fire all weapons, 1, 2,3 to fire weapons individually, wasd to move, mouse wheel for zoom, and middle mouse to pan the camera.
Its not much to look at, but I have gotten rid of many of the Blueprint Gremlins ive been fighting with for the past few weeks.

I have found many oddities with Bluescript, and have many questions.

Are there any experts on Destructable Meshes? Specifically I want to know if you can detect with Bluescript if a mesh has fractured. If you can reference chunks, and attach things (like an emitter) to them. Can you make the chunks solid? Or change the thickness of them? A two sided material works okish, but I want the chunks chunky!

In Character movement, does the brakeing actually do anything? I have tried several values and the character always seems to stop on a dime. I want the robots to feel weighty, and my current system works sort of janky.

Is there a way to determine if an actor is standing on another actor? I recal in older versions of unreal (specifically Unreal Tournament 2004) that there was a list of attached items, and you could find a reference (to xpawn or somesuch) there.
If a big heavy robot is standing on a building I would like to collapse the building into rubble, but if a slightly less weighty robot stands on it I want the building to groan at the weight, but be just fine.

I plan on doing a visual damage system, hopefully more advanced than darkening a texture when something takes damage. Has anyone attempted doing something of this sort with Blueprint yet?

Comments, questions, replies to my many queries are welcome.

If you are curious about how I implemented anything in my little project, Please, do ask.

I have uploaded many screen captures of some of my blueprint you can view them below.

http://i159.photobucket.com/albums/t136/Vaporlinx/PlayerController_OrbitCamera.png~original

http://i159.photobucket.com/albums/t136/Vaporlinx/BaseCharacter_OrbitCamera.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseCharacter_Lookat.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseCharacter_Accelerate.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseCharacter_Turn.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseCharacter_Setup_Weapons.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseCharacter_TriggerWeapon.png~original

http://i159.photobucket.com/albums/t136/Vaporlinx/BaseWeapon_Fire_1.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseWeapon_Fire_2.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseWeapon_CheckGimbal.png~original

http://i159.photobucket.com/albums/t136/Vaporlinx/BaseProjectile_EG_1.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseProjectile_EG_2.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseProjectile_Accelerate_To_Target.png~original

http://i159.photobucket.com/albums/t136/Vaporlinx/BaseDestructable_EG_1.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseDestructable_EG_2.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseDestructable_EG_3.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseDestructable_EG_4.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseDestructable_EG_5.png~original

Also: How does one do spoiler tags on this forum?

Yo dude. Wish I had some answers to some of your questions. Sorry I don’t, as I’m pretty green with all this game makin’ stuff. But I just wanted to say, what you have here is a pretty nice start. Love your explosions when the robot blows up the canister thingys. And your blueprints are impressive.

“If I complete this, which I doubt I will, I would have a remake of a game I enjoyed playing growing up.”

Don’t want to tell you what to do, but it’d be cool to finish, at least on a small scale, one or two levels.
Good luck man.

Time will tell. I do enjoy mucking around with all of this stuff. Hopefully one day I get to make money doing something I enjoy.
Thanks for the good will.

Ive made some visible progress! There are things now that shoot at the player character!
http://i159.photobucket.com/albums/t136/Vaporlinx/Bullet_Time.png~original
After Cleaning up the base character class so that it can be used by both an AI controller and a Player Controller.

And I even made some basic AI! It was a mighty pain, what with the lack of documentation, and one of the behavior nodes consistantly going bad.
Speaking of behavior nodes going bad, does anyone have any idea what would cause it? It works fine when I recompile the blueprints and play in editor, but when I save the project, and reload the editor it goes bad again.

This is what it looks like (when its bad) on the tree:
http://i159.photobucket.com/albums/t136/Vaporlinx/BaseBT.png~original

Here is the actual node blueprint:
http://i159.photobucket.com/albums/t136/Vaporlinx/BTN_Checktarget_1.png~original
http://i159.photobucket.com/albums/t136/Vaporlinx/BTN_Checktarget_2.png~original

My temporary solution was just to move all the behavior into the AI controller, but I had planned on keeping that fairly light, with most of the logic in Behavior Tree Nodes.

As always, questions and comments are welcome.

I can maybe help you with some of this questions.

I’m no expert on destructible meshes, but check out this video, solid chunks in that. It could be your mesh that is made hollow? I mean, your mesh has been made with wall thickness?=QIvcTwlosMQ
As for emitting when broken?
Change the material of the mesh just before you destroy it. I can’t seem to find any nodes in Blueprint for dealing with the chunks, only for the destructible mesh.

The buildings collapsing under a heavy mech? do this:
There is a node to check if an actor is falling. Check your mech if it is falling.
If not falling, do a line trace straight down. Get the hit actor from there.
If the mech is heavy and the building is weak, break the building.

Visual damage.
You can have Parameters on your materials that you can set at runtime. Check the chair material from the default content. You can change the color of stuff at runtime in that material.
Video on how to do it here:=srUSDU1u0ogand here:=i2XmTbfIJ3sYou can use that to make parts of the material transparent so you have holes in your mech.

All my suggestions are possible in Blueprint. Let me know if you need a hand.

That video was the one I looked at when I started, at 2:20 or so he uses the tool to fracture the mesh and it has solid chunks. When I do the same thing it just cuts the surface of the mesh up. I suspect it is because my mesh has some holes.
http://i159.photobucket.com/albums/t136/Vaporlinx/Holey_Tank.png~original
Didn’t figure it was worth the dozen or so polys to cap it 'cause no one would ever look at it. But I will cap it and see if it makes a difference.

I have noticed very few nodes dealing with destructible meshes. I would love to have the chunks explode out in fireballs (with a particle system attached to each chunk), but I suspect that its highly optimized and exists in the game world as one big chunk system, rather than individual chunk actors.

I had thought to compare the locations of both actors (a destructible building and a mech) whenever they collide, to see if the mech is at a higher elivation and then deal damage to the building based on the elevation difference, and the mech’s weight.
Might get wonky on hills.
I want to avoid traces (especially doing a trace every second or so when a mech is not falling) My computer only runs the game at about 30 fps, I figure two year old gaming laptop is a decent place to set the bar for minimum hardware for the game to be playable. That and I don’t want to buy a new computer.

Ive tinkered with dynamic materials already. The three mechs on the ledge were me testing out changing the colors, as well as camo and insignias at runtime.
What I have never dealt with before is taking the hit location (say at the left arm, just above the elbow) and translating it to the texture, so we know where to change it (alpha to a beat up texture, or black, or just alpha the texture so we can see the innards).

One big concern with doing that is the mesh has some mirrored uvs. Mostly the arms and legs.

Is it possible to access another UV channel and have the damage texture applied to that?
I know channel two is used for lightmaps on static meshes, but for skeletal meshes I think its just empty space.
Would certainly be easier to use channel two, rather than change the uv’s fix the textures, and loos a little bit of texture resolution.

I told myself today I would take a break from working on my game, but that doesn’t look too likely. Too many ideas floating about it.

The hollow part is probably the cause of the problem with your non chunky bits.

The check for falling once per second isn’t what will kill your performance. I’m pretty sure that is cheap as chips.
Graphics is much more tolling on your computer than simple logic like that. You have to remember that you can do AI for 100s of actors in this engine… so checking for a collision once per second is nothing.
Try it before writing it off. It is a simple solution that would work on hills.

When you do a line trace for your hit, you can actually get the Impact Point, it is on the node when you break the hit result. I’m pretty sure you could change the alpha for that area with this info.
Again, give it a try before you write it off. Maybe your models work fine with it.

The mesh having an uncapped bottom was indeed the cause of the chunks being un chunky. Good to know how to control that, being hollow is ideal for a gas tank, but not so much for a rock or a house.

I very likely will try using a trace to determine if a character is standing on another (damageable) actor. I don’t know what the performance cost of doing a trace every second for each or the few dozen characters that there might be running around on a larger map. I would prefer using some more efficient method if it is available.

I still do not know how to convert a world space coordinate into a uv space coordinate (which I would get from the projectiles location when it hit a target, I am not using any hitscan weapons).
There was a hit mask component in UE3 ( UDK | HitMask ) but I have not yet found an analog in UE4. Without it, it becomes a whole lot more complicated to pull off.

, you have contributed directly to making my project better.
Thank you.

I have not said I would not try any of your suggestions or ideas. Generally when I have a concern with some method of implementation it is well founded. Such as my concern with damage effects and mirrored UVs.
(all overlapping uvs are colored red)
http://i159.photobucket.com/albums/t136/Vaporlinx/redbad.png~original
Were I to apply a black scorch mark, or alpha effect simulating a hole in the skin of the mech to anywhere colored red it would show up on the other side of the model. This would break the effect and without changing the UV mapping of the model make this method of simulating battle damage unsuitable.

Fortunately it is possible to access a different UV channel so if I am able to find a way to convert a location from world space to UV space I will be able to use this method easy as cake.

I finally made AI that hunts the player. And broke many other things. At least I am finally getting the hang of Behavior trees. New version is uploaded.
Also, I some how did this:
http://i159.photobucket.com/albums/t136/Vaporlinx/TheThirdDemension.png~original

I have refined the AI some, and added physics based hit reactions. Though I haven’t gotten rag dolls to work properly. I think its just about time to update the pictures of the blueprints on this forum. It has grown quite a bit since the last dump of images.

Are blueprint structs working for anyone? I can create them, and store them as variables, but when I try to make/break a custom struct it corrupts whatever blueprint I did this in when I relaunch the editor.

Does anyone have any idea why ragdolls would fall through bsp? I would guess collision, but I don’t see anything obviously out of place there.

Still working on it. AI has been very slow. But given that its my first attempt at any sort of AI I don’t feel at all bad about it. The Tree now actually sort of looks like a tree.
http://i159.photobucket.com/albums/t136/Vaporlinx/Actual_Tree.png~original
I now sort of have a real game level. Well it has art assets and things. Rocks. Mostly rocks.
http://i159.photobucket.com/albums/t136/Vaporlinx/Now_With_Real_Rocks.png~original

I have this rather annoying shadow.
http://i159.photobucket.com/albums/t136/Vaporlinx/Suns_Shadow.png~original
Anyone have any idea what would be casting it onto the static mesh? The best guess I have so far is that the sun’s sprite is casting the shadow, but well that seems rather silly to me.

Is it possible to change the RVO avoidance weight of a character at run time? Currently ragdolls to not collide with player characters so there is no reason to avoid them, but I have not yet found a way to access this variable at run time.

Is it possible to use RVO avoidance on an actor without a movement component? I would like to add it to the destructible static meshes, so that I don’t have to rebuild the navmash during runtime. The map is getting large, and I intend for the playable area to be much larger than it currently is.

My questions are becoming increasingly specific, so not many any more.
As always the latest packaged version can be downloaded from my dropbox at: Dropbox - Error
Any comments, or questions are welcome. Almost all of the blueprint displayed in this thread is hopelessly out of date. I have little idea what of it interests other people with blueprint projects. I am more than happy to post a specific blueprint and explain its functionality.

The AI is displaying about the level of intelligence I want it to, soon methinks its time to move onto another area, perhaps adding sound, or combat damage to the characters, or fleshing out the order system and working on a GUI.