Project "Jet Rat Speedway" (formerly known as Project Hovercats) - Procedurally generated arcade racer

Hello everyone! :slight_smile: For those who saw one of my recent posts on my other project’s WIP thread (Link: [WIP] Alternator Power: (New working title) Arcade racer for Windows 10, Android and SteamOS+Linux - Community Showcases - Unity Discussions) and was wondering “another project?! where is it?” here it is; an idea born from something my mother said about our pet rats at home, so…

I bring you Jet Rat Speedway! (Working title, may be different on final release!) 2017 edit: The game is now officially named “Plasma Fauna” as the game will feature more than just rats as playable characters. :slight_smile:


And again, this is an android game! :slight_smile: Will also make a high-end version for PC. This project was basically a pet project of mine that stemmed from a dynamic track generation tool I built myself!

“Wait, did I hear ‘Dynamic track generation?’” Yes, every track in this game is a single straight road twisting upwards into the sky. I also aim to make at least six different base environemnts to generate tracks with, that way, there’s a bit more variety.

And, like neoDash, (my other project!) there are power-ups. Only really two or three this time (I wanted to keep things simple for this project, that was the point of it) but power-ups noetheless. atm, I plan to have:

  • A grenade (this one is already in the game! :))
  • A projectile of some sort. (Don’t know what yet)
  • anything else you guys feel would be suitable! :slight_smile:

As for visuals… I wanted a blend between N64-style shading and realism, and the turnout… is actually fairly pleasing to the eyes! I also added some minecraft-y visual flare (no pun intended) in some places too.
This game is also the first to use a custom designed font by me, so feel free to critique! :slight_smile:

And, last of all… WIP screenshots:

Yes, thats the grenade… :smile:

Anyway, let me know what you guys think. :slight_smile: I also aim to use this game as a testbed for testing out Unity 5.1’s UNET capabilities, given it’s simplicity (and addictiveness… very surprisingly, it actually is, trust me! :smile:)
Such findings will be incorporated into the other project. :slight_smile:

And yea, since this is the first time I have “themed” a game, suggestions of what kinds of power-ups would suit a bunch of rat-shaped madmen are welcome! :slight_smile:

All the best to you other devs!

-FuzzyQuills

EDIT: Captured some new screens up top! :slight_smile:

2017 edit: Please note this information is not current, as the mobile version is postponed to free up resources on developing the PC version for my uni assessment. (Time constraints means I have to abandon the Android builds for now)

1 Like

For those interested in gameplay, it ian’t much atm, but here’s a decent play session:

atm, Google Drive’s converting it, so you may have to wait a bit… :smile:

EDIT: Converting’s done, enjoy! :slight_smile:

Unless you change the player model I’d say “Jet Rat Speedway” is a good name. :smile:

1 Like

Fair enough then! :slight_smile: Like your profile pic, BTW. :stuck_out_tongue:
I’m mainly tuning a few things before making any more major changes. (Even though the graphics side is actually quite performant, it does have a couple of things worth tuning!)

As for major changes… I might as well pop this up:


Just the starting segment of the forest environment! :slight_smile: The other segments (and my rock textures. ;)) are on the way soon… along with the rest of the game of course. :smile:

I also have a good projectile idea now; it’s probably going to be some sort of torpedo. :slight_smile: Perhaps a light-speed torpedo, who knows? :slight_smile:

Changelog:
VISUALS:
- Per-pixel specular removed, shaders tweaked: This was necessary to squeeze a bit more performance out fo the game. On top of this, the shader wouldn’t compile properly in OpenGL with it there the other night for some reason… :smile:
- Texture resolution raised up a bit. Now the desert looks a bit more lively… :wink:

CORE:
- Forest environment completed. Now the main menu presents a “select environment” option, where you get to pick from the desert road and the forest as bases. There are some issues on my tablet however, where sections close to each other cause performance drops. (I am yet to add an occlusion culling system in place to drop this factor)
- Added a torpedo: Now the track is a bit more chaotic! :wink: Rats, grenades, jet bikes and ramjet torpedoes ensue! :slight_smile:
- Physics and frame timing tweaked for better performance and playability: After finding issues where I either got sloppy steering or bad performance, I decided to try locking both the physics and the game framerate to 30. the result was the best I could get, so now everything is clocked to 30FPS for performance! :slight_smile:
- Added “rumble pak” functionality: On supported devices, the phone/tablet will vibrate when hitting an explosion, running into a wall, or if the jet bike touches the ground a little bit! :slight_smile: (Occasinally happens when you land on the ground from a massive fall)
- Other performance tweaks and fixes. :slight_smile:
EDIT: Primitive rubber-banding: when you are in last, you only get torpedoes, allowing you to easily catch up. In first, you only recieve grenades! :slight_smile: atm, only having grenades in first is a workaround for the hit-yourself glitch with the torpedoes, but it will stay when I fix it. :slight_smile: Means that useless torpedoes don’t come about as easily!

