Devember 2021 - River Rogue | Legacy Raid ( a tribute to River Raid and Rogue Legacy )

So, I would like to try to create web version of the best game ever, River raid on c64… coincidentally first video game for me - River Raid on the Commodore 64 - YouTube

The stages are auto-generated so there will be a lot of work with that algorithm, also no canvas only html elements, also JS timing is shit so that will be fun…

There’s a lot to do, no idea how to do it but I will hopefully stumble through it usually as I do.

Will update this thread with info…


Update:

So I was thinking a bit about how to make this game at lease somewhat interesting ( endless random generated runner is usually fun for like 2 minutes ) and thought about combining gameplay with some mutators and persistency SOOO, as a good PO, I will shift this mid-project just a bit and expand the scope and combine river raid with rogue legacy…

Basically, first time you start with default game, after death you can pick between random 3 out of 10 pilots and every one of them comes with a unique mutator to the default character ( if you played Rogue Legacy, you know what I mean )…

Also I will add cross-run counter which will be defacto game progress and after certain number you will face the boss and can win game…


REPO - River Rogue | Legacy Raid

LIVE LINK - notbigmuzzy.github.io/riveraid/

3 Likes

Repo : GitHub - notbigmuzzy/riveraid

For now I created a repo and committed initial stuff.

I setup the game screen, its a grid of 32x20 “pixels” which will handle all the graphic stuff. Basic scrolling is done, with the basic level generation logic, and game spawns player and it moves :slight_smile:

Obligatory ss

1 Like

I worked more on “graphics engine” more ( lush forest on the river banks, mountains and factories are comming next ) and added basic enemy type

Also created fire mechanics, fire pellet destroys enemy

Also added the bottom bit for stats ( currently only placeholders )

Added couple of things more:

  1. various enemy types
  2. initial logic for enemy movement
  3. score now actually tracks so it’s a game, yay
  4. tweaked some config values some more

ss:

So I was thinking a bit about how to make this game at lease somewhat interesting ( endless random generated runner is usually fun for like 2 minutes ) and thought about combining gameplay with some mutators and persistency SOOO, as a good PO, I will shift this mid-project just a bit and expand the scope and combine river raid with rogue legacy…

Basically, first time you start with default game, after death you can pick between random 3 out of 10 pilots and every one of them comes with a unique mutator to the default character ( if you played Rogue Legacy, you know what I mean )…

Also I will add cross-run counter which will be defacto game progress and after certain number you will face the boss and can win game…

I also did the initial graphics assets thingy…

Also I’m calling the game:

“River rogue - Legacy raid”

I was born for marketing

1 Like

It took a bit more effort than I thought but the groundwork for multiple pilots / run persistency is there and works fine. Now to think of mutators that are actually fun

Also, didn’t know that github pages actually give you ability to serve other repos ( always thought it’s just the main one ) SOOO you can check out the game at this address : River Rogue | Legacy Raid

Also screen of the amazing initial graphics for the selection screen

I’ve been working more on different pilots idea and the setup is pretty much done. Now there’s play testing and balancing but that kinda has to wait until I implement other mechanics which will impact the gameplay…

Also I need to redo styling because filter() heavily bogs down the CPU, esp. when scrolling

Some ss

scatter shot but enemy movement much more lively


night raid

low visibility but quicker scoring

one eyed pilot :slight_smile:

everything reversed but more fire pelets

1 Like

Added the mechanism for random variations in river width.

3 values are possible: narrow, regular or wide and every 20 lines new value is picked randomly. Looks something like this

Added fuel mechanics!

As airplane glides forward, it looses 5% of its fuel every animation key and the game spawns every 15 rows at least 1 fuel pump ( its kinda buggy, there are points when it can spawn zero or spawn to many, will work on it further )

Fuel pump can be destroyed for 100 points or collected for 50 fuel

ss

Yeah, so… when I sad in the first post that timing in JS in a browser is kinda sucky… o booy

So, row generation is done through basic for loop which is called every x time ( using the native setInterval() func); for loop has a var which is being incremented every pass and that increment is row ID… ok, simple enough

Linux, windows, everything fine. On a Mac ( M1 thing ) every 100 rows or so, EVERY browser bugs out and for increment doesnt do it’s thing so row doesnt get it’s unique ID, and game spawns empty or mangled html in a row, and when player hits that row, game over.

Solved the bug by using ye olde trick of Date.now() in every for loop pass which never generates two same numbers but this is kinda fucky because it mangled my previous logic for spawning fuel pumps and changing river width…

“Fixed” that thing also, but it now has to be tested which is great!

Added bridge mechanics which are important for progress system.

So, every 3000 points ( possible lower for more difficult pilots ) game spawns a bridge when destroyed increments the bridge counter.

After 10 destroyed bridges you get the boss level

ss

Worked on implementing mid-river islands in wide part of the river. It’s a bit tougher to do but I got initial implementation… Game randomly spawns islands if the river is wide and makes sure that the entry and exit are not blocked by them

Still left to make them appear more naturally, and to add some vegetation and enemy on the left or right

ss

Worked some more on islands thing. They look kinda more natural and have random forest pixels. Also game spawns fuel and enemy between them and on the left or right side of the islands

ALSO, hopefully, they never get genereated so they block entry or exit parts of the river… hopefully

ss

Added river meandering. It will randomly meander left or right, but will reset when it’s wide. Also it shouldn’t create unpassable configuration BUT it sometimes does… so more testing of this feature is needed.

ss

1 Like

Had to pause work on this for life/work reasons but it’s all settling down in dec so I will hopefully finish it

Did brute-fix some bugs, but the game CAN from time to time spawn impassable terrain… This bug will probably go to prod becacuse either I have to change the whole logic ( no ) or I need to play test / tweak for days ( no ) so yeah… at least I wrote the bug down in TODO list :wink:

2 Likes

Added sound and music. Nice 8bit groove

I used to play “River Raid” on my MSX, before I found it also on Atari 8-bit systems. The replay-ability of these sorts of games is what is really needed in a modern remake or tridute build.

I would love to see the Level1Techs “reaction” video to the “one eyed mode” - priceless

Cheers

Great work

Paul

PS. You could also have used a “known execution time” piece of code that would pulse out a setTimeout instead of setInterval. setInterval has always had problems, right back to IE3. The stated solution was how I got around the problems when making a demo-style mega scroller (with spinning background and thumping soundtrack) for IE3+4 & NS3+4 with the same code base.

1 Like

thanks man, really appreciate it :slight_smile:

feel free to shoot me example of the code you are talking about ( if you have any laying around) or just point me to documentation or live code, I will dig it out :slight_smile: I would love to take a look at it… this is the 4-5 time I tried to do something with timing in JS and every approach I took was kinda sucky. :slight_smile:

So this is nearing its end. I added a boss level… after you destroy 10 bridges, game spawns a bigger playing field ( sea instead of a river ) and you get a big boat on top of the screen. Boat has three guns so when you destroy all 3 of them, you win!

All I need to do more is to add projectiles / attack patterns for the boss

ss