mynameisnotpa / atoms-beats-and-eats Goto Github PK
View Code? Open in Web Editor NEWA rhythm game for VGDev Fall 2017
A rhythm game for VGDev Fall 2017
The player should be able to use the keyboard to navigate the level select menu.
Left/Right Arrows: Navigate through the levels left and right
Up/Down Arrows: Navigate between practice and play
Enter; Launch practice or play
Currently the user can win just by pressing the space bar as fast as possible.
If a HitEvent is coming up in the current recipe, and the player presses the button too early, that HitEvent should fail.
We need art for these items:
Hamburger bun (bottom)
Hamburger patty
Hamburger bun (top)
As a reference, the art would look similar to this:
Reference
Currently, the game does not keep the player's score. We want to fix this:
Create a new ScoreManager. This class keeps a list of HIT_RESULTs.
The Hit event of Engine gives you a HIT_RESULT when the player hits or fails to hit the button in time during a recipe.
ScoreManager should be able to calculate the player's total score as a percentage (from 0 to 100). A 100 result would be a list full of HIT_RESULT.HIT. A 0 result would be a list full of HIT_RESULT.MISS.
So, when calculating the total score, for each HIT_RESULT, a result of HIT adds 100 / (length of list) to the total score, a BARELY adds 50 / (length of list) to the total score, and MISS adds nothing.
There are several new images for recipes uploaded in the project Resources folder.
You can make new Recipe objects for these images and assign a beat map to them so that level designers can use them to vary levels.
See the existing recipes in Scripts/Recipes for examples.
In the PauseMenu, currently nothing happens when you click the Restart button. We want clicking this button to restart the level.
I expect this to only take one or two lines of code. Make sure nothing gets messed up when the level restarts!
HoldEvents should have an up and down arrow in Practice mode when they display on the beat line,
When a recipe is completed, we could show the recipe appearing on the table when the Chef lowers his hand.
The chef is the player character in the game. As such, it will be the most complicated set of sprites in the game. The chef will be behind a counter for the whole game, so will only need to be drawn from the waist up.
The art style for this is much like the UPA cartoon style. The chef is dressed in the typical soda fountain fashion.
As for shape, the most similar character design I have found is the chef's asset image in the game files.
For the chef, we need these sprites:
Minimum:
Standing (idle)
Slipping (Unsteady tripping pose, this will show when the player fails to hit an ingredient in time.)
Adding food to plate (Facing left, upper arms down, lower arms forward)
Optional: (Each of these is not required for release, but will give us more options and make the game look super cool. Each of these is only one frame/pose.)
Mixing a bowl
Holding a skillet (as if on a grill)
Pressing Enter should select the currently selected option in the PauseMenu. Pressing up or down on the keyboard should cycle through the currently selected option in the PauseMenu as well.
Note: Each time you open the pause menu, the selection should start at "Resume".
The level select menu should be able to call level scenes. It should also be able to display if a level is locked.
For the backend, we just need a scene that can load other scenes. The other scenes will go back to this one when the quit option is selected on the pause menu, and when they are done.
There will also be a static class that holds on to which levels are currently unlocked.
A TextBox that appears on the screen at the beginning or end of the level that the user must press a key to continue.
This issue deals with the backend, so will be harder than the other issues to finish.
Currently, we can only make recipes out of HitEvents, which limits us to the player only having to tap the spacebar.
We want a new event, a HoldEvent.
This event will have both a start and end time.
It first checks to see if the player presses the key within leniency on the start time. After that, every tick, it checks to see if the player is still holding the key. It also checks to see that the event is released within leniency of the end song time.
If all requirements are met, it has succeeded and it is done.
If at any point the requirements are not met, the event is failed.
To handle the key being held down, let's have a public function of engine, getKeyPressed().
Rockabilly, motown, 50s style accepted.
About 100 bpm. About 1-2 minutes long.
https://docs.unity3d.com/ScriptReference/PlayerPrefs.html
We can use PlayerPrefs to store the data for the game.
At the start, only the first level should be unlocked, and all games should have a 0 high score.
We should have a way to unlock the next level from within any level.
If the player gets a score above 70, they will unlock the next level. I will be putting the function call for this in the game, we need a way to actually unlock the next level (preferably calling the function of some static class).
The data storage could be a static class so that it can be accessed anywhere, and interface directly with PlayerPrefs to get and load if a level is unlocked or the high score on a level.
Functions:
is level unlocked
get high score for level
set high score for level
unlock level
These recipes will use the new HoldEvent.
We need a simple, short music track with a steady, strong beat for the ingame music.
It shouldn't sound too futuristic, it would be awesome if it sounded somewhat old-timey, in fact. For example, electro swing or rockabilly would be super cool.
The song length should be a little less than 1 minute. The BPM should be about 100 - make sure it's a whole number!
Currently, Orders only can have ORDER_RESULT.SUCCESS or ORDER_RESULT.FAILURE. We want orders to have ORDER_RESULT.BARELY if one or more, but not all, recipes were successfully made by the player.
Now that we have keyboard support, we can add in gamepad support.
This was originally a stretch goal, but hey, we're ahead.
Acceptance Criteria:
When a HitEvent is passed or failed, we should show some sort of feedback to the user.
It's up to you to decide what that would be like, maybe a flash about the player character or something.
We need art for hamburger ingredients.
Some examples:
Lettuce
Tomatoes
Pickles
Ketchup
Mustard
Onions
As a reference, the art would look similar to this:
Reference
Art for a Customer consists of three sprites:
Standing (ordering)
Running, left foot forward
Running, right foot forward
These will be used to animate the customers.
For MVP, we need one customer. Ideally, we would have multiple variations, but only one is certainly viable.
Example
In the PauseMenu, currently nothing happens when you click the Quit button. We want clicking this button to Quit the Application.
Only 1 line of code, but requires the application to be built and run (File -> Build and Run) as it will close the application and that won't happen in a play test.
We want sound effects to play when:
The player opens the pause menu
The selection in the pause menu changes
The player selects an option in the pause menu
Music for the main menu.
A quiet love song/doo-wop 50's track.
We need the background of a diner for the game setting.
The image should be about 16:9 aspect ratio so that we can show it on most screens.
The left side of the image is the seating area, the right side is a kitchen-like area which will have a counter in the foreground. Customers will walk from the left to the center and order at the counter. The player character will be behind the counter.
Example art style references:
1
2
3
4
5 (Kitchen)
Create the code for a Triple Burger. A Triple Burger requires the user to press the button 3 times: on beats 2, 3, and 4.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.