Coder Social home page Coder Social logo

the-flying-cube-game's Introduction

The Flying Cube Game! ๐ŸŸฅ๐Ÿ’จ

Hi!

This project is intended to help introduce you to Open Source as part of MLH 2023 Global Hack Week: GAMES! It's a JavaScript-based 3D game built with Babylon.JS that lets you fly a Cube through a set of obstacles.

When you create a repository from this template, a series of Issues will be generated that you can pick up to get started.

The entire project can be run by opening game/index.html in a browser. All of the 3rd party dependencies like Babylon are using a CDN so you do not need Node or a local developer environment.

๐Ÿง™โ€ New Open Sourcerers

If you're new to GitHub you can get started by creating a new repository by clicking Use this template and then selecting Create a new repository to create a copy of this repository into your own GitHub account. This is where you can make your own changes!

The green button used to create a new repository from this template

If you want to keep learning about GitHub you can check out GitHub Skills.

If you're new to Babylon JS that's fine too! Here are some helpful links to help you get started. Babylon runs in your browser and this game should work on your Phone, Tablet or PC - you can make and test your changes from any of those devices! If something doesn't work you can enter the developer mode of your browser (F12 on Edge or Chrome) and explore the errors in the console. This developer mode also lets you insert breakpoints if you want to debug further.

  • The Babylon.JS Playground will let you explore different community samples to learn how Babylon works!
  • The Babylon.JS API has documentation that can help you understand the API.

We've also provided a file that should support launching from VS Code that will allow you to integrate your debugging experience there as well as a devcontainer you can use to develop in if you choose with some recommended extensions pre-installed.

This project is intended as a sandbox for you to learn about GitHub and contributing to Open Source.

Acknowledgements

All the code in this repo was written by Sam Wronski.

the-flying-cube-game's People

Contributors

tadiwanashezvidzarodney avatar

Watchers

 avatar

the-flying-cube-game's Issues

Support Player Scoring

Add the ability to score in the game. The hud file already supports displaying the score but there isn't any way to actually score anything yet.

Let's find a way to earn points and track that!

Some ideas:

  • Score points the longer you are able to play.
  • Score points when an obstacle is past the player (or created)
  • Add coins that can be picked up to earn points
  • Something else?

Art and design

The CubeFlyer game has graphics that are somewhat basic - it is a cube flying through blocks. This can be improved, so those attendees with an art or design background can help make both the UI and the game graphics better.

An a user interface team, you have been tasked with:

  • Changing the cube for a different object
  • Improving the look of the columns
  • Making general improvements to the user interface such as color schemes, fonts, or the layout

Add High Score View

Add some way to track the High Score over a session that keeps track of how high a player has scored in the hud file and displays the maximum score that anyone has achieved during that play.

Add a configuration service

The game is fun with the current configuration of greetings and gravity, and it may have a local high score if this was implemented by teams in day 1. It would be nicer if this could all be in a service running somewhere that would allow the configuration to be updated without having to change the game code, or for high scores to be persisted.

A lot of software does this - it has certain values set from a configuration service that can be tweaked without redeploying the application based on data gathered from users of the application. For example, in a game if a lot of users are failing to defeat a certain boss, the game can be tweaked through configuration to make the boss easier to beat.

As a software engineering team, you have been tasked with:

  • Creating a service that hosts a web API that you can use to retrieve configuration every time the page is refreshed
  • Adding the ability to store high scores using this web API.

How this is created is up to the team. It can be a local Python/Flask web app that stores the scores in memory, it can use a database to store the scores and configuration, use a cloud-based gaming service, or even a cloud-based serverless application. It depends on the skill level of the team, though the recommendation is to start as simple as possible.

Add more greetings

There are a number of greetings in the Constants file. Lets add a few more to introduce some extra variety to the game.

Need a pause between hitting an object and being able to restart

Not sure if this is a bug report or a feature request.

To Reproduce

  1. Play the game, tapping space to stay flying
  2. Collide with an obstacle just as you tap space to fly
  3. The tapping of space just after the game ends quickly restarts the game, not giving you time to realize you hit an object

Expected behavior
The game should obviously end and give you time to realize before you restart

Documentation

One of the most needed parts of open source projects is documentation. Many developers will want to work on code, but few want to work on docs. This is a shame, as docs are the most important part of an open source project for a new person to start using it. You can have the most perfect library, but it is useless if no-one knows how to use it.

The CubeFlyer project is lacking in good documentation.

As a documentation team, you have been tasked with actually creating documentation. This includes:

  • A markdown file with a guide to running the project locally
  • Documentation on the structure of the code, also as a markdown file
  • Documentation for the features being added by other teams

This documentation should all be in markdown. To add documentation for features being added by other teams, you will need to collaborate with those teams to generate the documentation in tandem. This will be good learning for the other teams to help cement the idea that documentation is a continuous process that includes everyone.

To help you learn markdown syntax, you should work through the Communicate using Markdown lab on GitHub skills.

VS Code has great support for markdown built in, and its markdown functionality can be improved using a number of extensions. You can learn more in the markdown in VS Code documentation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.