Global Game Jam has come and gone again, and I made another game for it. This year’s theme was “Make Me Laugh”. I spent a good chunk of January learning Godot for this year’s GGJ, and as part of that, I made a quick prototype of a 2-player robot arena game. I made it because my friend and I were discussing the lack of Robot Wars-related games and thought about making one for GGJ.
As it happens, the theme fit quite well with the idea, so we decided to fill it full of ridiculous items instead of robots and hope that it would be funny. We thought it was silly, but when we presented it to the sleep-deprived audience, it didn’t get much of a reaction.
But anyway, here’s an outline of the game. 2-player robot arena. You can choose a character body, which will have a set amount of weapon placement points each. You then pick a weapon, and then you spawn into the arena. The arena is a 20m x 20m area. There’s a pit that can be activated via a button on the wall and a dropzone where random items drop.
Here are the body models. I’m personally quite fond of the man holding axles model, as it is way more horrifying than I expected it to be when I came up with the idea. And I quite like the box, too. But I should probably note that I modelled both of those while my teammate did the cheese and the toilet. But I did the textures for all of them.
With a bit more experience with Godot, development this time around went a lot more smoothly. However, that’s also because I was in charge of the programming for the most part. Not to say that I’m a better programmer than my friend, but more to say that I spent a lot more of my time doing the work.
Either way, I used the C# version of Godot 4.2.1 and found the programming side of things to be OK. But there’s still a lot of issues I have with Godot, predominately the general hierarchy of things. Accessing nodes is the biggest pain in the arse, and prefabs don’t really work in the same way they do in Unity. You can’t drag and drop something from the files into the inspector; you have to load it as a packed scene and then convert it to the correct node. But not every node is accessible through code. If you wanted to instantiate a vehicle body via code, for instance, you couldn’t. Hell, you can’t even access it.
I also had issues getting information on the root node of an object, and for one of the scripts, I ended up using GetParent() five times on one bit of code just to get the name of the player object. However, soon after the event, I remembered that Node Groups existed, and I probably should have used that instead.
But the more pressing issue with Godot is just how buggy some of the node types are. For the game, we heavily relied on the VehicleBody3D node to drive the player models. But for the first few days, the wheels on the player models simply went through the floor, and I couldn’t figure out why. And after researching, it turns out that the node by default doesn’t really work how you’d expect and suffers from many bugs. That said, I did eventually find a post that suggested altering the stiffness of the suspension plus some other values until you got the behaviour you wanted. After about 30 minutes of tweaking the values, I eventually solved the issue.
I have no real complaints about the art side of things; Blender is pretty robust these days, although I did learn that the GPU compute option wasn’t configured correctly, and after fixing that, rendering stuff took literal seconds instead of minutes. What bothers me is that this option was always there, but I hadn’t set it up properly. Considering I upgraded my PC primarily to improve productivity, I wonder if I had checked the right boxes, I could have saved a bit of money.
That’s really it as far as GGJ goes.
As for the new stream layout stuff, I finished greyboxing the gaming part of it, and now I just need to set up the textures. I also need to get started on the game dev scenes and the transition animations for both.
Hopefully, I can get all this sorted out by March. I don’t really want to be working on this instead of playing through Dragon’s Dogma 2. On the gaming side of things, I’m making my way through Infinite Wealth and having a blast. I also gave Graven ago and had mixed feelings about it. Persona 3 Royal and Granblue Fantasy Relink are coming soon, with the former being on Game Pass. Relink is a bit too expensive for me at the moment, so I might wait for a sale.
7DFPS happened again, and I submitted a new game. And this one is better than that god-awful zombie game from last year, I promise.
Making a VR game was easier in some ways than I was expecting, and weirder in some ways. I definitely didn’t like being tied to Unity’s pre-built systems as tightly as I was. That said, although the game isn’t as fully developed as I’d like, it’s definitely an improvement.
I’m not gonna write too much about the game because I made a video about it, along with some other info about stuff I’m working on that I’ve previously written about. Here’s the video:
Plans For 2024
My plans are a bit of a mess for 2024 so far due to some things taking a bit longer to do than I expected. However, for January, my focus is on Global Game Jam, which starts on the 22nd.
Alongside that, I’m working on improving my stream layout with new art and transitions. It’s going to be quite the challenge. But things are looking good so far with some of my early brainstorming.
Beyond that, I’m gonna focus full-time on Cybersurfer. I’m really close to a breakthrough with it, and I can’t wait to get back to it after GGJ. And in regards to game dev, my stream schedule for it is going to change. It’s still going to be on Tuesday, Wednesday, and Thursday, but now I will stream in the evenings as well. It won’t be consistent because of how my evenings can be, but it will give me more time to work on stuff.
The gaming streams are going to change a bit. Alongside my regular playthroughs of games, I’m gonna try doing one-off variety streams with many games. I’m then going to take those streams, cut them up on a per-game basis, and put the videos on YouTube as scheduled releases. Probably just one a week to give me some time to make content. I’m not sure how frequent these streams will be, but I’ve got plenty of weird ass games I want to check out.
A bit of a short one, especially after the bloody long post that the end of year one was. Keep tuned into my Twitch and YouTube channels (Both of them), and I’ll see you guys next time.
Last week was bloody terrible for me, and the entire month has been a bit shit. But I’m here to give you an update… After nearly two months of silence.
Upgrading & Breaking My PC
The big thing that’s happened since the last blog post is that I finally upgraded my PC. My old system was running a Ryzen 7 2700 and a GTX 1070. They’ve served me well the past few years, but as I’ve gotten more into 3D production, I’ve needed a lot more horsepower. Plus, I’ve been struggling to run a lot of games lately. And very recently, that GPU started becoming the minimum spec for a lot of new games. Anyway, the new CPU is a Ryzen 7 5800X3D and the GPU is a RTX 3060.
I went with the 5800X3D as I’ve heard nothing but good things about it, and it’s likely the best chip for the AM4 board. It’s also the last chip for the AM4 board. So if I do need to upgrade again in the future, it’s gonna be a full upgrade. I’ve definitely seen a performance improvement with it, and OBS is throwing up less of a shitfit when I stream games now.
Getting the chip in was more of a headache than I thought. First of all, it didn’t come with a new heatsink, so I had to use my old one, meaning I had to clean up all the thermal paste and re-apply it, using some old paste my dad dug up that was almost finished up. And then I remounted the fan, but without removing the motherboard from the case. I ended up with a solution where I took a few bits of non-static packaging and a tissue packet and used them to keep the rear bracket from falling out. It worked out in the end, but it took more work than I was originally expecting.
As for the RTX 3060, well with this, I can now do raytracing to a reasonable level. This will make material creation in Blender MUCH FASTER. Working on materials previously was a massive pain in the arse. Plus, it’s nice to know that I should be able to throw any mainstream game at this thing without issues, at least for the next few years.
RTX Off
RTX On
I played around a bit with the raytracing stuff, mostly just messing with Minecraft and Quake II RTX. I might give Portal RTX a go at some point.
Getting the GPU in literally took 5 minutes and was probably the least painful part of this experience.
But anyway, the performance boost is really nice, and better productivity is always a good thing… Or it would be if EVERYTHING DIDN’T BREAK.
Shortly after getting my rig up and running again, my 4TB media drive which contains a lot of my video footage just straight up fucking broke. Inaccessible. There was about 3TB worth of stuff on there. I’m going to try and get it sent off to a repair place, but it’s likely going to cost me a fucking lot of money.
In the process of replacing parts, my PC was moved around a bit, among other things. This was likely to be the root cause of the problem.
Following this however, I decided to take advantage of the Black Friday deals and get myself two new SATA SSDs. One to replace the media drive, and the other to clone my documents folder.
It took a few days, but when I got them, I started by putting in the new media drive. I left it in for a few days before doing anything with it, and then decided to download a whole bunch of shit. And then it eventually stopped accepting downloading, and some of the files it did download were corrupted. Following that, I couldn’t access the drive at all.
But when I booted the machine the morning after, I could access the drive again, and all the files that had been downloaded properly were fine. The corrupted ones were still busted, but I just deleted those and re-downloaded them. So I’ve decided to just take it slow when downloading stuff to that drive.
I also cloned my documents drive onto another SSD, which for some reason didn’t work when I first tried the process, but did work the second time around. I waited a few days as this was during the issues with the new media drive, but this morning (5th December when I write this) I finally swapped it over.
It didn’t replace my original drive immediately; I had to go into disk management and change the drive letter from Q to F. Once I did that, it worked, but then the SSD I have for games was no longer showing up, so I restarted again, and Windows gave me a blank screen. One more restart later, and everything finally booted up properly.
However, that isn’t the end of this story. I still have a 2TB NVME SSD to install, which I will probably do later this week.
But this whole endeavour has ended up costing me A LOT of money. I don’t like begging for cash, but if you’re reading this and appreciate the game dev work I do or generally enjoy my streams, and have a few bob to spare, consider donating to me on Ko-Fi.
CyberSurfer Progress
A lot has actually changed in the past couple of months in regards to the project. Last time, I mentioned all the rail grinding stuff. Well, that’s actually been changed significantly. Using the Spline Utility part of the spline package, I’ve rebuilt the whole system so that it can finally follow curved rails, or bezier curve rails. There’s a video tutorial a little later in this post, but the results are much improved over what I previously had.
But the big thing that happened was the first public demo of the prototype. Here’s a video of me talking about it, alongside some other things.
The demo didn’t go over all too well with players. Most of the complaints were about the speed. Players didn’t like having to slow down for obstacles; the placement of them seemed poor; collisions were a bit messy; and so on. I didn’t get too many complaints about the game feel. The only complaint I got about the grinding was about how jumping between the rails kills your momentum, which is something I thought I fixed, but in further testing later on, when I increased the speed of the grinding, it became clear that it wasn’t fixed.
The game as it is now is quite different compared to the original GGJ game. Especially the aspect where the player can move however they want, compared to the original, where they were limited to only left and right. But that change brings about a very different form of level design, which I did not account for. However, instead of adapting to that change, I’ve decided to go back to the original idea of pushing the player down the track like in the original game.
However, this time, I will not be spewing waypoint triggers along the track in order to rotate the player. This time I’m going to use splines to create the track and rotate the player’s aiming based on it, similar to how I handle rail grinding.
After a bit of work, I can finally generate tracks from splines. In addition to this, I can generate colliders on the sides to keep the player within bounds. So now I can have non-flat tracks with the correct colliders. I haven’t fully tested the track generation, but it should be fine for most scenarios.
Well, when I say it’s not flat, I mean the track as a whole. But I am thinking about having the actual surface be curved, especially around corners, and maybe even having half- or full-pipe sections. But that’s going to require even more complicated programming, and I barely understand what I’m doing as is.
Finally, the rail grinding tutorial.
Pretty basic stuff. The differences with my old code were mostly the spline utilities stuff. I am calculating the direction of the player slightly differently. Instead of using the dot product, I’m calculating the angle between the player’s forward and the spline tangent (Read as: Forward) of the point of the spline the player is in contact with. It seems like it works better. There’s a GitHub repo linked in the description of the video if you’re interested in seeing the code.
With the track generation stuff in a good place, the next thing I’m likely going to be focusing on is level design. And following that, a lot more animation work. I’m not sure when I’ll be working on an overhauled trick system, but that’ll definitely be part of the upgrade.
VR Development
In preparation for 7DFPS, I decided to learn how to develop VR-specific stuff in Unity. Following their starter tutorials, I built myself a room and placed a few objects in it. Including a mirror.
The tutorial covers things like locomotion, grabbing objects, objects having correct physics, and socketing. The last one is the act of placing objects in specific places, like putting a hat on a hook or on top of my head, like in that image there.
It’s given me a good jumping-off point for learning how all of this works, although I must admit, it is a little jank in places.
7DFPS
Following that jumping-off point, I decided to get started on building the 7DFPS game. To give a general overview of the game I’m going for. Imagine Pistol Whip but with your own music, and the gun handling of Half-Life: Alyx. I mentioned it in one of the videos I linked previously.
But for my idea, I’m setting up a spline, splitting it up into a random number of sections, and turning each section in one of three directions. I should also note that each section is the same length. That’s just to make my life a bit easier. After that, I have the player use spline animate using the song’s duration as the total time it takes to traverse the spline.
To top it off, I spawn a few cubes to act as buildings along the sides of the path. In theory, these were meant to act as cover points, but as I’ve been working on it I’ve gotten a bit lazy, and now they’re just decorative. The enemy generation is soon to follow, but I haven’t quite gotten it to work yet.
What I just recently started working on is putting the gun in the game. It’s actually been easier than I thought to get the model and animations set up. It’s not fully done yet, but it’s getting there. Following that will be enemy spawning, enemy AI, and then finally loading in user tracks.
There’s still a lot to do, and as of writing this, I’ve still got about a week left until the originally set deadline. But it’s my understanding that it will be extended out to the end of the month, like last year. Hopefully that gives me enough time to really make this something worth people’s time. And hopefully enough to give it a decent amount of paint so it doesn’t look like a mess of placeholders like it currently does.
Well, there’s your update. I’m working on the year-end GOTY list stuff like I usually do; hopefully it’ll be more on-time this year compared to last time. But I still have more than half of it left to write, and I’ve still got games to play. So maybe don’t expect it in as much of a timely fashion as I hoped.
Here I am again. I guess I’ll fill you all in on the things I’m working on.
Remember 7DFPS? The game jam I made a game for back in December? I’d forgive you for forgetting, the game I made was utterly terrible. However, there was one aspect of it I thought I could do something more with and that was the guns.
The models themselves were made and rigged by a friend of mine, but I did the materials and animated them. But I figured it would be a waste to have these guns made and not use them for other things, but I’m not really in a rush to make another FPS, so I figured I should release the assets… For a price.
I’ve redone all the materials, a lot more detail and wearing added. The model UVs are now way less of a mess, meaning much better texture maps to use for Unity’s materials. The next stage of these at the minute is re-doing the animations. A lot of the data was lost, so I need to either try and re-import them from the old files or remake them from scratch.
UPDATE: Three of the guns have finished animations now.
Not fully sure where I’m gonna be selling these, Blender Market, Itch, Unity Asset Store, and my Ko-Fi page are all viable options. Possibly all of them at once. They should be available near the end of this month, keep an eye out.
“How’s the side project?” is something you’re probably thinking of asking.
A small taste
Well, I’ve been making a bit of progress. I’m juggling my time between it and tweaking SICKHACKS.root so it’s not quite as far along as I would have liked. But you can run around, shoot a bow, and ride a hoverboard. Which is like half of what I want from the gameplay side of things.
Actually, GGJ helped me figure out a lot of the problems with the game, like how to properly separate the collision and animation stuff from the aiming target, which was a source of a lot of my woes with this project for the past couple months. The bow stuff needs so much more work, it’s a surprisingly complex animation when you consider that the arrow has to go from the hand to its place on the bow, and then disabling that when the arrow is shot, which is actually just an instanced object being shot out.
The hoverboard isn’t great. It’s quite floaty in the air and the collisions aren’t very precise. I’ve dropped through the level more than once. I have a few ideas of how to fix it, but I’m concerned that Unity’s physics system will break it some more.
There’s a demo if you want to play it, but it’s very, very basic. You can check it out below.
Now I’ve mentioned it a couple of times now, but I have made some small tweaks and changes to SICKHACKS.root.
The most serious of issues were FPS dependant movement where you would move slower at lower FPS or if there was an FPS drop and the camera jitter as the player would move down the track on the first level. Some fairly simple fixes. The original movement code didn’t use delta time so it heavily affected by the FPS. As for the latter, well I replaced the transform.LookAt code with some Slerp code instead and that seemed to help a lot. However, it is still affects the downward trajectory of the player, but I’m working on stuff that should address this issue.
On that note, I’m experimenting with different methods of turning the player towards the track waypoints. I’ve managed to create a system of turning the player via torque and allowing the physics to do its job. It does somewhat work in my prototyping level, but I haven’t fully sent it full the ringer yet with different terrain types, but that’s probably the next phase. But once I get the game to that point, I’m gonna make a decision about whether or not I’m gonna continue with this game.
Check out the updated version here:
As a last point on this, I finally finished the technical(-ish) video on the game, so give that a watch if you want.
It’s not the best video in the world, but it covers some of the stuff I wanted to talk about. It’s harder to make a video in that format than I thought. I eventually settled for reading a script with what I wanted to say and then mushing together the clips that are related to it. I think next time I’ll write the script first along with notes on footage I need and then edit it that way.
I’m not done making videos by the way. I have at least two or three more videos I could make from things I learnt from making SICKHACKS.root, especially on the Blender side. I’ve got about a dozen or so ideas for Blender related videos as well as Unity stuff.
Blender tutorials are going to be rough for me because I’m not super experienced with it, but I’ve gotten alarmingly decent with the shader material tools and there’s a few things I couldn’t find info on that I ended up having to learn how to make, like the sunset skybox in SICKHACKS.root, which is a cube map. Not only did I have to learn how to make the visual effect, I had to figure out how to get it on a cube map. So that’s probably the next video, among many others.
Now Sand Surfer is a side project, and it will stay a side project, and I need a new main project. I have been thinking of taking SICKHACKS.root (I’m getting really sick of writing this title out fully everytime) and turning it into a full game (With a new name, obviously). But that is likely going to be a very heavy project for me, from design, to building, and developing. It’s gonna be a lot of work, especially as a one-man-band. I really want to make more of it though, it’s just fun to play.
Another project I’ve been thinking of doing (Or even going back to) is Rotaction. Specifically making a sequel to it or updating it. I really want to re-do the enemy spawning code because the game is a bit bland after a while, there were also enemy types I never got to implement properly and I want to have another shot at them. Plus, I figured out a way to do multiplayer, but that almost certainly requires a sequel, not an update. But I do need to fix the phone version because the controls are pretty buggered and controller support doesn’t function correctly.
I’ve got a lot to think about, but for the time being, I’m just gonna get done what I can.
Right, I’m not sure how long it will be before the next post, and I’m not gonna attempt to guess, but I’ll see you next time.
Global Game Jam happened again, and this year’s theme was “Roots”. I started pretty early on this one, basically the day after the theme announcement, which happened on the 28th of January. To be honest, the theme kinda stumped me a bit at first, partly because I was doing some prep work prior to the jam that was focused on a hoverboard mechanic.
A small test of the hoverboard stuff.
Eventually, myself and my friend struggled so much for ideas that we just looked up the definition of “Roots” to if there was anything that would give us any inspiration. And I happened to stumble across the following:
ROOT COMPUTING: A user account with full and unrestricted access to a system.
Putting 2 and 2 together, I suggested making a hoverboard game in cyberspace.
First downhill test.
Early on the idea was to have a player constantly go forward down a track, avoiding obstacles. That was a pretty general core plan. Problem one: downhill movement. As you can see in the video above, it kinda works but it’s slow and stutters a lot. Furthermore, the original turning code from the previous prototype would go against the constant downward trajectory I was looking for. But more importantly, the track I made wasn’t straight, so the constant forward force I was applying would send the player off the track soon after.
There was one solution I knew would work well enough to keep the player on track, and that was to place waypoints along the surface of the track and aim the player along those, while maintaining a forward force in relation to their rotation.
My first implementation was pretty horrible. A lot of stuttering movement and the player curving into the waypoints excessively hard, killing the speed and handling. My first implementation relied on rotating the player’s forward using Vector3.RotateTowards(). After some changes, I switched it to Transform.LookAt(), and that worked significantly better. But there was still a problem. In the original test, from the video above, the board would match the downward slope of the map and match the slopes on the side. With the new implementation, the downward slope is matched, but now the player stays upright when on the sides. There’s also still the issue of the player turning into the waypoints themselves, but it’s pretty rare.
The curved/uneven map used in the first level ended up being a real pain for me, partly due to the restrictions I placed on myself. The waypoint system was just the first problem, the second issue was scaling. Simply put, importing the level directly from blender was too damn small so I had to scale it up, and then rotate it a bit. But when it came to placing objects on it, that was just a crapshoot. Every obstacle on the first level is placed and rotated by hand, and each one has different values for rotation due to the unevenness of the model. It’s way the placement is so messy.
Gravity was the big issue. The short of the issue is that the player cannot get down the slope on their own gravity fast enough. So I did two things, added the forward force (Previously mentioned) and a downward force. This kept the player moving at a good speed and stop them from going flying off when they hit a ramp. It isn’t perfect though, it’s still very much possible to go absolutely flying.
There was something I discovered while rewriting the code, and well here’s a video of it.
Rewrote the code and made some changes so I could perform tricks.
While I was adjusting some code, I was looking at my turning code from my original hoverboard code from the first video on this post. It works by applying torque on a specific axis, the Y axis (Or Vector3.up). As a bit of a fool around, I changed that axis, and noticed that it that it would make the board flip around as if I was doing tricks. But with the first implementation of my code, I knew it wouldn’t be possible to do. So when I rewrote it, I made sure to accommodate this feature. As you can see, it really elevates the gameplay. It’s my favourite feature.
I previously mentioned that I was working with my friend on this, well that isn’t strictly true. Most of the game is a one-man-army effort on my part. Although we started early, my friend decided that his contributions to the game would be minimal until the absolute last minute, so in the extra week or so that we had, he spent 4 or 5 days doing nothing. This was a problem, because my friend and I have an arrangement where we switch roles for each game jam we take part in. This time it was me on the programming and him on the art. Unfortunately, when you require specific assets, like a track or obstacles, and the person in charge of that isn’t making them, it slows down development.
So I made most of the assets myself. Which was interesting. I’m not a great modeller, and you can tell that the assets below are pretty simple. What I have been getting good at is the material work. So despite the low detail look, the materials look pretty good.
I know it seems like I’m moaning about my friend here, but I was very frustrated at the time and I’m still upset about it because I think I could have done more if I wasn’t forced to spend my time generating art stuff.
After learning some lessons from making the first level, I decided that the second level should be a flat plane. There’s only one waypoint, right at the end of the map, so the camera no longer breaks and stutters trying to follow each waypoint. It also fixes a small issue with the lateral movement occasionally being slower than it should.
The big benefit though is significantly easier placement of obstacles. I no longer need to adjust each object individually to fit it correctly to the level’s surface, and additionally, I can bulk edit large amounts of obstacles easily. Level generation become much easier once I switched to this model.
But, it is less interesting to look at. With further experimentation, I might be able to find a good middle ground to have interesting downhill tracks but with the ability to add obstacles to it much easier. That said, I really can’t say enough how much better the second level feels to play compared to the first.
The last level is just a cutscene due to a lack of time. It’s also the only real contribution my friend made to the game. And it was a massive pain in the arse to implement. In fact, I actually finished the last level before making the second level.
But let’s get into what it is and the implementation, it’s quite a story.
The level is a rail going up a tree root. Not interactable at all, more-or-less a cutscene. The rail is a normal mesh and on top of it is a bezier curve. Here’s the problem, Unity doesn’t recognise a bezier curve as a mesh. So I had to find a script to export the curve as a series of coordinates into a CSV file, load it into the game as a text file via the resources folder, convert those coordinates into Vector3 data, making sure to swap the Y and Z axis for each one. After that, I then can to scale the vectors based on the scaling of the objects it needed to be planted on, and then convert it into world space.
Now, all of that is easier said than done, but it took me a considerable amount of time to get working. It was worth it in the end, but I really should have figured it out days prior. I had to make it with less than 24 hours before the deadline.
I like to say that a lot of what I do is a “Learning experience”, and that gives me some motivation to challenge myself during these events. And this was a pretty big learning experience. I learned a lot of manipulating the physics system, generating assets and models for a game (Moreso than the 7DFPS jam), and generally how to build this type of game.
Since GGJ ended, I’ve had this game on my mind and I want to keep working on it weirdly enough. At the very least, I want that first level to play smoother and fix the issues with the waypoint system, or find a better solution to the problem. Perhaps I’ll experiment a bit.
Anyway, that was the game and some of my experiences with GGJ this year. All in all, probably the most productive GGJ so far. If anyone reading this thinks I should continue developing this game, let me know. I would love to get more feedback.
That’s it for this post, bit a long one. Till the next one.
I made another game for another game jam, check it out.
It’s not a great game, but it’s my third attempt at a first person game, and my first attempt at an FPS. Unfortunately the date snuck up on me quicker than I expected, and I spent late November and early December being unwell to the point that affected my productivity. So a lot of the ideas and mechanics in this are a little rushed and half-arsed. But as a proof-of-concept, it has some charm. If nothing else, I made a Liminal Space Meme Game with guns.
As I said, I was sick at end of last month and the beginning of this month. Literally the day of the last blog post was when I started to feel poorly. By the evening, I had a really bad fever and even vomited. Very unpleasant. It ended up lasting for about a week, although the coldsores lasted a little longer.
Well from one depressing thing to another, England got beaten by France in the World Cup. I really am not going to live to see the day they’ll win again. I could complain more, but it’s not really worth it.
Now for something completely unrelated; I’ve been getting a considerable amount of Blender tutorial videos from YouTube’s recommendation algorithm. Mostly ones about materials. I’ve been thinking about getting into making textures and stuff, maybe try and sell them as asset packs for Blender/Unity. That said, I probably need to find some unique ideas of things to make to compete with all the existing stuff out there. Maybe I’ll make some assets to use in Godot as well.
I might harvest the stuff I made for the recent jam game and sell off some of that. I imagine there would be a market for the guns in there. But I will need to split the profits with the friend who made the models. Although first we need to improve and fix the models a bit, give them correct sights and improve the animations and such.
Right, last thing: Rotaction is 25% off until the 2nd of January. Feel free to grab it at the reduced price if you want to support me.
I am working on the year end blog post with all the games I played and the top 10s, so look forward to that. Later.
Hello again. A thing I bought a year ago finally arrived, and it’s pretty sweet.
The Analogue Pocket is an FPGA emulation device that specifically plays GameBoy and GameBoy Advance games. FPGA is hardware emulation, not software, so it leads to greater accuracy in terms of emulation. This generally means less visual glitches but also has the downside of emulating the slowdown in games that would suffer it on real hardware.
Although you can play real cartridges on this thing, the OpenFPGA side is the most interesting part. You can just load FPGA cores made for it and then boot games off the Micro SD card. I have Neo Geo, NES, SNES, and Mega Drive cores on mine. Pretty much all the games I’ve tried have worked perfectly, and GameBoy games especially look gorgeous on the screen.
My major issue with the thing is that I don’t find it particularly comfortable to hold for long periods of time. Much like actual Nintendo handhelds. It’s not as bad as the 3DS or Switch JoyCons, which cause literal circulation problems for me, but there’s still things I would have changed.
I mean there is one more issue; the price. I think I’ve spent £400 on the thing all-and-all. It was £300 for the thing and dock, plus shipping, then the FedEx tax was £70 (Customs charges are a fucking scam), and then another £40 for a Micro SD card and UK USB-C plug. Yeah, it comes with a US plug. Be fair warned.
But I like the thing, and I’m gonna enjoy playing it. I actually did a stream soon after I got it where I played a bunch of games, check it out:
In other news, Indie LIVE Expo is happening soon. Why am I bring up here? Well Rotaction is going to appear during the first day when they discuss currently released games, so keep an eye out for it. But this is the first time one of my games has appeared at a major event, although it’s the second time it’s been promoted. The event will be streamed on the 3rd and 4th of December. Check it out, there’s loads of cool games.
Now, I’m going to talk about what I’m currently working on.
7DFPS (7 Day FPS) Jam is coming up in December, and I’ve decided that I want to take part. So I’m putting together a few things to practice and learn how to make stuff for it. I’m looking at stuff like Probuilder and Pro Grids for fast generation of levels, and learning how to do raycasted bullets with appropriate effects, as you see in the video above.
Now I know what you’re thinking, the Jam hasn’t started yet and I’m over here making stuff. Well, there’s no rule that says I can’t work on stuff a little early and most of this work isn’t going to be used in the Jam game. But it’s better I figure out these problems now, rather than during the Jam.
As for the side project I’ve been working on:
Well, progress is slow. I can shoot a bow now, but it’s a giant mess. Unity’s Rig Builder tool is such a giant mess to use that making it this far is generally surprising for me. But to explain the issue, layers upon layers upon layers. At some point I had to undo a lot of work and replace it with a canned animation, which is how I got the bow aiming and firing to work. Although I can explain some of that as well. When I started with the rigging, I was basing it on the idea of driving the player animation in relation to the bow. That was dumb, now I’m driving the bow animation in relation to the player, which is simpler to implement and has lead to better results.
Well that’s it from me for this time. Now I have to publish this before my power goes out. Which is a thing that’s happening today. Fun times. At least I have some books to read.
10 years ago today, while I was at University, after 4 days of trying to link up my domain to my hosting; this website was born.
And that’s all I have to say on the matter. I’m kidding.
I don’t really know what to say. My situation is very different these days, arguably worse. The MyGamingCommunity forum died, MoA moved to Discord, GameTrailers died, I got way into anime and started learning Japanese, I finished Uni in a horrible state, started becoming an indie dev, and then I started streaming again. Sometime after that, the COVID bullshit happened, it fucking made everyone’s lives Hell including me. Then I got a dog and my depression lessened.
She’s 2 years old now.
This would usually be the point where I would go on about what I’m currently doing and things for the future. But you already know what I’m currently doing and I have no idea what the future holds. I do know I’m gonna need to start earning some money. I’ve been thinking about stuff like Patreon and Ko-Fi lately, but I don’t know if it’s a good fit for me and the things that I do.
I’ll work it out.
Anyway, in other news, I took part in another game jam and made this thing:
Basically a Katamari-lite. Give it a go if you want.
As for the side project, well I’ll be getting back to that either next week or the week after. So keep an eye out on Twitch for it.
Anyway, 10 years. Hopefully I can get the funds to keep it running for another 10.
Well the weather is getting colder, so I guess summer is finally over. The season that is, my dog of the same name is doing fine.
7 years after graduating university, I have finally updated the “Uni work” pages of this site. Better late than never I guess. Annoyingly, there’s still a lot of stuff missing from the pages because there’s stuff I just don’t have anymore, or can’t post. There’s also things like documents and such that aren’t programming related.
Either way, it’s something off my whiteboard.
Anyway, you might be wondering what’s going on with my side project. Well you’ll have to keep waiting because I’m working on something else now. A certain place I hang out on, on a certain anime image board started a Asset Jam, a two part game jam where the first part has users submit assets for games, and then the second part has users make games with those assets. Well I didn’t make any assets for the first part, but I am making a game.
Behold.
The beach ball of doom.
It’s a game I’m titling “I MUST CONSUME”, and it’s basically Katamari. But instead of gathering items in a massive ball, you absorb them instead. I’m using the game as an excuse to get familiar with Cinemachine and a few other things. I was thinking of migrating the camera system in my side project to Cinemachine, and used this project as a test bed for it. I’m fair happy with it here, so I think I will be doing the work needed to switch.
I’ve got until the morning of October 15th to finish it. Hopefully I can get it done by then. As usual, I’ll be streaming development on Twitch.
Nothing else is going on really. Still trying to find a game industry job, at least they’re actually replying to me now, even if only to reject me. I’ve started uploading some of my regular gameplay streams to my YouTube channel, and getting some decent view numbers. I think I’ll be doing more of that, especially for the demo & VR streams I do on occasion. Maybe some highlight compilations at some point too.
I was warned that gaining viewers solely on Twitch was a fool’s errand, and they were right. So maybe I’ll try this method. On that note, I am thinking of streaming my game dev stuff to YouTube as well, although I don’t know what the state of restreaming is these days. Maybe I’ll take a look at Restream.
That’s it from me. I’ve got a busy few weeks and maybe months ahead, I’ll try and post when I can. Later.
Another Global Game Jam happened. This year’s theme was “Duality”. My friend and I cheated a bit and knew about the theme about a week before the actual event we had signed up for. In other words, the theme was out on the 19th and the jam site we joined started on the 28th.
We discussed a couple of ideas in the week leading up, I initially thought of making a bullet-hell top-down shooter with colour switching like Ikaruga, but my friend wasn’t into the idea, and wanted to make a platformer instead.
My original concept of the idea was a side scrolling platformer, where the player would jump on different coloured platforms, and the colour of the platform would change the background colour of the scene. That in turn would hide or reveal the platforms ahead of the player. This is the one concept we actually kept, but it didn’t become a 2D platformer.
I’m probably gonna ridicule my friend here, but he also gave me twice as much work to do, so he probably deserves it. When we prototyped the idea and I was giving him instructions on what we should do, he purposely ignored them and built a 3D platformer instead, and claimed his idea was “Better”. The kicker is that he did put in a 2D mode, but made it so the gravity was sideways instead of down, because he claimed being able to climb was a cooler idea. Which made designing a level even more difficult because it meant any 3D to 2D puzzle design had to revolve around a quite frankly undercooked idea.
By the end of it, we dropped the 2D side of things. Which brings me on to Godot.
I’ve complained about Godot before, but it continues to surprise me with how underdeveloped or obtuse it can be. Let me provide a couple of examples. The background colour changes. In Unity I could access the main camera, set the background to be a solid colour, and then in code, just change the value of the colour. In Godot, according to my friend at least, you have access a node, set a global variable to access that node, and build a script to access that to set it.
Another example is putting some UI around the map in the form of text tips or hidden words. In Unity there exists a text mesh feature that just lets you put whatever words you want wherever you want. There’s also UI element text which is constrained somewhat by the canvas, but for the most part is fairly easy to place and manipulate. Godot’s version isn’t anywhere near as easy to use. You have to build a viewport, build a control node (Which I didn’t do initially, I’ll get to that in a bit) and then attach a label or rich text label to that node, and then make a 3D sprite, and render that viewport containing the text to said 3D sprite. Now when I made the viewport without the control node, although the engine prompted me to edit the positioning via the 2D canvas, I couldn’t actually see the UI elements. So you need to attach the control before you can even manage that stuff.
When I complained to my friend about the latter of those examples, he then proceeded to take an hour and a half “Making it easier” and created a UI theme that in theory we could use to drop text anywhere. In reality it just took up a bunch of time and broke all the UI stuff that I made previously.
Other than the problems with Godot, making a 3D platformer provides its own issues. We were fairly limited timewise to implement mechanics. So we focused on making the level around the placements of the platforms, making a couple of additional platform types for destructible and moving platforms. Even with that, my level design experience is lacking at best.
The start of the level is just 3×3 grid that can demonstrate the colour switching, as well as a couple of destructible platforms. This then leads to some moving platforms, with some vertically following that, and so on. The 2D stuff had to be abandoned purely because there wasn’t really use for it, climbing walls isn’t useful compared to what I had planned about perspective switching. There’s a part about halfway through the level with a moving platform, and I placed a wall just above the platform forcing the player to jump to another platform and jump back to get around it. In one idea after settling on a mixed perspective, I planned the idea of having that be a 2D section, where they would see a wall, but when they switched views to 3D there would see a gap in the wall to go through. But with the physics set up that we had that my friend refused to change, it just wasn’t possible.
The sense of direction was also a problem when we watched other players play the game. Some players didn’t know where they were going or why. There are a couple of directional arrows in the game pointing at paths ahead, but perhaps we should have put a few more down.
Myself and my friend have done multiple game jams now, and something is clear, we have very different views on game design and development principals. Part of this is due to our choice of engine, I typically use Unity and he exclusively uses Godot for reasons beyond any human understanding; and that often causes problems in design visualisation and fully understanding what the other is capable of. Furthermore, he mostly exclusively insists on creating 3D games despite the fact that I have very limited experience with things like Blender, but it’s my turn to do art, he still wants to make 3D stuff and then butcher my sprite and jerryrig it to 3D meshes. I’m just complaining at this point.
After we finished this game, we did joke to each other that we had made a better game than Bubsy 3D. Considering how difficult it can be to make a 3D platformer, I’d say we at least did better than that.
As for things to do different, well if it was possible, I would have liked to properly explore the perspective switching idea. Or just keep to the original 2D idea I had and add in some of the more physics based sections, like the pachinko machine. I don’t really feel like making a Unity version to be honest. I liked the concept of Bunny Jammers enough to do something more with it, but I think this game proves its concept well enough that it’s unnecessary.
If we take part in another game jam though I might try and convince my friend to install and mess around with Stride, which is C# game engine I’ve been thinking of looking at for a while now. If we can both find an engine with like and want to use, it would probably increase our productivity. Possibly ditch the idea of switching roles each time too.
If you want to play the game, download it here or play it in the browser: