rbwhitaker / indy-500 Goto Github PK
View Code? Open in Web Editor NEWA game we are making for a collab, which is a clone of the classic Indy 500 arcade game.
License: MIT License
A game we are making for a collab, which is a clone of the classic Indy 500 arcade game.
License: MIT License
We need some maps to use in the game. The structure of the map, ultimately, will come out of #1, but the importing logic needs to be defined as a part of this issue, and one or more maps need to be created.
Whoever does this work can do whatever they want, but I can imagine just building our own really simple text-based format. Maybe something like:
Easy Track // First line is the title
24x40 // The size
X,10,True // Defines a character used in the map, the max speed, and whether crossing into it should result in stopping
.,1,False
// Blank line to separate metadata from map data
XXXXXX // The map contents itself
X....X // This one isn't sized right and should actually probably fail to load.
X.XX.X
X.XX.X
X....X
XXXXXX
If a player is telling their vehicle to move forward, then it should accelerate. This doesn't have to account for turning or crashing into walls or anything. Just go!
This probably also requires allowing resizing the window.
It would be good if the rendering component of the game could support any size window and any size map.
The track is 24x40 in the original game. That's a reasonable default, but we want to allow for boards of other sizes too.
In the past with these collabs, we often don't get a full UI and menu system built. That's typically lower priority than the actual game mechanics.
In these cases, it is nice to be able to have the game's configuration definable in a config file (JSON or YML or even XML or our own key-value pair or entity-attribute-value format, as long as it is easy to parse). This can be useful for changing what mode of the game to run without having to build the full UI to configure it. Instead of building a UI, you close the program, edit the config, and launch it again.
Whoever does this work should feel free to pick any of the above, or anything else that you like. (If you're doing something crazy, bring it up for discussion.)
But we could do something like:
[Window]
FullScreen=True
Width=1920
Height=1080
[Debug]
Enabled=True
[GamePlay]
Mode=Race
Laps=5
Map=Basic
We'd add new properties as we build the functionality.
I don't know what this looks like, but maybe there's a way to do mouse input. It might be worth a try to come up with a workable scheme if somebody is interested.
This is the first step in a simple menu system. The game should launch in the main menu, and then when the player starts a game, it should transition to the game. And that is it right now.
We need to define the basic properties of a player's car, including things like:
If somebody has an Xbox controller that they want to try to implement a control scheme for, they should do it!
Builds on #4.
The vehicle can turn based on the rate that the player is turning it.
This doesn't have to worry about collision detection with anything.
The goal is to get around the track a set number of times. You win if you're first to do that.
Some fancy graphics would be nice.
We need to define an IPlayer
that captures how a player interacts with the game. This can then be implemented by an AI player, a keyboard player, a mouse player, a gamepad player, a networked player, etc.
This probably needs to give the player a chance to see the game time and the current state of the game (including positions of all vehicles and their speeds, etc.) and have it provide back to the game their instructions (rate of acceleration, brake (?), rate of turning).
This should probably be broken down into smaller pieces. But some places where a few particle effects might go a long way:
We need to be able to draw the basic game board and the cars where they are at.
In the original game, when you go off the screen, you wrap around. We should do this too.
You could easily add in new types of cars to choose from that have different turning rates, different acceleration rates (even for different terrain types), and different multipliers on max speeds.
We'd probably want to also visually distinguish these types from each other.
A target generates randomly. First player to touch it gets a point. First to N points wins.
I feel like the modes in the original game are a good start (and I haven't listed the ice rally yet) but designing additional modes would be a cool thing to have as well.
Some of these might demand other properties on the track, the vehicles, etc. We can do that if there's an interesting game mode that we want to do.
It might be fun to allow for more than 2 players. 4 shouldn't be too hard. If we're doing networking, 8 or even 16 might be possible... (Maybe we need other modes for this and other maps.)
When you're not "It", you collect points over time. When you're "It" you have to try to crash into the other player. Doing so will make them "It" and you start collecting the points.
(If we're allowing more than two people, we might need to reverse this a little, so that the person who is "It" is being chased by the masses, so that only one person is accumulating points at a time.)
Builds on #5.
If you cross a boundary, you should come to a stop.
Being able to play this game across the network would be fun. (It's probably not my personal top priority, but if somebody wanted to even spend the entirety of their time doing this, they should do it!)
If somebody does this, they can feel free to tackle it anyway they want, but I might suggest the following:
IPlayer
like the xbox controller, keyboard, and AI players.Maybe somebody wants to do a camera that tracks the vehicle (how do you do this when the game wraps around? It's doable, but not trivial) and then do split screen for N players. Given the way you steer the vehicles (relative, rather than absolute--but now that I think about it, that might be a good way to build the input scheme) it might be easier with a camera that tracks the player's position and heading.
This might be the easiest one to implement, and while we're developing, we're all going to have a keyboard. Left/right for go and space for accelerate? Or anything else. (Also maybe allow for keyboard mapping in the config as a separate thing.)
We need some sound effects for the motors. It would be especially cool if this could change pitch based on speed (and gear?!).
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.