ISSUES:
- Torpedoes don’t respect the player yet: atm, if you are carrying a torpedo when you pass an opponent into first place, firing that torpedo will blow you up instead. This is also why it’s possible to run into the explosion and spin out yourself when hitting an opponent in close range!
- Odd lag sometimes when all 6 rats are on screen: I still haven’t worked out why this is the case, it only does it on my tablet. (My mum’s Samsung Galaxy J1 runs it fine)
- Respawning needs work: atm, if you fall off the track donw the side, if you are a bit too far out, you miss the trigger, and fall for a good 30 seconds before hitting the emergency trigger on the bottom of the map. I will be fixing this with a bounding box check for seeing if the rats are inside the segments themselves, rather than checking outside the segments for out-of-bounds players.
- (Edited 9/8/15) Slowdown sometimes when two rats are colliding: When a collision with another rat, or a stage object happens, a spark lights from where the collision occured. atm though, this is a bit of a massive Garbage Collection hog, as it has to spawn and destroy a single spark prefab multiple times! I do know the fix for this, I just haven’t implemented it yet. Oh, and the upshoot? When two AIs are very content with turning a direction, they often “grind” against each other trying to get past, and this sets off a massive stream of sparks… I wonder why my tablet’s lagging… :smile:

COMING SOON:
- Two other environments: I plan on adding a beach/ocean road environment, and a futuristic space tunnel environment! :slight_smile: Two more will come after this, I haven’t worked out what they should be.
- Boost pads on the tracks and as an additional power-up.
- Profile menu.
- Primitive multiplayer: This will require upgrading to Unity 5.1.1, so wish me luck! :slight_smile:

Change Log:
VISUALS:
- Added rain to forest biome: This gives the fog a good excuse to stay around, for performance reasons… :wink:
- Massive performance increase for low-end devices after some shader tweaking: A few days back, since I aim to emulate the N64 visuals engine the best I can with this game to give that sort of “retro” look, I also wondered something; how many lights was the N64 actually capable of rendering at once? This question lead to the decision to drop the number of lights to 4 instead of 8, of which fixed several issues with slowdowns!
- Speaking of lighting… Added lights to explosions and missiles: When an explosion goes off, the area around it now gets illuminated! Definitely suits the forest really well. :slight_smile:

(NEW!) RESEARCH:
- UNET Multiplayer may be more advanced than you might think by release: I have been using another project to test UNET, and so far, apart from some issues probably caused by poor scripting, I may be able to use UNET well enough to get decent online action in! Only gripe is that I have to make a massive switch to C# to use the networkbehaviour type. (The project was started before I got ahold of C# scripting!) there has also been some interesting (negative kind) things going on with SyncVars lately… :smile:

CORE:
- Fixed self-shooting glitch: Now if you come into first with a missile, you won’t shoot yourself anymore when deploying it. It also stops the possibility of being blown back by your own explosion when hitting an opponent at close range… :wink:
- slowdown caused by all 6 rats (sometimes less than that) being on-screen fixed: This was a knock-on effect from the shader tweaking. Should mean that older devices run this perfectly now!

COMING SOON (In addition to last change-log, should probably move this to first post… :smile:):
- Additional elements in environments: This mainly includes extra background elements to spruce up the less visually appealing stages. (Desert environment, I’m looking at you! ;)) However, some course-affecting elements may come in, so stay tuned!
- Motion Blur (Possibly…): When doing an image efects test on PC, I accidentally left the motion blur on when building to android later that night, and was surprised to find that it worked without slowdown on tablet! So you guys, if you want it, give me a shout! :smile:
- New Font: I am re-working the retro font I built for this game to be better spaced and nicer looking than this one. (Some characters were either poorly sized or poorly spaced, giving odd results!)

And, one thing I should have done last changelog, but couldn’t get around to it, is post screens of the forest, so here they are!

That’s all for now. :slight_smile: May post a video later.

