Now they talk to each other!

It takes a bit to see but essentially what happened there was:

  • A bunch of bots spawned and started guarding their assigned assemblers
  • I shot at one of the bots which alerted the other bots to where I was located
  • As bots were assembled they went to my last known location and looked around
  • When I shot at them again my last known position was updated and other bots started searching where I fired.

This works by a hierarchy of multicast delegates (https://dev.epicgames.com/documentation/en-us/unreal-engine/multicast-delegates-in-unreal-engine) that passes the players known location from bot -> assembler -> game mode then then game mode alerts all of the assemblers and then alerts each bot.

In other news I did a bunch of backend work that isn’t pretty to look at: essentially I swapped out all of the old classes and re parented them to a generic “BlackLaceGameMode”:

This lets me make generic functions and I can pass some of the capability from the survival game mode into this new game mode (which I’m calling control).

Also performance seems to take a hit after around 20-30 bots in the world at once:

This isn’t the end of the world here (I can move a bunch of stuff into c++ and memory optimize it if I need to) but I think I shouldn’t be this bad with just a bunch of skeletal meshes. I bet if I started doing some occlusion culling (https://dev.epicgames.com/documentation/en-us/unreal-engine/visibility-and-occlusion-culling-in-unreal-engine) I would be able to get everything up to a very high fps. But I’ll punt performance optimization till after I get a game working. Next up is messing around with the terminal so it actually does something.

I think the sequence I’m thinking the player accomplishes to “hack” the system.

1.) The player clicks “transfer group id”

2.) There is then a password prompt that the player can guess or they can click “forgot password”

3.) Then a bunch of trivia pops up that the player needs to answer

4.) Then a new password is flashed across the screen

5.) The player enters the new password

6.) The player takes over the connected assemblers by pressing a button on the screen.

After #1 I think I want the turrets I made before to pop up out of the assembler and start shooting at the player, along with a bunch of red light spinners:

Another thing I’ve been diligent about is trying to make sure I don’t do anything dumb to preclude multiplayer in this game. I think getting multiplayer shipped is another animal but getting lan or local games working shouldn’t be too bad.

So like nothing is straight up crashing (which is good, also might not be too possible because I’m straight up wearing water wings by using blueprints), but you can see the bots aren’t persisted, the weapon selection isn’t persisted etc. I can poke around on getting that all working but again I think it will take away from the base “game” part of it. Definitely if I get it on steam then I think the first thing I’d try to attack is multiplayer. I’ve done that before in another game, you essentially gotta mark stuff as “replicated” or “non replicated” and if you mess it up you’re sending or recieving way to much data, oorr you’re giving control to someone who shouldn’t have it (such as giving a client the authority over where a player is located). You can also pull in achievements/scoreboards and server stuff but it required converting the game to full c++ then building in libraries that unreal cannot include normally (such as steamworks libs). So yeah, fun experiment but not doing that now.

I also added an “ai/ml” category for the site (it’s the lil brainy):

And this still seems like scrapers or bots:

I’ll get around to checking at some point.

Quick Hit

Added a syrette (syringe) bar to the hud and added a quick effect for pressing “V” which I’ll make the heal key.

I think that combined with a little “psssh” sound will be enough to tell the user they healed.

Medical Devices

Spent some time building this guy. What I’m going for is a quick box that holds and dispenses syringes. The glass on the right is supposed to be translucent (but that will be kind hard to see until I get it into unreal).

Putting “First Aid” seems kind on the nose (no cool game design “implication symbols” or whatnot) but I’m still in rough draft mode here.

Next thing todo is to get a non-world geometry version that is a skeletal mesh that is in the players POV to play an injection animation (But honestly I might skip that in favor of just making the screen go green or something).

The heart is a Unicode ( ♥♥♥) and the “First Aid” Text are both just stencils I made up in GIMP

Gameplay Gameplan (From a Gamefan during a self-made gamejam)

So I was looking back at the last thing that I made for planning



and I already see the inherent problem is that I never made a “Game” sequence in addition to the boss building. In that vein what I was thinking is:

  1. OnStart
    • Spawn Player (give only the pistol)
    • Spawn “Protection” bots (i.e. a number of bots around each assembler)
  2. Every X Seconds
    • Spawn a bot (after checking if we have too many bots) and set the patrol location to the last known player location
  3. On Destroying An Assembler
    • Give the player a new weapon
    • Increase the difficulty of the other assemblers
    • Alert the Other Patrol Bots to your location from all assemblers (minus the patrol bots)

This seems simple enough but there’s a few mechanics I do not have written yet.

  1. Bot Patrol locations/target locations
  2. Player Pickups
    • Both Health and Weapons (Weapons can be magically granted I figure)
  3. Patrol bot synchronization for alerts etc.

