-
Notifications
You must be signed in to change notification settings - Fork 0
/
retro.html
90 lines (78 loc) · 9.77 KB
/
retro.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="css/look.css">
<title>Retro Dash</title>
</head>
<body>
<h1>Retro Dash</h1>
<h2>About the developer and the game</h2>
<div>
<p>
Retro Dash is SpiritOf1776's submission for the N64Brew Game Jam. The game injects the high-energy focus of a modern endless runner game onto the Nintendo 64's hardware. Retro Dash is notable for its playability and earnest (but acommodating!) difficulty.
</p>
</div>
<h2>Chatting with SpiritOf1776</h2>
<p class="interview-question">What got you into Nintendo 64 homebrew?</p>
<blockquote>
<p>
The N64 has always been special to me. I can still reember the day that my parents took me to Toys R Us to get it. I have so many memories of all the games I played on it as a kid. Fastforward 20+ years and life for me is a lot different today than it was back then: wife, kid, job, mortgage, etc. With everything going on in the world I have sort of been on a retro video game binge trying to recapture the "good ol' days". When I heard about the game jam I thought it would be really fun to actually build a game for a retro video game console instead of just playing on them. The software I work on at work uses tons of memory and resources to view large, complex CAD models. I thought it would be fun to get away from the size and complexity of the stuff I deal with daily work on a project that had a much more narrow scope. In my mind its pretty darn cool what you can create with 4-8mb of ram and 4k of texture memory!
</p>
</blockquote>
<p class="interview-question">How did you come up with the concept for your game? Was there anything about the jam's theme that stood out to you?</p>
<blockquote>
<p>I have always had a soft spot for endless runner games ever since I played Robot Unicorn Attack on my iPod Touch back around 2010. At the time of the Game Jam I was playing Geometry Dash when I had some time here and there. A buddy from work suggested that I could use that as a point fo departure for a n64 game. Since I knew I wouldnt have enough free time to come up with something very complex due to time restrictions it seeed like a good idea to me. I figured that a size change mechanic could be integrated pretty straightforwardly into the always running mechanic to add some additional gameplay besides just jumping.</p>
</blockquote>
<p class="interview-question">What tools did you end up using to create your game?</p>
<blockquote>
<p>
Having no N64 development experience, I chose libdragon since it had a really low barrier to entry. The NPM package / docker container made it extremely easy to get up and running compiling ROMs and experimenting with the API. I also used NodeJS to build a small asset pipeline for tilemaps and levels. I also used the HTML5 TextMetrics API and with Canvas to generate spritefonts for the text in the game. Building the pipeline in node made it extremely easy to run and build the game on any computer that had Node and docker installed.
</p>
<p>
One problem I had pretty early on was that it was really hard to see what was going on in my game. Without a USB enabled everdrive I wasnt aware of any way to even do some basic debugging. Since the game was pretty simple it was not too hard to abstract input, rendering and auido between the N64 and libSDL. This allowed me to easily debug the platform independant game logic in a desktop debugger. I was also able to quickly iterate on the levels by being able to "hot reload" them without having to rebuild a ROM. A side effect of the libSDL layer was that I was also able to use emscripten to generate a WebAssembly version that I could easily upload to itch.io so my friends to could playtest the game and provide feedback without having to install any emulator or set anything up.
</p>
</blockquote>
<p class="interview-question">Is there anything you particularily enjoy about your game, or is there something you worked on that you're particularily proud of?</p>
<blockquote>
<p>
To be honest, the thing I enjoyed most was the feeling I got when I ran an early build of the game on the hardware that had most of the features in there. I felt like the cycle had come full circle. From a kid who had no idea what programming was, just pouring hours playing games on the n64, to an adult burning the midnight oil after putting my kid to bed writing code for a game that was going to be played by other people on an actual N64.
</p>
</blockquote>
<p class="interview-question">Endless runners are a more contemporary type of game than the sort of stuff you'd see during the Nintendo 64's lifecycle. It's really cool that you were able to inject your experiences from 2010 onto a game console from 1996. How do you feel about the video games you play today compared to the ones you enjoyed as a child?</p>
<blockquote>
<p>
I have a lot less time for gaming now than i did back in the day due to the demands of my schedule. I used to prefer roleplaying games with epic stories that took a long time to beat, and of course I had a MMORPG (EverQuest / Wow) phase though High School and college. Nowadays I try to figure out how to get the most enjoyment for the time I have to commit to gaming. I find myself drawn to games that are much shorter that I can either pick up and play for a little bit or that I can complete in a couple sittings or less. Games like Journey, Flower, Abzu, Gris, etc are some some examples of games (maybe more like experiences) that appeal to me these days because I can complete them in an afternoon or two. And yes I have a soft sport for runner games I can just pick up and kill some time with: Race the sun, GeometryDash, Beat Saber, etc. I keep telling myself one day I will go back and play some of the epic 30+ hour games like FFVII/VIII/etc but I dont see it happening any time soon!
</p>
</blockquote>
<p class="interview-question">One thing that struck me about the levels was how they felt so suited to the player's moveset. Every time I crashed in a level, it always seemed clear to me what I could do to succeed. What was your process like for designing the stages?</p>
<blockquote>
<p>
I had this grand idea of an in game level editor that would allow me to really tailor the levels to the music. It became pretty clear early on that if i went down that rabbit hole that I would not finish the project, which ultimately was my only real goal...turn in something complete and working! The next best thing I could do is to listen to the music tracks and note certain events that I wanted to tie parts of the level to. Since I knew the size of the tiles and the speed at which the player was moving I was able to (roughly) build the level around that. This process turned out to take a really long time to get right, and the timings were thrown off when I got feedback that the game out of the box was too hard (fast) so I had to make adjustments on that. It got even worse if you used the player speed slider, as I didnt have a good way to scale the music along with the speed, but I didnt let that bother me too much because the speed slider was added pretty late in the process as more of preventative measure from people getting pissed and launching the controller. Overall, iterating on the levels was made easy by the libsdl layer i had built. I would just update the text file with the new tiles tiles and restart the level and it was pretty instant. Chaging the starting position was easy too if I was working on a certain piece of the level. Not having to rebuild the game or rom to work on the levels I think ended up saving me a pretty good chunk of time.
</p>
</blockquote>
<p class="interview-question">If someone wanted to get into homebrew today, would you have any advice or suggestions for them?</p>
<blockquote>
<p>
My thought on this topic is "its dangerous to go alone." I would definetly try to find someone who has the ability to put in a simialr amount of time to the project as you and try to make it work. I spent a lot of time working on the levels and thought to myself, If i had someone who enjoyed doing design / art work, id be able to focus on adding more features, and my game wouldnt only have programmer art in it. I am definetly going to try to join a team the next go-round. I see homebrew as a labor of love, so finding a community like the #64Brew discord server has really been a huge factor in my continued interested in N64 homebrew.
</p>
</blockquote>
<h2>Screenshots</h2>
<img width="320px" src="media/retro/my_photo-18.jpg">
<img width="320px" src="media/retro/my_photo-26.jpg">
<img width="320px" src="media/retro/my_photo-23.jpg">
<img width="320px" src="media/retro/my_photo-25.jpg">
<h2>Some Nice Links</h2>
<ul>
<li><a href="https://matthewcpp.itch.io/retrodash">The web version of Retro Dash on itch.io</a>
<li><a href="https://github.com/matthewcpp/RetroDash">The source code for Retro Dash</a></li>
<li><a href="https://www.youtube.com/watch?v=TC1EYy3Faf0">Gameplay recording on YouTube</a></li>
</ul>
<a href="index.html">Back to the main page</a>
<hr>
<p>Website by Daniel Savage<br />
Interviews are CC BY-SA 4.0; Screenshots are likely fair use.<br />
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="licensed under reative Commons Attribution-ShareAlike 4.0 International" style="border-width:0" src="https://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a></p>
</body>
</html>