A Python library for working with Free Rider HD Tracks.
Free Rider HD is an online HTML5 + JS game where users can draw bike tracks, upload them to a community of players, and ride them. (Go try it out!)
When drawing a track, you can import track code from a file or from your clipboard. This library (as of now) allows you to generate that code.
Fire up a terminal and run:
pip install frhdtools
You should be good to go.
Example 1: Physics Line
When you start, you’ll want to import frhdtools:
import frhdtools
Next, you should create a Track class. This will hold all of your track’s objects and code.
my_track = frhdtools.Track.Track()
Now that you’ve done that, you can add a line:
my_track.insLine(-40,50,100,50,'p')
This line goes from (-40,50) to (100,50). What is the ‘p’, you ask? That corresponds to the type of line. In this case, it means a physics line. More on types of lines later.
Now, lets generate our code:
print(my_track.genCode())
my_track
and print it to
stdout.-18 1i 34 1i,###
Don’t worry what the code means just yet. First let’s plug it into FRHD to see if it works.
In the Track Editor, click “Import” at the top of the editor:
Then paste in your generated code at the window that pops up.
After it loads your file, the track should look exactly like this:
Wondering about the helmet? It’s just swag.
Congratulations! You’ve just finished you first line segment. It will get easier, I promise. 😉
Example 2: Scenery Line
Remember how I mentioned that there were different types of lines? Well here’s what they are.
In the last example we used a physics line. The rider can interact and ride on those.
In this example you’ll make a scenery line. A scenery line is a line that the rider cannot ride on. It is purely just for scenery. Also, scenery lines are gray instead of black.
It’s really easy to make a scenery line. Instead of using the code from last time:
import frhdtools
my_track = frhdtools.Track.Track()
my_track.insLine(-40,50,100,50,'p')
print(my_track.genCode())
We change the ‘p’ to an ‘s’ in my_track.insLine:
import frhdtools
my_track = frhdtools.Track.Track()
my_track.insLine(-40,50,100,50,'s')
print(my_track.genCode())
(FYI: The code should be #-18 1i 34 1i,##
)
Now, when you plug the code into FRHD, you will get this:
Note: the rider will fall through the line as it does not have physics. This is normal.
Now you have made a scenery line. Great!
Example 1: Boost
In this example, you will learn how to make a boost powerup.
To start, let's take our code from the first example:
import frhdtools
my_track = frhdtools.Track.Track()
my_track.insLine(-40,50,100,50,'p')
print(my_track.genCode())
and add my_track.insBoost(90,-10,90)
import frhdtools
my_track = frhdtools.Track.Track()
my_track.insLine(-40,50,100,50,'p')
my_track.insBoost(90,10,90)
print(my_track.genCode())
This will spawn a boost powerup at (90,10). It will be rotated 90 degrees.
** By the way, the code should look like this: -18 1i 34 1i,##B 2q a 2q,#
Plug that into FRHD, and you're left with this:
Example 2: Bomb
In this example, you'll learn how to spawn a bomb powerup. Bombs explode when you touch them.
So, to get started we'll take our code from our first example and add my_track.insBomb():
import frhdtools
my_track = frhdtools.Track.Track()
my_track.insLine(-40,50,100,50,'p')
my_track.insBomb(90,10)
print(my_track.genCode())
That code makes a bomb at (90,10), which are the same coordinates from the last example.
Go ahead and put that into FRHD:
Example 3: Gravity
In this example, you'll put a gravity powerup into a track.
Gravity powerups are pretty cool because they can switch gravity. Wow.
You know the drill. Let's take the code from Example 1 and this time add my_track.insGravity():
import frhdtools
my_track = frhdtools.Track.Track()
my_track.insLine(-40,50,100,50,'p')
my_track.insGravity(90,10,90)
print(my_track.genCode())
Now, when you put that into FRHD, you'll see something cool:
Honestly, I think that this is one of the coolest features in FRHD; I really apprieciate that the developers took time to put it there.
Example 4: Star
Stars are items in the track that must be collected in order to complete the track.
Stars are added with my_track.insStar(x,y)
Stars look like this:
As you can see, stars have no physics and are collected immediately.
Example 5: Slow Motion
Slow motion is a cool feature that allows you to, in a nutshell, make it seem like your rider is riding in slow motion.
Slow motion starts from the time your rider hits it to the time your rider lands on another platform.