The standard shader should run well on mobile devices, I don’t see why there’s a slow down. If you want some script optimization help, PM me and I’ll see what I can do with what you have to make it faster, I’ve got a few tricks up my sleeve to save some ms.

1 Like

Most mobile devices… I don’t think my pendo pad was included in the test subjects. :wink: Last time I checked, it didn’t perform well at 30fps. BTW, the changelog above (the second-last post) is a bit out of date; the lag issue with all 6 rats was fixed by reducing the light count in the shader for-loop.

As for script optimization, I am planning on switching to C# for UNET, that may speed things up a little, as I have heard that some JS code compiles a bit oddly when it comes to optimizing it. Of course, it wouldn’t hurt to send over some of my scripts for a check, I suppose… :smile: Might PM you tomorrow with them. :slight_smile: I am also planning on fixing the sparking lag with a different implementation of the effect. (Current one eats up GC cycles!)

EDIT: I also forgot to mention that I do plan on releasing a PC version of this game that will most likely use the standard shader, so that’s a plus. (It will be cross-platform compaitble in the network multiplayer department too!) This same plan goes for my other project as well.

Changelog:
VISUALS:
- Full-screen bloom and motion blur: These two effects are turned off by default, but are accessbile in the options menu. Tested on Pendo Pad 4.0 (about 10fps with bloom on) and Samsung Galaxy J1 (30-60fps)
- Sucker Bomb and Torpedo have their final models done:
2323242--156707--upload_2015-10-3_18-46-49.png

2323242--156709--upload_2015-10-3_18-47-41.png
- New lighting code in vertex shader: Now the shader only calculates ligthing if the light color luminance is above 0, a behaviour that doesn’t occur in any of Unity’s built-in vertex-lit shaders. (Can be seen by opening a fixed-function shader’s generated code) Also added spot light attenuation as well as a multi_compile switch to skip certain expensive operations for directional lights, since attenuation is always 1 (or 2, can’t remember which) for directional lights.
- (LATE ADDITION) Gradient-based ambient lighting removed: it no longer looked that good after making the new code, so I now use plain ambient lighting… :smile:
- High Framerate option added: Now it is possible to play the game at 60fps frame cap rather than 30fps, so long as the device is fast enough. Recommended to have this on when motion blur is used.
- Drawing distance increased in the forest environment: Had to do this, as before, it was hard to see if you were going to run into something at times!
- New start line: now, instead of the two torches, I have a big start line beam. :wink:


- New explosion effect: Now the explosions are a bit more lively! Screenshot:

The bloom effect’s also turned on here… pretty! :slight_smile:

CORE:
- Game now has a logo:


Rendered in Cycles using Blender. “Hello players!” :smile: The pyramid in the background may show up as an extra element later in the desert environment as part of the “extra track elements” thing I mentioned in a previous post. :wink:
- ENTIRE PROJECT CONVERTED TO C#: This for some reason actually gave a farily noticeable performance increase! :slight_smile: This also allows me to integrate UNET properly at some point.
- Collision sparks no longer lag: By repositioning a particle system and firing it, the spark effect no longer generates unnecessary garbage collections! :slight_smile:
- Options button finally does something; it now opens a graphics settings menu: This may change into a full-blown option menu at some point. Profile info may show up here also
- Ranking system now runs at 4fps rather than every frame: This speeds up the game on devices that take a while running IComparer operations, like my Pendo Pad 4… :smile:
- THE GAME NOW HAS SOME SOUND! :slight_smile: The soundtrack may be coming soon. Jet bike engine sounds aren’t present yet either. Currently, the bomb and torpedo have sound, as well as the explosions.
- Item generation is now better distributed: Before, the track generator would sometimes generate way too many item spawns, of which turned the racetrack into a battlefield really quickly. Item spawns are also grouped into six now, arranged in a triangle shape for each lot placed.
- Pause menu added: It is now possible to pause the game by pressing the back button on the android device. (Esc key or Joystick Button 9 on PC) Two options, “Continue” and “Quit” anre present… and somewhat self-explanatory. :smile:
- (PC feature only at the moment…) Bomb throw: If you push the analog stick up (or press up on arrow keys/Dpad) when deploying a bomb, you can and will throw the bomb in front of you. Throw distance depends on speed and angle you’re travelling. (unintentional mechanic)
- plenty of other little fixes here and there, there are that many that I haven’t really kept track of them…(Whoops!)

