Loop-dee-Loop and Todo-s

I wanted to mesh paint (https://dev.epicgames.com/documentation/en-us/unreal-engine/getting-started-with-mesh-texture-color-painting-in-unreal-engine) a bit in unreal and thought “Oh I’ll just flip this virutal texture box”

I have a pretty good pc (4090 24gb) I’m surprised its taking so 5+ minutes (but then again I’ve made NO effort to optimize any of my materials…

That being said…

I guess I made things low poly enough that maybe this is inherently optimized….

But thats a detail thing that I can work on later, For the outside I want to:

  1. Make those back blocks look like a office building embedded into the rock
  2. Replace those generators with something that would flow better with game play
  3. Make a new texture for that platform. Tat texture is fine but I’m using it in like 12 places and I don’t want to mess with UV scaling just to get it working
  4. Make some static rock models to place along the edges of mountainous regions so I it doesn’t look like a muddy ski slope
  5. Do something better with these conveyor belts. I put in WAAY to much time to make those kinda work, I might just delete them
  6. I have this cabinet which is kinda sketchy looking, it was supposed to go with a terminal but I might move it again
  7. Fix that lighting so that there isn’t a weird skylight for a warehouse setting
  8. Get some friends for that tree.

Also I need to make a better road texture, at far distances it looks fine but then you zoom in…

Every-time I look at it my graphics card fan spins up…probably a bad thing.

I also added a tunnel model

The UV’s and normals are REALLY messed up atm but I dont want to dig in yet. I fixed it by making the underlying material double sided but generally if you’re a single sided material and your model goes from looking like this in blender:

To this…

You should probably do it again….

But in the meantime there’s the magic “Make the material two sided” button which is normally used for meshes that have both an interior and exterior (which is not this….at all)

Still has issues. The darkness underneath comes from the unreal seeing that the normal of the face is facing in a direction that is into the block’s origin rather than away from it. This makes the lighting calculations get all wonky.

I’ve been disorganized when working this (also I stopped working it for like 2 weeks and now I’m lost) So I made a trello board here:
https://trello.com/b/dmIooAod/blacklaceworking-board

Broken into:
“Longer term goals”- Things I probably wont look into until I have something on steam

“MVP Make/Design”- Things I want to add to the game before I submit a demo/game to steamworks

“Fix/Improve” – Things that are in the game but need to be re-worked.

I’ll start chipping away at these and my personal goal is to get something ready to throw on steam by June.

More Cyber

ChatGPT is my friend.

This is in a branch:
https://github.com/wfkolb/CyberpunkRedCyberspace/tree/wk_feature/NewPlayerVisualization

Isn’t hooked up to firebase yet (to pull the floor information) but I figure I can make a few models to handle each level and a bunch for each of the ice daemons (you can see the dog for the hellhound: https://cyberpunk.fandom.com/wiki/Hellhound_(RED) ) which I’ll probably go through the list and make models for each. Outside of wireframe the model is…rough:

Vibin’ for some cyberpunk

Did a bit more work on the cyberpunk stuff

Functionally I think I’m close. I’m probably not going to add branching paths to the floors but I’d rather get this locked down then I can transition the viewing to a better 3d model view (with elevator and all).

Code is posted here:

https://github.com/wfkolb/CyberpunkRedCyberspace

Again this is mostly chatgpt but I got into the point where you can’t really expect chatgpt to do 100% of the work, but it is still like asking someone else for help. ChatGPT can’t read your brain and they can’t know 100% of what you’re seeing and what’s on your computer so you need to modularize as much as you can. In this case I setup the website to be essentially a few javascript classes that all dump a <div> that I add to the baseline html page. The html page has a connection to firebase (https://firebase.google.com/ which has gotten MUCH bigger since I last used it in 2014, ironically I had a “senior app developer” tell me using firebase was “unprofessional” now it seems like its the backend to a bunch of professional tools). The Main page handles the pull/push from the server and I have two “room display” functions that display the rooms differently based upon if you’re a gm or a player.

I have my todo list here: https://github.com/users/wfkolb/projects/2

I really need to finish the starting environment for blacklace but I had a two week gap that I wanted to setup a cyberpunk Red game for…so I’m here.

More Vibe coding

I wanted to setup a way to visualize the cyberspace for cyberpunk red ( https://www.cbr.com/cyberpunk-red-netrunner-class-explained/ ) for awhile and I never found a good solution. So I tried spinning up my own version with some chatgpt help:

Looks like crap but if I get a simple viewer working it should be easy enough to get everything in threes.js to make a better visualization for personal games. I’m hoping to get a retro terminal vibe going with this one kinda like my other visualization here: https://willkolb.com/?p=566

Essentially all this does right now is update a firebase database with some information that the person in the “GM” url can edit and the person in the “player” URL cannot edit. So nothing groundbreaking but I’m starting to find the weak spots with pure AI programming that was kind of annoying. The big one is the context saving/switching for conversations isn’t great, but I think that’s also driven because I’m using chatgpt free tier.

Also because this is just an html file and I’m the only person contributing I can just throw it into github! (Unreal projects are too big for free github).

https://github.com/wfkolb/CyberpunkRedCyberspace

Maybe a Car?

I started making a car

I was trying to base it off of https://www.classic.com/m/bmw/3-series/e36/m3/ and I think the vibe is kinda there? I think the wheel wells are kinda in the right place:

My goal is to have a driving sequence at some point. But honestly this might just be a thing I hold off on attempting until I finish up the whole “game” part of the game…Plus the doors seem like they would be hard to get right.

“If the robot makes three beeps don’t stand in front of it.”

Threw the muzzle flash 3d model into the explosion so we get some kinda fire out of it. It works much better than I expected:

Also attempted to make some light-bulbs that hang from the ceiling but it turns out the unreal provided cable component (https://dev.epicgames.com/documentation/en-us/unreal-engine/cable-components-in-unreal-engine) doesn’t apply physics forces to whatever it’s attached to.

The yellow line is the cable I made

The red line is a line trace I perform upwards to find any actors that are willing to take the lightbulb:

So I’ll have to essentially make a bone heavy mesh and attach that to the lightbulb.

Also the first level is progressing:

Slow pace but I think I should have something within a week. Going with the desert motif so I don’t have to make too many buildings..

Also I made an alert sound for the bots:

I made the sound in Abelton but I didn’t save the set….Essentially it was an Up only arpeggiator into an operator preset into a redux into a compress and eq-8. Also “arpeggiator” I found out isn’t in the dictionary:

Which: https://www.sweetwater.com/store/search?s=arpeggiator#search-header (P.S. VERY overpriced for what you can achieve with a $20 arduino uno and a spliced midi cable: https://github.com/FortySevenEffects/arduino_midi_library ).

They Keep killing each other…

I re-wrote a bunch of the patrol bot AI to use EQS (Environmental query system: see https://dev.epicgames.com/documentation/en-us/unreal-engine/environment-query-system-quick-start-in-unreal-engine#2-environmentquerycontext ) , which should greatly simplify the the bots and give them better criteria to find spots that see the player, but are also kinda close.

Here’s the EQS Tree:

Essentially EQS is a way to break up the navigation grid into nodes, each has a score and the EQS tree determines the score of each node. (Lower the better). In this case I have two tests for each node: Can the node see the current location of the player? Am I close to the player? Here’s another video of things kinda working but not fully:

I also fixed up the rocket so now it wont fly through walls

Here’s some quick gameplay of what I have atm:

It’s very silent right now…Also the stabby bots are quick as hell and I want some kinda warning for that. The gameplay right now is very serious sam and I want to tone it back speed wise. I think I might just slow down all the characters and add it some head bob.

Longer gameplay (with sound) below.

The map I was playing on isn’t great but I figure it might be better than that dev arena that I had before. I’m in the process of re-making the warehouse as a big static mesh so it’s easier on lower performance machines (right now it’s like 200+ meshes).

My 4090 fan is starting to spin up more often so I gotta feeling I might be hitting the limit of my “optimize later” strategy.

Build build build build

I made a real spawn location for the patrol bots:

Isn’t too much to it, just a bunch of boxes and a conveyor that spits out the bots.

I reworked some of the deployment logic so that bots are physics objects before they get fully deployed. That way I can do stuff like drop them off cliffs after being built.

The deployment logic now hardcodes the mesh’s position and rotation before playing the deploy animation (which is why you see them jump up in the second video). A way I can fix/clean this up is by adding a rollover animation which will play if the mesh is disoriented.

Right now the assemblers are attached to timers, when I get this hooked up to the survival game mode I’ll add control back to the game mode to dump out bots as needed.

I also added this guy in game

Doesn’t look great but I want to have one of these at the side of each assembler and allow some kind of “override” command or mini-game to stop the flow of bots or to flip them to your side.

The 5th rocket post

Added particles and sounds for rockets, also added a laser point to the rocket bot.

I made the rocket sound myself by doing a lame attempt to copy the image here (idk the context I straight up just googled “Rocket Sound Spectrum”)

Source: https://www.mdpi.com/2076-3417/13/15/9041

Fasulo, G.; Federico, L.; Sollazzo, A.; De Vivo, L.; Citarella, R. Hybrid Rocket Engine Noise: Measurements and Predictions of Acoustic Environments from Horizontal Static Fire. Appl. Sci. 2023, 13, 9041. https://doi.org/10.3390/app13159041

I did this by making some white noise generators in Abelton and filtering everything down using EQ 8:

Bassy Noise
Higher Pitched Hiss
Over Saturated mid region

Not a perfect re-creation (I did not read the paper also didn’t compensate for the A weighting, which I think they would add here?) but close enough.

The laser and rocket tail are just Niagara systems, the laser has an input that is updated every tick from the rocket bot.

I kinda want the bot to aim itself at the player, that way the laser gets shined in their eyes. But maybe next time around? I really gotta work on the base map for v0.0.1( or was it v0.0.2?)

I wanted cars in the map so I did a 5 minute car….yeah…