PLEASE NOTE: The Source code works in Python 2 and Python 3, there are not separate versions for each.
The "Your Tach, Should You Choose To Accept It" Award
Presented by larry
Memories of GTA (1997)
Presented by capturts
Ratings (show detail)
Road Rage for Mac OS X 10.6 or newer
Road Rage for Windows XP and newer
Road Rage for Python 2 and Python 3
Day 7 Screenshot of Level 11
Day 6 Screenshot of Level 8
Day 5 Animation
Day 5 Screenshot of Level 4
Day 4 Screenshot in Classic Mode.
Day 4 Screenshot of the Main Menu
Day 3 Screenshot in Freeplay mode
Day 2 Screenshot
Day 1 Screenshot
Day 1 - Game Plan and Basic Engine
I decided to make a game where you manage traffic in a city by switching Traffic lights on and off. The challenge is that you have to get a certain amount of cars to their destination before the time runs out. There will also be obstacles such as construction work and accidents that appear when you start the level.
Today I got a basic engine done for paving the roads. I also got an engine for creating cars that can move, crash with another car, or stop in traffic. I wasn't able to get the cars to start back up when traffic cleared, but I'll figure that out later (Or, I could make it a "feature" of the game where you have to click the cars to get them to start again, but that's stupid so no.). Tomorrow I hope to get a system in for Traffic Lights, toggling them, and cars stopping when the light is red.
Day 2 - Graphics, Mechanics, and Engines
One feature I worked pretty hard on is lighting effects based on the time of day in game. The screen will gradually get darker/brighter as the game goes along. Based off of this, I was able to add headlights to cars when it's dark enough.
Another thing is I added an Information Box in the Bottom left, specifying the Level Goals, how far you were to completing them, and the Time left on the current level. In addition to this I added a Notification box that appears whenever a car accident occurs. Within the notification, you can locate the accident (still a small bit buggy) and close it, all with the click of a button or the press of a key.
Finally, I added objectives for the player to complete. One objective is to get x amount of cars out of the level before the time runs out. Another is to avoid x amount of accidents until the time runs out. When you fail, you get sent to a "Game Over!" screen. When you win, you get sent to a "You Win!" screen.
Here's a screenshot:
Overall, it was a very productive day. I am working at a fast, but quality speed. I also have a Idea and engine set in place. But most importantly, I am proud of the things I have accomplished.
Day 4 and Day 3 - Core Challenges, Gamemodes, Menus
I added 3 different game modes, each with their own purpose and challenge.
- Classic Mode - The Default Game Mode where you can win by getting a certain number of cars to the exit, or by avoiding a certain amount of crashes for a certain amount of time.
- Survival Mode - This is a mode where you can have no accidents happen, or else it's Game Over. I'm planning on adding a local highscore board for times in this mode to see how you can "survive".
- Free Play Mode - Remember when I said each mode had a challenge? I lied, this one doesn't. This mode isn't supposed to be challenging. It's just supposed to be there for practice or just general messing around with the game.
I added almost all the UI for the game. I added the Main Menu, a mode select, a level select, a settings screen, and a [temporarily] blank how to play screen. I added fully functional buttons w/Keyboard Shortcuts just for fun. I added on/off sliders for the Settings Menu. I'm mostly done with this aspect of the game, so I don't really have to worry about it, so that's pretty great.
Of course, every game has a challenge, or else it's not fun. The challenges are just basic things like goals to win the level or penalties to stop you from winning the level, such as:
- Car Accidents (duh), you can be slowed down and penalized by them depending on the level/gamemode. Also, I added easier ways to track car accidents by putting a yellow "Warning!" symbol over the crashed cars telling you that they've been in an accident.
- Time Limit, you have to finish the level in a certain amount of time or else you lose, or you have to survive for a certain amount of time or else you lose.
- Unhappy Drivers, this is a new feature that I'm pretty proud of. When Drivers wait at a stop light for too long, an angry face will pop up over their car and if it grows to a certain number, your amount of time to complete the level will be penalized.
Other "smaller" things I added
- Fullscreen Mode
- Pause Menu
- I switched the Graphics for the Traffic Lights to a solid colored bar, to make it more apparent to what setting that light was in.
- Turning on one traffic light will turn on the one parallel to it (in the same lane).
- Buses, they're slow, they take up space, you don't like driving behind them, so of course I had to add them into my game, because why not?
- New cars, and I hope to finish all of them tomorrow as well as add motorcycles.
Okay that's everything I did today but I'm not done yet...
Things I plan to finish tomorrow (this is mostly for self-reference so I don't forget)
- Starting work on levels
- Start recording Sound Effects (except for a car crashing one, I don't want to re-create that)
- A better way of switching lights on and off.
- A better Level Select Screen
- Motorcycles with higher speeds. (mentioned above)
- Finish all cars.
- A name for the game. (That might be a good thing.)
Still not done yet. I still have screenshots.
This is the main menu:
This is a picture of Gameplay with indicators above accidents and unhappy drivers:
Okay now I'm done writing. I'm going to bed now.
Day 5 - Level Design, Motorcycles, and minor fixes.
Here's a screenshot of one of the levels:
Oh and I've also never posted an animation for some reason, so here's the game in action (Sorry for poor video quality):
I don't have any extra things to do tomorrow for the most part, and nothing to do on Friday that interrupts my work schedule, so I'm just gonna get straight to work from that point on.
Day 6 - More Levels, How To Play Screen, and recording SFX
I added 4, almost 5 new levels. My goal was to have a total of 12 levels, and I have 8 completed so far, so I'm getting there pretty quick. All I have to do is test them and tweak them down/up to optimal difficulty.
A big thing I got done was the "How To Play" screen. It describes the goals of the game, the controls, what each little thing on the screen does, and all the different game modes. I'm not very good at describing things, so I got my Mom to proofread it to see what I could improve on explaining better. So now, it's clear and concise, and it describes everything that needs to be described, hopefully.
One of the more fun parts of today was recording Sound Effects. I looked on freesound for some of my sounds, but for my other sounds, I went to a more time-wasting and fun place to go... EarthCam. So I found a live video feed of a busy street in Chicago right outside Wrigley Field, and I recorded a LOT of cool sounds. The only problem is the ambient noise in the background is really loud, so I'll have to edit it tomorrow so it isn't super loud.
Here's a screenshot of one of the new levels... AT NIGHT:
There's light at the end of the tunnel, but that doesn't mean I can't slack off, so Ima keep on going.
Day 7 - Settings, Finished Levels, Level Intros, High Score Board
The Final Four Levels 9 - 12 have been completed. All levels have been playtested and adjusted to optimum difficulty.
Level Select Screen also has updated images for each level instead of repeating the images for levels 1 and 2 over and over.
Level Intro Screen
So one big thing I added today was a level intro screen. How it works is at the beginning of the level it shows what level you're playing and what the goal of the level is. Then the screen disappears into the level with a really cool animation. I wish I could show you it but I don't have enough time to put an GIF together, but it's still really cool.
High Score Board
Another big thing and also a really cool thing I added was a high score board for Survival Mode. The board tracks how long you survived before causing an accident. There are 5 places on the board, each displaying the time achieved and who achieved it. Highscores are beatable, they are not set in stone, so if you get a higher score than the current 1st Place you rank 1st Place and everybody else moves down.
I got a lot of different things done in the Setting Screen. It's no longer the one option "Fullscreen Mode" toggle switch. It has two main segments, one for General settings, and the other is an About screen displaying more Technical information. In General settings, you can now control:
- Sound Effects
- Keyboard Shortcuts
- Full Screen (but you could already do that)
- Volume (almost, the slider for it is a little glitchy and I'm working out some bugs on it.)
How To Play Screen
I didn't do much with this, but I did add some diagrams to better explain and show how to play the game, so I thought I might mention it.
Here's a screenshot of one of the toughest levels, Level 11:
I gotta get to bed for an Early head start tomorrow morning, for a Quality Game by the end of the Competition.
Day 8 - Sounds, Tutorial, Bug Fixes, Finished!
I'm done, finally. I've gotten up at 4 AM every morning (except for yesterday, which I got up at 3:30, and today I got up at 3AM). I'm so exhausted, I'm ready for a good nap.
But, I'm still going to list the changes I made today, because that's what I've been doing all week, so that's how I'm going to finish the Week.
Today I implemented the sound effects into the game. Their volume can be toggled by the volume slider in Settings, and you can toggle them on/off by using the "SFX" option in Settings.
Another thing I added is a Tutorial. It's on level 1, and it basically just guides you through getting the flow of Traffic going and some other helpful tips.
I also added a way to make the game more challenging. I messed around with the unhappiness settings for a bit until I got a System that stopped the timer [in some modes] if you had too many angry cars that were stopped. This was to prevent "cheating" by not moving any of the cars to beat a Level or to set a Highscore, so I thought I might as well do it. There's also a notification that pops up when this happens saying that the Timer has stopped, and is closeable [until you make more cars angry] and will go away once the flow of traffic is restored.
I spent a good 5 hours debugging today. I playtested every little aspect of the game, in Python 2, in Python 3, and in Windows (Now you know why it took 5 hours). I recompiled my code so many times I can't recall the exact number of how many times I did it. But, I did get 98% of the bugs out for a good quality entry. I'll also try to get a OS X Build out some time later, but there are no guarantees on that.
It was a great PyWeek, and I'll see you all on November 11.
I'm now going to try to respond to all of the individual comments I got, mostly just for self reference on what I did really well on and what I could improve.
You control traffic lights at intersections by clicking on them with your mouse and toggling them from red to green. Clear crashes by right-clicking on crashed cars. That's the game! The game ran great, and it was clear from moment to moment what was going on. Not exactly my kind of game; it ultimately kind of devolves into a game of simply having quick & accurate mouse movement.
Tip for getting the game to run on Linux, and maybe Mac too: go into the "sfx" directory and copy all the uppercase sound effect files to their lowercase equivalents. For example, copy "Horn.wav" to "horn.wav".
I agree that you had to have very precise and fast mouse movement, at least for some of the harder levels. I did get a couple of comments about the "Horn.wav" problem for Linux. Linux was the one platform I did not test my game on (Probably should have, because that's what most of you are using). One easy way I could do that is by checking all the caps and non-caps on file names. Thank you for the feedback.
It's visible the amount of work you put into this; it looks very complete. I appreciate all the different modes and levels and that's not easy to pull off in one week. I admit that this style of gameplay (multitasking-type games) doesn't appeal to me in particular too much, but I enjoyed it nevertheless. It's nicely executed and well polished overall.
I agree with the statement that making levels and different modes is not easy to pull off in a week, but not for this game. For the past two Pyweeks I competed in I did have a lot of trouble with this as you had so many objects that make up one level, and you have to design the level very well. For Road Rage there were not as many objects in one level, all you really needed to figure out is how many makes the balance between not too easy and not too hard to make the level go smooth. The only thing that really took time was testing the levels to see if they were too hard or too easy and then constantly adjusting them to get them to an equilibrium. Thanks for the positive feedback. :)
I feel like I've played pretty similar games before, but this is very well done. Good job making a lot of different levels with a good progression of difficulty out of just a couple simple mechanics. The half-controlled intersections - in particular Level 8 - felt just a bit unfair whenever I had to decide whether to let a bus through with no way of knowing whether it would make it in time. (Some sort of indicator at each edge of how long until the next car appeared is one possible fix.) But for the most part, I liked the challenges.
Half-Controlled intersections were really supposed to make you make decisions on wether you wanted to risk a crash or make people mad. The decisions probably varied from Level to Level (like when you went from trying to avoid crashes to trying to avoid angry drivers). I agree that these were very challenging and a little unfair, which is why I tried to put them only on harder levels. I like your idea of putting indicators on the edge specifying when the next car would come, and I'll probably do that in a Post-Mortem. Thank you for the feedback!
nice game, 3 game modes (I haven't tried them all)
Thanks for the positive feedback!
Road crossings without lights are disaster.
That's what they were supposed to be, >:). Thanks for the positive feedback.
I'm not sure the system to punish letting on way being always red is well balanced or even work: in survival, the time still increases for ages.
Also, when one line is without control and a bus is coming on a perpendicular line, I have the feeling the chance of success are just random: it depends if you are lucky and no new car appears on the line without control, as they go faster than the bus.
The car/bus can also appear and disappear outside of the screen, so they just not pop out of thin air.
I had fun playing around and I appreciated the existence of a menu, of options and of different levels and different mode.
About the system on punishing for keeping to many people on red, that was just a very bad attempt at an anti-cheat system. I didn't want people to cheat through the game by leaving every light on red, leaving the game on for a long period of time, and then come back and win every level. I agree with your point that system was unfairly balanced and I probably should've messed with it from level to make it more fair.
Another comment about the half-controlled intersections, success doesn't really depend on if cars and buses go, you kind of just had to make a decision on wether a line of cars would make it in time or if you needed them to stay put. Thanks for the feedback!
Great job! I rage quit around level 8 or 9 because I got irritated with the hitboxes on the cars. I feel like once they are half or more across the opposing light they should continue even if you change the light to red. But they are stopping even if they are a little PAST the light. Numerous cases of having a crash because the last car in a line stopped moving when I felt like changing the light was the right move got very frustrating.
The cars stopping past the light was a "feature" if you know what I mean. I understand that stuff like that doesn't happen in real life and it keeps going, but the way I had the system for Traffic Lights set up that didn't happen. I only kept it in because I felt like if cars kept going then there would be less possibility of having a crash and I didn't really want to make it too easy. Thanks for the feedback.
Game was pretty fun: very similar to another entry this comp. I think this game did a bit better job than the other in the more steady progression of levels, and the use of the time limit and other objectives: made for a more challenging and interesting experience. Also nice to see the tutorial and other support information in the game.
Thanks for the positive feedback! I spent a some time trying to get the levels to have steady progression as well as have them playable. I put the Tutorial and more detailed support information into the game because of people getting really confused on my past PyWeek and Ludum Dare projects, so that was something very well needed.
I really enjoyed playing this game. It's a great puzzler / coordination problem. Nice and simple yet effective..!
Thanks for the positive feedback!
very nice feel, lag between levels. how to package? its so hard???!
When you say lag between levels do you mean the loading and intro screen? I don't see why you would need to package unless you were on Linux, because that's the only distro I didn't make. When you say it's hard do you mean the game is hard or are you continuing your previous statement of how to package it? Nevertheless, thank you for the feedback.
Reminded me of the NetLogo traffic simulation. Although, unfortunately I didn't find it very fun. Screens took a while to load and the flow seemed like it hadn't been tested enough.
I probably shouldn't have added a loading screen. Nowhere on the screen does it say it's loading and it's really just annoying. I did spend a little time testing levels but I agree and I probably should've tested them a little more. Thanks for feedback!
The cars are cute; I especially liked it when darkness fell and they turned on their headlights. The horn sounds really add to the urgency.
It's a difficult game! I kept messing up and causing pile ups. I found that when you cause a crash it's hard to unpick it without causing loads more crashes.
I agree that it's pretty difficult to clear crashes without causing more. Usually I would've just turned all the lights red until it was all clear, but I understand that you didn't have that much time to do that in all the levels. Thanks for the positive feedback!
Nice idea - elegant
One small glitch: On Linux I had to rename Horn.wav to horn.wav to get it to work (files taken from the repo)
Yeah I should've caught the Linux glitch. At least I didn't get any DNWs for it. Thanks for the feedback!
Creative application of the theme, and overall fairly well-polished game (though some music and less jarring bleep sounds would have been nice). The clickboxes were a bit confusing at first and I opened traffic in both directions by accident more than once (but part of that is probably that it was a tiny window on my high-DPI display). It was fun to play around with for a while, but it feels like the core gameplay might need to be extended with a bit more for it to be even more fun.
For some reason I always forget about music until the last minute and then I forget to add it. I probably should've edited the horn sound to be a little less sudden and less aggressive. I agree with the statement that the clickboxes were confusing, I couldn't find a really good way to do it, you probably could've made it fullscreen to make it easier to see and click, but I still could improve that. I tried to add 3 different modes to extend the gameplay a little bit, but I probably could've done a couple of more levels. Thanks for the feedback!
Nice traffic simulation. Very intuitive controls for switching the traffic lights. It's quite fun to optimize the traffic flow.
Thanks for the positive feedback!
Has the filename case sensitivity issue where the filename in the source doesn't match the case of the actual filename.
pygame.error: Unable to open file './sfx/horn.wav'
Good execution. I'm not too sure how to beat the later levels though. The different light conditions was a nice touch.
I probably should test Linux next time. Later levels required a bit of thinking and decision making. Thanks for the positive feedback!
Simple concept, good execution, fun to play - occasionally all lights turn green on a junction at the same time, not sure if that's my missclick, a feature or a bug.
Opening all of the traffic was a probably a miss click, oddly a feature, and unfortunately a bug. Either way, thanks for the positive feedback.
The game was fun and provided quite a few game modes. However the controls are a little too uncomfortable, it would be great if you can use the numpad as shortcut keys for the traffic lights. I didn't see much creativity in this game as traffic flow appears to be one of the most common theme here. The production is fine, the background music and certain strange animations are a little disturbing.
I really like the idea of using the numpad as shortcut keys, except that my keyboard doesn't have a numpad to test on. I don't understand what you mean by strange animations, unless it's the one where cars start and stop repetitively behind a bus, then I understand. Thank you for the feedback!
Road Rage's success outside of PyWeek
Some of you might know that Road Rage has an itch.io page. After posting it around the internet for a bit, it gained a lot of popularity. As of today, Road Rage has 230+ views and 190+ downloads on itch.io. On October 29th it was the most popular game made with pygame on itch.io, and even made the list of New and Popular games for a brief period of time. I'm very happy with the results that I got from it as well as the results I got from here.
Yet again I'm really happy that I get to compete in PyWeek, it is both fun and challenging and every time I learn ways I can improve. Thanks for a great PyWeek, and I'll see you all in 6 months.