kylios / beerrun Goto Github PK
View Code? Open in Web Editor NEWDeliver beer to the party as fast as you can without dying or blacking out!
Deliver beer to the party as fast as you can without dying or blacking out!
We need an objectives screen for the levels that tells the player how many beers they need to win and how long they have. This should be implemented as an abstract screen that can be created simply given certain numbers. It should be part of the Level abstract class.
The text "Sick dude, beers! We'll need you to bring us more though. Go back and bring us more beer!" shows up at the start of the tutorial. This text should only appear when the player delivers beer to the party AFTER going to the beer store.
We need a script to build BeerRun and deploy the project to a server.
The tutorial should be fully implemented in Level1. The steps we need are:
Level 6 needs design. Please document it here: https://github.com/morendi/BeerRun/wiki/Levels
We need a screen that is displayed when the game is over, telling the player their final score.
easy
12 beers to win
1:30 minutes
5 NPCs
4 cars
The bum character should run out of the way of cars. It should honor the "blocking" property of level tiles. It should stay within certain boundaries and adhere to configurable movement parameters. It should be able to chase the player.
Loading the .wav file takes too long. Compress this so loading takes shorter.
In addition to the "D" key, the Spacebar also does not work.
The cop should not move very much. It should move towards the player when the player gets nearby. Like the Thug, parameters of the Cops movement should be configurable.
medium
16 beers to win
1:00 minute
6 cars
5 NPCs
Some tasks like decoding levels and audio data take a significant amount of time at startup, but aren't recorded in the progress screen. Hook these tasks up so their progress remaining and complete is reflected in this screen.
Rather than passing in a reference to each page element we need in the GameManager's constructor, let's use a config file. This will let the html frontend be super flexible if we ever drastically change the front page or try to integrate with other sites. How about something like this:
var pageConfig = {
"canvas": {
"ref": "div#canvas"
},
"stats": {
"ref": "div#stats"
},
"ui": {
"ref": "div#ui"
}
};
var page = new Page(pageConfig);
var gameMgr = new GameManager(page);
We can rework how the game manager consumes this information later. For now I think it'd be beneficial to easily allow for more references to page elements. Perhaps someday we can add a class to help interface with these better?
Sprites that need finished (or started..)
Especially in level 2, if you didn't pay attention at the beginning, it's not clear which door is the party. There should be some sprite indicating where it is. Maybe a sign above the door, some balloons, or something like that. Spilled trashed party cups, blacked out kids outside the door, the crashed car, etc.
Need walk animations for a 64x64 bum character in the up, down, left, and right directions.
In levels that are exactly as tall as the viewport, when the player walks lower than halfway down the screen vertically, black empty space appears at the bottom of the screen.
Expected results: the screen does not scroll with the player if the viewport is already at the edge of the level. The player should walk all the way to the bottom edge, and no black empty space should be exposed.
Design pending.
Design pending.
The player is able to walk off the top edge of the screen. The top edge should instead act as a blocking object, and the player should not be able to move any further. This works on the bottom and side edges.
Spacebar should dismiss the current tutorial dialog and advance the player to the next step.
When standing on the sidewalk in level 2 just outside the house, the car comes up on the street and turns left, and it takes a life.
Expected behaviour: you are safe from the cars on the sidewalk.
Lay the infrastructure for a thug character.
Break these into separate tasks if needed.
Postgres for relational data
Redis for key/value data
Scala for code
Super low priority. This is mainly to get a handle on Redis, Postgres, and Scala, with the goal of eventually running a level-generating game server, and maybe an MMO server for this type of game.
NPCs are given properties in the level file corresponding to their position in pixels, where (row, col) coordinates would be more consistent.
We should also look into defining the width, height, and collision boundaries either in this class or in the sprite classes. Currently the width and height are defined as "0" in this class and these properties are obtained presumably by the sprite it uses. This is good but might be more elegant somehow? Maybe just extend the sprite class.
The metal fence image is difficult to see. Darken the fence and make it more visible over the grass and sidewalk backgrounds. OR just redo it. It's not that big of a deal.
Lay the infrastructure for a cop character.
Loading assets still takes a while. First figure out why this is. Some ideas:
Some ideas to fix:
Level 7 needs to be designed. Please document it here: https://github.com/morendi/BeerRun/wiki/Levels
Need to track user preferences and tutorial progress and stuff. Let's do this using cookies.
easy-medium
20 beers to win
2:00 minutes
6 NPCs
2 cars
Finish the thug's movement component with the appropriate movement behavior. The thug should perhaps not move very much, unless the player gets close.
Look at the Player class. All GameNotification events should instead be sent along streams. The GameManager class can simply decide what to do with the message that your buzz is wearing off. Look for other places we can do this... NPCs? This might turn into the GameObject, and eventually Component system overhaul we need...
Blocker for adding new NPC types.
Figure out what can be improved in the update loop.
This should just redirect to no 'www', but it should be allowed.
Design pending.
// Eventually, it would be cool if drawing could be moved out of the
// main update loop. How we do it, I'm not positive, but I'm thinking we
// could just call window.requestDrawFrame or whatever and pass in the main
// draw() function, and have update() called in an interval where we
// regulate the speed with an updatesPerSecond counter. This would allow
// us to better control start/stops of the update loop too, and make it
// easier to pass in different update() functions for different modes of
// the game.
Probably not high priority for this project. Wanted to document this idea somewhere and remove the comment from the code. We should have separate threads for drawing and updating state information. I guess we should have some way to compensate if drawing gets too far behind? ...or does that just mean the player's on a slow computer so it starts to look jittery?
Anyway moving draw() out of update() would make it much easier to change modes for different scenes and would probably help our frame rate actually.
Need sprites for a police officer character, 64x64, in the up, down, left, and right directions.
Windows pre-7, Firefox browser. They've apparently left the tutorial, and the arrow keys are not producing movement.
Need walk animations for a 64x64 thug character in the up, down, left, and right directions.
W, A, and S work, but D does not.
experienced in Firefox.
This is the level currently known as Level2. Please port that to Level 4.
medium
24 beers to win
3:00 minutes
3 cars
2 NPCs
Any player should be able to skip the tutorial. This may require some changes to the UI engine.
Level 8 needs designed. Please document the design here: https://github.com/morendi/BeerRun/wiki/Levels
The controls screen should show up at the end of the tutorial, just before the level requirements screen. Fix this order mismatch.
We need a screen to display the player's score upon winning, or losing, a level.
I want at least two:
NPC behavior should by default always avoid obstacles like cars and blocking tiles. They should revert to bored behavior when the player is not nearby, and then invoke their aggressive behavior when the player is nearby.
Level1 needs to be designed, implemented, and hooked into the game.
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.