10/06/2024 – New Stream Graphics & CyberSurfer Update

There’s been quite a long gap since the last one of these. I’ve just been so busy with everything that I haven’t had a chance to sit down and write one of these. Even while I write this, I have tabs open for scripts for at least two videos. Although one of them might appear in this post if I can finish it before this goes up.

With that said, here’s what I’ve been up to.

New Stream Graphics

I decided my stream graphics needed updating, but instead of just opening up Blender and going at it, I decided to spend some time designing my ideas before making them, which I think has led to a much better result than last time.

Let’s start with the game dev scene.

I’ve gone for a rustic-looking apartment looking over a cityscape. This scene has undergone a couple of reworks and changes since I originally made it. I’m showing its current state here.

Let’s start with the foreground first. There’s a desk with a decent wood material on it, a couple of props, a keyboard and mouse, and a mousepad. The keyboard and mouse models are not mine; I found those on the Internet. However, the textures are mine. It’s a plastic-like material with some grime added on top for believability. The mousepad is the camo pattern I like using, but with some additional texture on top.

There’s a picture of my dog on my desk, of course. And then there’s the two monitors. I made these myself, and they are, in fact, properly 16:9. They also use a plastic material, minus the grime. The screen is an LCD shader mixed with a Holdout shader. The Holdout shader allows the screen to be transparent when rendered, so I can put dynamic objects behind it like animated UI and such. I’ll get to that later.

There’s a brick texture behind the desk. I couldn’t make it as realistic as I would have liked, as it made my performance tank while navigating the scene, which was a real pain. Off to the left is glass, which slightly reflects the inside of the room but mostly just serves as a window to the outside.

Before I get to the outside, here’s the rest of the room you don’t see:

As you can see, there’s a couch and a couple of shelves, along with a carpet and ceiling. I had some ideas about reusing this room with different angles, but it’ll probably require more details if I want to do that.

Now, the outside of the room.

This is a procedural city made with geometry nodes. I followed a tutorial for this as I don’t really know what I’m doing with geo nodes yet. Either way, it’s better than what I was doing before with my shoddily made buildings. The scaling on the buildings is fairly inaccurate, and the glass warps the look of them a bit, but I’m willing to live with it.

Game Dev Cam Screen Example

Here’s the camera scene when all the UI is applied behind the rendered image. I’m pretty bad at making fake UI, but I think this looks OK for now. I might look into actually making a Windows Form application with custom graphics and using that instead. But considering the amount of changes this one scene has had since I made it, I think I’ll just live with it for now.

Overall, I like it, but I think there’s room for improvement. But at the same time, those improvements require me to further develop my own skill set. Plus, the lighting is a bit weird-looking, as the outside lighting doesn’t light up the room enough.

Moving on to the gaming scene now.

I designed this to look like a run-down arcade you might find in a failing shopping centre or motorway service station. Starting with the foreground again, there’s a table with a wood material on it and a brick material under it. The TV is actually the same as in my last layout, but with a Holdout shader on the screen mixed with a glossy shader over it to give it a proper look. There’s a plastic sign next to it with text that changes between scenes.

Behind all that is the rest of the arcade. The red camo material is used for the carpet, with some additional bits to make it look like carpet. And then there’s the cabinets themselves.

I just had to include a Rotaction cabinet, of course. SICKHACKS.root also makes a comeback, as Cybersurfer still doesn’t have an actual name. The other game is Tempo Catastrophe, a parody of the Time Crisis games, which seem to infest every single British arcade. And to top it off, a bog standard claw machine.

The latter of the two aren’t as highly detailed as they’re background objects, but they look decent enough in the final render.

Finally, on the back wall, there’s a text object with an emissive shader that I use as a sign, and an exit door that opens on the ending scene, which is a major light source as all the other lights are turned off.

I feel better about this scene than the game dev one. It’s come together quite well, although it did require a lot more effort with all the additional props needed. If I were going to change one thing, I would probably make it look more rundown, with some added rubbish thrown about. I’m also not too happy with the scaling of the room; it’s pretty bloody massive. Like a Megabowl arcade space, if any of you remember those.