ISSUES:
- Flickering on meshes with edge splits when batching is used: Any pointers for this one? :eyes:
- Respawning isn’t fixed yet: Still possible to fall forever and ever when too far out of bounds… :smile: Doesn’t seem to affect AIs though, as they aim for the center of the course when going out of bounds, putting them in the correct triggerbox when falling…
- Explosions sometimes lag at the start of the race: This could be fixed by making it a pre-loaded asset. Would have to test this one.
- Picking up another item box with an item equipped overwrites what’s in the slot: This shouldn’t happen, and can be a pain in the a** when you get a torpedo, but then dash through another box and end up with a bomb instead…
- Bombs sometimes fall through the floor: Only really happens when you throw it in front of you, and that’s thanks to discrete collisions… :smile: Depends on the angle of the surface it collides with as well.
- Sometimes, throwing a bomb after being hit by an item sends it flying REALLY FAR! I don’t actually know the reason for this one… could be how it’s spawning!
- AIs often get stuck behind the rocks either side of the track in the forest environment: They usually can free themselves after a while, but still… :wink:

COMING SOON:
- Primitive UNET multiplayer: I wonder how complex this will get… :smile:
- Profile and Save file.
- Multi-item pickup: I am planning on adding a feature where picking up an item box sometimes gives you more than one of the item you pick up. How many you pick up will be a random number between 2 and 10. (SO MANY TORPEDOES!!! :smile:)
- Finalized mode layout: I haven’t quite decided how this game shall be played yet, so as of yet the game modes layout isn’t drawn up. Of what I have come up with so far: Your usual racing mode, a battle mode, some sort of single-player mash-up, and obviously some sort of online multiplayer. Again, not finalized, feel free to make suggestions! :slight_smile:
- Animation: The rats need a bit more character I think, so at some point, I will be adding animations for the following: throwing/dropping items, boosting (will come with boosting mechanics and items), an “I got you” animation (like Mario Kart… :smile:), a hit animation. Currently, there’s an animation where the rats run up and jump onto the bikes at the start of the race, and that’s it.
- I may be going to try out IL2CPP for android soon: I am yet to download the Android NDK for it though, so stay tuned for when I do get aroud to doing this! :slight_smile:

1 Like

ChangeLog:
A note to everyone before I begin; being that I haven’t done much since last post and now, there’s only a small amount of changes and things to list here. (Well, apart from my sphere mapping mini-paragraph… ;))

Anyway… onto the changelog! :slight_smile:
VISUALS:
- New Lens Flare: I decided to drop in my own lens flare after realising that the original one I was using (a unity version of Brigade engine’s 3.0 flare) didn’t really fit the atmosphere. :wink:
Here’s the flare as viewed in the forest environment:


- (Experimental) Realtime sphere mapping: This technique is what the N64 used in some games to do realtime reflection. True, it isn’t accurate like cube mapping, but it’s good enough in some situations, such as a racing game. Plus, it’s a WHOLE LOT FASTER than rendering six cameras for a cubemap! (The spheremap is also quite small, like the N64, aka. 32x32, making things amazingly quick at times!)

Being that it’s experimental, it isn’t in the mainstream game yet, but it does look good on a sphere! :slight_smile: (I also tested the main menu jet rat with it) I did however find that switching to spheremap coordinates actually improved one of my static spheremaps on the jet bike. (Looks like a fancy sparkly BRDF spheremap now… ;))

One more note; the realtime spheremaps were improved by using a modified version of Unity’s fisheye lens on the reflection camera, but due to the exorbitant atan2 functions in the shader, I don’t use this in real-world situations, mainly due to mobile’s poor handling of such functions! Likewise, I emulate the N64-way; just render without the fancy frills…

CORE:
- Item overwrite bug fixed: Now you properly hold the item you have rather than losing it on the next item-box pickup.

ISSUES:
- Other than the ones posted previously, no new ones. (Batching flicker temporarily fixed by disabling dynamic batching)

COMING SOON:
- Same as above post… :smile:

EDIT: New entry added (forgot to post it too!)

new playthrough! About time I uploaded a gameplay video… I can see a very obvious difficulty issue though; it’s too easy half the time!
Link: JRS_2015_10_07_13_23_19_563.mkv - Google Drive

Also, I recommend muting your speakers, I accidentally recorded with the mic on, so now there’s background noise mixed into the audio! :smile:

As always, you may have to wait for google to process my clip… :wink:

