It’s very early, but I need the feedback. This is Cybersurfer, a follow-up to my GGJ game SICKHACKS.root.
I’m not gonna retread the same things that are in the video, you can watch it yourself, but I do want to talk about what I want the game to be going forward as well as some of the games I’m gonna be looking at or re-looking at.
But as I said, I’m not terribly happy with where the project is at the minute. It plays OK, but it definitely feels like it’s lacking something. Plus the physics driven hoverboard is now more of a hinderance as I look towards different level design aspects. Specifically verticality. The game Distance as well as Wipeout are my two points of reference in terms of what kind of level design I want.
And here’s where I have to admit that I took too long writing this blog post that everything in that video and previously written is now outdated.
Following the that video, I did another stream where I played a handful of games and made notes about various aspects of them, and how they handled the same problems I was having. It was a very informative stream and helped me realise that I was trying to over design everything.
And now, as I’m writing this, the whole physics driven hoverboard system has been scrapped. And the spline based system that I attempted to follow it with has also been scrapped.
The new system is fairly simple, a player model on top of a collider acting as a cushion of air. I’ve ditched the waypoint system, and instead I’m just letting the player control their forward speed and turning themselves, and it’s working out pretty well now. On top of that, I have a bit of rotation to the player model when they turn and a sine wave to make the model bob up and down like they’re on a hoverboard.
It’s a night and day difference and a definite improvement.
Next up is getting the player to stick to the track regardless of the verticality of said track. I’m using Distance’s magnetism as a reference here. My plan is just use a downward force while grounded, and magnetise the player to surface once they get close enough. I suspect it’s going to be more difficult than I’m envisioning though.
Learning To Rig
I recently had a Twitch stream where I taught myself how to rig a robotic arm model.
It’s a very basic model with some problems due to some of the ways I was trying to rig it, but once I figured out the issues it was too late to re-do the model. However, the animation side of things turned out alright.
The next stage of this is getting more familiar with IK stuff as well as other bone constraint systems.
YouTube Content & Future Plans?
Demo Day 51 happened, and although I did not submit a demo, I did stream other people’s demos and provided as much feedback as I could. Here’s the playlist. I do want to get more content on to my channel as it would likely help my Twitch performance, but it’s difficult to find the time to make stuff that would be palettable.
YouTube’s algorithms prefer shorter videos, so uploading whole VODs would probably be a bad idea, but I could cut down my playthroughs into highlights. But requires time I just don’t really have, either to watch 30 to 60+ hour playthroughs to find stuff worth putting it, or to find time to edit it down. But I think I’m gonna be forced into doing it because I am at the absolute mercy of the algorithm gods.
As for future plans, well it’s coming up to the 78th anniversary of the end of WWII, and I want to commemorate it by playing through all of the WWII Call Of Duty games. Those being COD 1-3, World At War, Finest Hour, Big Red One, and WWII. I’ll probably using that stream as the experiment for creating highlights for YouTube, alongside uploading the VODs of it, possibly. Either way, the playthroughs will be available in my Twitch collections page as per usual.
That’s it for the time being. There’s probably more I’m forgetting to mention, but I took so long in writing this blog post it’s better just to move on. I’ll see you next time.
I haven’t made a post in a while, but I’m back, and with a new demo for Sand Surfer. There’s been a few changes to it, mostly focusing on the player character and smoothing out all of the movement and playability of it.
The bow now has proper animations, and a better aiming system. The movement feels a lot better. Jumping has been fixed. The player can now slide by crouching while running, and so on.
Considering that I don’t get anywhere near enough time I would like to actually work on this thing, I’d say the progress is somewhat decent. But now it’s going back on the back burner so I can work on “CyberSurfer”, a derivative of SICKHACKS.root, my game from Global Game Jam earlier this year.
CyberSurfer will be my next main game project, and I’m gonna try and really get this one out into the mainstream more. Not sure how, but I’ll probably have to start shilling much harder.
In other news, my shotgun asset pack was rejected from the Unity asset store and I’ve yet to receive any reply to my request for more information. However, I have decided to sell it anyway on other storefronts.
It’s on Itch.io (Link above) as well as my Ko-Fi Store. I will try to expand on the Unity asset when I can and re-submit it when I’ve done that, but there’s only so much I can do.
But while I’m here, I’ll explain why it was rejected; it was “Too Simple”. No elaboration on that point whatsoever. Didn’t tell me what I needed to add or what was unsatisfactory. Companies do this shit a lot these days and it’s been driving me mad. Vagueness. Deliberately refusing to provide detail or specifics and then using that as justification to reject, ban, or otherwise punish customers and developers.
I don’t like it, and you’re seeing it a lot. Throw in power-tripping jackasses without even a modicum of personal responsibility to not abuse it or use rational thought to understand what people are actually saying, and the whole thing gets worse. Ever had to deal with shitty forum moderators? While they got a significant promotion and are now ruining the Internet at large.
Anyway, my ranting aside, you can now use those shotguns in your game if you want to.
Next up, I put out a new Blender/Unity tutorial.
I’m cooking up another one on Skyboxes and after that, I’ll be making a tutorial on materials from Blender into Unity in both URP and HDRP.
Outside of game dev and other projects, I went to Belfast for the first time in 3 years. It’s changed a bit, a lot of the shops are different. I had Yakitori for the first time, there was Japanese fast food place that did it, although I’d struggle to call it fast food as it took quite a while to come out, I almost finished my meal by the time my friend got his. But if I went back, I’d probably get some of the larger items like the Katsu curry bowl.
While I was in Belfast, I had a list of things I wanted to get. The first item was a new backpack, my old one has had a hole in it for some time (Which I did patch up pretty well) but I decided that I should replace it. Got a nice one from a surplus store. Next on my list was a Swiss Army Knife. I was intending to get one when I turned 18, but I never got around to it, but I have one now. It’s quite stiff getting some of the tools out. The knife is sharp, very sharp, as the cuts on my hands currently might suggest.
The last thing on my list was straight razor, which I forgot about. So instead I went to CeX and got some more Xbox games for my collection. Dead Or Alive 3 and Call Of Duty: Finest Hour are the two big ones, plus the game for the 4th Harry Potter book. I’m trying to get a full collection of those games, but it’s gonna take a while, and likely get expensive. I also bought some anime, Haibane Renmei and 5cm Per Second.
And for the actual reason I went to Belfast: I saw the Mario film. It’s OK. It’s a kids movie and it’s fairly inoffensive. My only issue with it is Peach being overly “Kick-ass”, to the point where I wonder what her character arc is even supposed to be. Bowser’s maddening love of her gets a bit weird too, but that might just be Jack Black’s portrayal. Not that I have anything against the man.
That’s it for now. Reminder that I stream on Twitch most days of the week during daytime hours, so check that out. Till next time.
I’ve spent the last couple of week tweaking and changing how the hoverboard works inside the debugging level I made for SICKHACKS.root for testing stuff. The biggest change comes from the camera, I’ve replaced the fixed camera with a free look camera so you can rotate around the player, with additional adjustments to fix the camera bounicess.
The board handling isn’t that much different. The board now rotates a bit as you turn, and the physics have been adjusted slightly. I did do some other experimenting with different ways of producing the hoverboard effect. One involved putting the board on top of a couple of sphere colliders and another involved using wheel colliders. The latter was terrible, and the former worked in a sense, but still felt bad, especially when turning. So I’m sticking with the physics driven system.
Next thing to work on is gonna be the archery and general player movement. This project is gonna be a long one.
Next up, an update on those guns.
Lever action reload animation.
The guns are done. The animations are made, the materials are made, and they’ve been exported as Unity assets and general .FBX models. Unfortunately I have to wait for Unity to approve the asset pack before I can promote it as available. But the pages for Itch and Ko-Fi are itching to be made public. So as soon as they’re ready, I’ll post here about it.
I’m pretty bloody happy with how these turned out and I hope folks make some interesting stuff with them.
And lastly, an update on SICKHACKS.root.
There is a new update, v007. It is not a James Bond reference, it really is the 7th build of this game I’ve made. This is the last update, and it’s pretty substantial.
The board handling has been redone and now feels a lot more hoverboard like. Level 1’s colliders have been changed so you can’t get out of the level easily now. The camera system has been tweaked. And finally the player collider has been slightly reduced in size so that there’s less random fails.
I AM NEVER TOUCHING THIS PROJECT AGAIN
But that is not the end of the story. I am working on a new project under the name “Cyber Surfer Prototype” that takes all the ideas I’ve been working on with that game, and making it into something more worthwhile. It’s gonna be awhile before I get to work on it as Sand Surfer is my current priority until Demo Day 50 is over.
That’s everything for the time being. Again, I’ll make a post once those gun assets are available. I’m also planning a trip to Belfast soon, which will be the first time I’ve been there since 2020. 3 Goddamn years.
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.