Bot Patrol Locations

This was pretty easy, I just updated the EQS query to be set around a specific location rather than the location of the bot. This changes the scores so the bots wander around a fixed point and don’t leave its radius until its engaged.

I also had to update the Blackboard to hold this value, so I can swap it on the fly

Now to update the guard point for a non-deployed bot I just set the “IsGuarding” flag to true and the “GuardPoint” to wherever.

Player Pickups

I think I want the health system to be a set of stims rather than recovering health or anything else. So I started modeling up a health station in blender

and syrettes/injectors/needles/syringes are kinda easy (I did this in 5ish minutes, still need a touch up).

My hope is to play an animation before giving health, essentially I want the player to show the syrette then pull below the frame and inject. This should save me animation work (hopefully).

Game Mode Work

I got the initial game mode made and the spawn but I also made a data table which holds difficulty settings

The idea is that each assembler will have a number of randomly generated guard bots which will patrol around the assembler and a set list of “wandering” bots that will be assembled and run towards the last place the player has been seen.

Right now I have the gamemode start working I just need to get the player alerts working. Which In my head I think I want each assembler to control their fleet of bots so the chain will be:
A bot sees the player and alerts their assembler with a location > The Assembler Then alerts the game mode > The game mode gets the new position and sends it to the other assemblers.

This way I can also setup alert radius’s, a limit of reporting etc.

Zap

Put the turret in game and nearly went deaf trying to make a good laser sound.

I was trying to use electric with operator to make a good “wirrr ZAP” sound. But I ended up just making garbage that made my head hurt (Lower your speakers before playing)

I also made a scorch mark decal in gimp:

I was doing all this work to get good edging effects but the “smoke” brush seemed to work fine!

I setup the explosion from the weapon library to have scorch marks on the ground:

My initial reasoning behind making this is that I wanted the tower I made earlier to make a line as it tracked you across the ground but I pivoted to make the tower just shoot a single explosion.

The tower now detects and tracks the player. I just setup a big collision trigger around the tower that grabs the player as a variable on overlap. Then I added in some laggy tracking code below.

I also added a plasma laser thing Niagara effect:

Surprisingly there wasn’t a torus primitive model in unreal so I had to whip one up really quick in blender (its like 3 buttons to make this in blender).

I went down a bunch of silly paths trying to make the rings conform to the beam including trying to custom HLSL (see: https://en.wikipedia.org/wiki/High-Level_Shader_Language) via a Niagara module (https://dev.epicgames.com/documentation/en-us/unreal-engine/creating-custom-modules-in-niagara-effects-for-unreal-engine ):

This SHOULD HAVE worked not sure why but I gave up and used a “shape location” module which distribute the meshes along a cylinder of radius 1

Worked the same…

And the final result:

(Still working on the rotation logic which is why it randomly flips 360) No damage atm but I still dig the tower and the effect of a bright flash then an explosion. Kinda reminds me of Slave-1’s seismic charges:

Now my next plan is to:
1.) Hook these turrets up to terminals
2.) Add health to the turrets
3.) Add a “you win” screen
4.) Make this map:

5.) Make Menus
6.) Make demo
7.) Put on steam

Frightening Lamp Post

I got stuck on making the “boss” spawner thing so I decided to think more about what’s defending this boss area rather than the spawner itself. So I came up with this:

Which is just kinda a stick with a gun ontop….that being said I kinda dig it. I’m going to put some more time into this model and probably use a placeholder cube to get a simple level setup using the new game mode.

Honestly this might be one of the cleanest looking things I’ve ever made.

The thing I did this time around when modeling was to break apart models when I didn’t like the way the smoothing looked, not sure how that will translate to UE5 but I’m happy with the flat shading of this guy.

From a gameplay perspective I think I’ll have this thing shoot plasma or something that way I don’t have to have a loader mechanism for rockets (which I want to say is a pet peeve of mine but this). Which is why there’s little wires above the two tubes:

And the rear side looks like some kinda battery pack.

Also bots man:

Meh/Unreleased game

I have so much trouble trying to model the stock for a side by side. I had an old game concept that I had a single barrel which looks pretty sketch.

It kinda looked right but if you zoom in you see some issues:

The original game I was calling “shotty” and the idea was that you would have trick shells like hawkeye, here’s the gameplay of where I left the game:

I had a bunch of shells I made in substance painter which I thought were neat:

I think the animations were where I put in the most work:

But I never really had a good “game” for it, it was all mechanics. I might revisit this in the future but for now I want to focus on blacklace.