Never expected to post another one so soon! :smile: It won’t have a coming soon section, as last one isn’t quite fulfilled yet! Check below, I ended up posting one in the end…

ChangeLog:
VISUALS:
- New Main Menu: Same options, different art… :wink: Now it’s more dynamic:


- Reflection mapping added as a menu option: I gave the real-world test a go, and it looked pretty damn funky, so now it’s possible to turn on realtime reflection mapping in options. Really improves the desert level! :slight_smile:

As a bonus, if the setting is turned on, when loading the main menu again, that setting’s reflected (no pun intended ;)) in the jet rat’s bike on the main screen. (Screenshot above actually has the setting on!)
CORE:
- Game speed adjustment: After porting to C# a while ago, a lot of my references broke, so I had to rebuild them, and in the process, I half-forgot what speed I actually had everything going at, making races a bit too easy. Now the bikes hurtle along at 30 units of speed!
- Re-arranged starting grid: I finally worked out why the game was easy to beat; it was actually the starting grid layout! Basically, the old layout mean’t that the AIs bunched together at the beginning, making it too easy to take the lot out with one bomb. Now the starting grid is more like mario kart/f-zero where the cars are in rows from left to right, with a slight shift backwards on the second one. (viewed sideways below) This time though, the AI’s spread out… at least the game’s a bit more difficult now!
2329796--157316--upload_2015-10-8_8-40-59.png
ISSUES:
- Reflection mapping isn’t quite optimized yet: Currently, it renders the reflection at 15fps, but being that all the reflections render all at once, this causes stuttering on some devices. I may be planning on adding a global time-slicing option so that not all of them are rendered at once!
EDIT: On second thought, I will add ONE thing to the coming soon section:
COMING SOON:
- With the last two environments I mentioned, I also got some good ideas for a volcanic environment after playing Super Smash Bros. Brawl… The castle siege stage (well, the third underground section) looked like a good place to get ideas for texturing anyway.

Looks good, as usual, I’d be willing to help optimize this game and get it running better if needed.

Thank you, will definitely let you know if I need help with anything. :slight_smile:

EDIT: Actually, I may be posting a bit later on beta-testing. Would you be interested?

Reminds me a lot of Mario Kart, great game. :slight_smile: Keep it up!

Well, again, I will soon be writing a post on beta-testing. would you be interested? :slight_smile:

I would most definitely be interested!

Righto then, when I finally get IL2CPP to work, I will write up on beta-testing two builds (One’s normal, the other’s… IL2CPP. :smile:)

ChangeLog:
CORE:
- Added sound for jet bikes: It’s a WIP though so don’t expect whizz-bang sounds yet… :smile:
- Changed the way bikes accelerate: Due to the engine noise sounding ridiculous with a high acceleration setting, I made adjustments that make the acceleration moderately quick, while the engines now sound better. :slight_smile:

BETA TESTING:
Ok people, I am now ready to send out beta APKs. I finally got IL2CPP compilation working, but I am yet to test how it works with the game, so I will release two APKs. Other details below. NOTE: These links WILL be removed if:

  1. the game builds are updated.
  2. I get to release stage, at which point the reason’s obvious!

Also… How to play the game (NOTE: Controls are WIP, I will add a no-tilt option soon! :smile:):
Steering: tilt device left and right.
Acceleration: keep finger on the white panel in the bottom-left corner to accelerate, release to slow down.
Use item: when you break an item box, a panel will slide out from the right side of the screen. touch it to fire.
Pause: press (or touch) your phone/tablet’s back button to pause.

To use graphical effects, head to options and try out each one and see how your game performs afterwards. (Also worth a look at the experimental reflection option! :))

Jet Rat Speedway Engine Ver. 0.3.0: Normal Mono2x build:
This is the normal build of the game. Has all the latest changes.
LINK: taken down, go further down for new build! :slight_smile:
File size: 20, 615 KB (20MB approx.)

Jet Rat Speedway Engine Ver. 0.3.1: IL2CPP experimental build:
Taken down due to unity 5.2 bug… :frowning:

For those who are interested in beta-testing this game… let me know by PM so I can later lock-down the links a bit better. :smile:

EDIT: Forgot the pause button, added to instructions (whoops!)

Okay, tried it on my HTC One M8. Few things:

  • Add a different control style, too. I personally like this style:

  • My phone kept vibrating when playing it, also.
  • No sound appeared, turned up my volume