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:
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).
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 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).
I spent the day listening to old gorillaz youtube videos while working. Once I hopped on abelton I tried re-creating “welcome to the world of the plastic beach” by memory:
It turned out better than I thought after I compared it to the original. (You may notice the beeps from rhinestone Eyes I somehow got mixed up in my head and added to this song).
The hardest part here was the voccoder which I rarley play with and is kinda annoying to get right. So for my future self here’s the voccoder settings:
Here’s the operator that’s driving it
And here’s what’s being played:
Sounds pretty good, I think I could touch up the input noises more and if I got a better brass sound I think it would work better.
Otherwise I spent some time “vibe coding” to touch up the site. Vibe coding is just asking chatgpt to do stuff for you. I can still see why you would need an engineer to do this so I wont say its totally a replacement but damn did it take a 5 hour task and make it like 20 minutes.
(You can only see the above if you’re using a PC on the website) Both the top section and the bottom are custom shortcodes added into the site using by asking chatgpt a bunch of stuff. Here’s the PHP for the category stuff: This also requires a plugin, chatgpt suggested one but I found an older plugin that was open source and asked chatgpt to change the initial code that it gave me to that. It’s pretty crazy how simply that quick reconfiguration was.
//////
//Category Icon List
/////
function shortcode_category_icons() {
if ( ! function_exists('get_term_icon_url') ) {
return '<p><em>Icon Categories plugin not active or function missing.</em></p>';
}
$output = '<ul class="category-icons">';
$categories = get_categories([
'hide_empty' => false, // Show all categories, including empty ones
]);
foreach ( $categories as $category ) {
$icon_url = get_term_icon_url( $category->term_id, 'category' ); // get the icon URL
if ( $icon_url ) {
$output .= '<li>
<a href="' . esc_url( get_category_link( $category->term_id ) ) . '" title="' . esc_attr( $category->name ) . '">
<img src="' . esc_url( $icon_url ) . '" alt="' . esc_attr( $category->name ) . '" class="category-icon-img"/>
</a>
</li>';
}
}
$output .= '</ul>';
return $output;
}
add_shortcode( 'category_icons', 'shortcode_category_icons' );
Also under the title page
That little line above I spent atleast 3 hours trying to get working before I started embracing AI. Chatgpt understood the problem and gave me a solution in seconds. Essentially it was adding a <div> to the “header.php”
Then some java script using another plugin that chatgpt suggested using “WP Headers And Footers” It was so easy that I imagine that it probably isn’t worth blogging too much about. But I see myself getting more into the ai dev side as I go along.
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.
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:
Churning through this first semi-finalized level (which will probably be the demo level). The idea here is that the warehouse will open up to an underground section.
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.
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.