I’m not sure how long these will last, but I think they’re pretty neat. The last layout was used for 2 years; let’s see if this lasts longer.

What’s Going On With CyberSurfer?

Last time I made a video and blog post about Cybersurfer, I mentioned that I was looking into a way to build tracks with the spline tool, and I got something working based on a video I found. Well, after a few months of tweaking and adding to it, hoping it would make it more powerful, I’ve realised that I am being an idiot about it.

The video covers this in more detail, and I would suggest you watch that, but I’ll go over some of the basic points.

Based on the video I found, I was able to make a track that follows the spline with the correct UVs and so on. I looked great. Then I started testing it by adding additional verticality and twisting it around. Like making loops and corkscrews.

This is where shortcomings in both my player code and the track generation became evident. Basically, whenever I would hit a bend on a loop, the player would jitter because of the lack of geometry. And when I hit corkscrews, I had the same issue, along with an additional bug where the player wouldn’t stick to the track in those sections.

Adding additional resolution was possible, but it added it to the whole track. Considering how long it’s intended to be, that might end up being too demanding. So I figured that the best solution would be to increase poly counts, but only in the specific parts where I needed it.

Alongside that, I still want things like tunnels and half-pipes in the level, sometimes going around corners. Again, I need extra geometry for that.

My solution was to subdivide the mesh, although along the width, not the length. I go over it in the video in more detail, but the long and short of it is that although I got the subdivision to work, it was an absolute mess. Furthermore, the idea of making tunnels with it is virtually impossible.

As the code got more complicated, trying to accommodate the idea of adding more vertices to it, it became more difficult to manipulate them.

In the end, I looked at all the code and decided that I needed to rethink it. Here’s a summary of what I’m going to try:

  • Change how I mark out which part of the track needs additional verts by using knot data instead.
  • Be able to add additional resolution along the length per section.
  • Append half-pipe sections onto the edges of the corners instead of manipulating the mesh.
  • Tunnels and other half-pipe sections might become separate pieces that are attached to the track.

Again, there’s more detail in the video, but this more or less covers everything.

The Godot Video

I finally got around to making a video about my experiences with Godot and the things I like and don’t like about it. I’m not an expert on game engines, so it comes from a place of just spewing out my opinions and thoughts in a very general way.

I’m less critical of Godot, although there are still plenty of things I don’t like. But I did find quite a few things I liked, including specific nodes and example-based documentation.

The video has done a lot better than I was expecting it to, and the feedback I’ve been getting has been fantastic. There are a lot of new things to look at and many things to improve on.

Am I going to use Godot again? Yes.

I have an idea for a project, but I haven’t really had the time to start designing it. But with all these videos out of the way, I should get some time soon. I’m not going to say anything about it until I start making a prototype.

Other Things

I have a new weapon asset. I’m calling it the “Czech 75”, which is a very legally distinct name for a pistol based on a real gun that a character from the anime Gunsmith Cats uses. This is in fact the same pistol from the 7DFPS game, although it has been modified a bit with better topology and several other improvements. And most importantly, it is now textured.

So, here’s a VR-ready pistol that you can put into your games. Enjoy.

In related news, the shotgun asset pack is now permanently discounted. I probably need to improve these ones as well at some point, but I can’t really be arsed. I have far too many things on the go right now.

But I am curious if there’s a demand for more weapons. I should also note that both of these were modelled and rigged by my friend and modified, animated, and textured by me. And half of the money from either of these goes to him. If I make more, I’ll likely have to do it on my own, which means I’ll have to learn more about the creation process. To be fair, as part of my Monday streams, I’m learning various aspects of Blender and trying to create things I haven’t before, which is helping me learn how to do stuff like this on my own instead of having to rely on others.

7DFPS is happening later in the year, so perhaps I’ll use that as an excuse for making more of this stuff.

Again, sorry for the large gap between this post and the last one. I have been very busy. And a new gaming roundup post is in the works, so look forward to that in the near future.

-Adam