A hoptastic game. Joint project with Spicy Lobster.

Overview

Hoppy

A Gamercade game.

A WIP Game based on Jump 'n Bump and Super Mario War.

The game rom .gcrom can be played using the Gamercade console

The editor file .gce can be viewed using the Gamercade Editor

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Comments
  • Proof of Concept To Do List

    Proof of Concept To Do List

    These are the steps we need to take in order to complete a proof of concept for the game.

    Main Topics

    • [x] Characters can move left/right
    • [x] Characters can jump
    • [x] Characters can bonk
    • [x] Characters can respawn
    • [x] Characters are drawn using art assets

    Characters can move left/right

    • [x] Add the characters to the physics system & store their handles in components
    • [x] Add a ground plane or other surface.
    • [x] Add ability for ground plane to block characters.
    • [x] Players positions are affected by input velocity.

    Characters can Jump

    • [x] Create a player state enum, for tracking grounded, jumping, etc
    • [x] Inside of check input_system if the user presses a button & they are grounded,
    • [x] If ok, give them some vertical velocity.
    • [x] Update the enum to the jumping state.

    Characters can bonk

    • [x] Check for collisions between players
    • [x] If a player is above (self.y > other.y) another & their velocity is downards, bonk em

    Characters can respawn

    • [x] Any player who is bonk'ed is respawned at a random position within the play area.
    • [x] Reset any related physics things.

    Characters are drawn using art assets

    • [x] Import the art assets, generate palettes, as necessary
    • [x] Convert them to the Gamercade sprite format using the editor
    • [x] Set player images to these sprites & draw them
    opened by RobDavenport 1
  • Physics System Rework Discussion

    Physics System Rework Discussion

    Related to #4 and #2

    Currently, we are using the (very awesome) crate Rapier.rs for our physics and collision logic. It's an extremely full-featured create, intended for more general physics simulations.

    I wonder if this is overkill for the simplistic and arcade-y nature of the game. For example, some conversions need to be made between "pixel/screen space" and "physics space" when drawing the characters. We also need to constantly juggle between the concept of real physics for numerical values like gravity (represented in meters / second), character sizes (also represented ni meters), and the character sizes which... are probably only a few centimers tall 😂

    There's an argument for moving to a much more simpler physics system, something faster, simple, pixel driven, which can be much easier to reason about and not require serious mathematics knowledge to use. Also, generally character controllers are going to be kinematic bodies anyway, so we lose much of the features from Rapier anyway, because we are updating the locations of our players through code and not through the phyics engine.

    This article aboute Celeste & Towerfalls Physics is a great example. Macroquad also has a similar macroquad-platformer crate which is also based on the Celeste & Towerfall article and may be applicable here. Jumpy, another Spicy Lobster game, has a quite minimal physics example here.

    Does anyone have suggestions as to why we should keep things the way they are? Or does it seem like moving to a simpler physics solution seem more beneficial in the long run?

    help wanted 
    opened by RobDavenport 0
  • Characters penetrate through the ground

    Characters penetrate through the ground

    Due to using kinematic movement, the characters penetrate through the ground when colliding.

    This shouldnt happen, we can probably set the location by modifying the collision response code and setting the player to the top of the AABB.

    bug good first issue 
    opened by RobDavenport 0
  • Draw a Static Background

    Draw a Static Background

    Currently, we only draw a single color background (the clear color :D)

    We should have a static background image! This shouldn't be too hard to do with the following outline:

    • [ ] Get a background art asset (should be the same size as the game's resolution). Should be limited to 64 colors due to palette limitations.
    • [ ] Import said image into the editor as a new sprite sheet & sprite
    • [ ] Remove the call to clear_screen and replace it with...
    • [ ] Draw the background image! Before players of course
    enhancement good first issue 
    opened by RobDavenport 0
  • Tile-Based Map System

    Tile-Based Map System

    It would be great to have a tile-based map system, similar to other retro games from the time.

    I could see this as simply defining an enum type for tiles, something like None, Floor to start with and then figure out how to do more interesting maps later, like decorative tiles

    And then for rendering, we can just loop through the whole list and render them as sprites, before players.

    Some of the first few steps we need to do are:

    • [ ] Define the correct tile size, in pixels, which would allow us to determine the map size.
    • [ ] Build the super-simple Tile Enum.
    • [ ] Import the tiles into the editor & rom art assets.
    • [ ] Update the render system to draw them!
    enhancement help wanted 
    opened by RobDavenport 0
  • Player Movement Improvements

    Player Movement Improvements

    Currently, the player slides endlessly. We need to improve the feel of the game by:

    • [ ] Allow jump height to increase the longer the button is held
    • [ ] Add some acceleration up-to-a-maximum speed
    • [ ] When the player lets go of a movement button, they should decelerate to zero.
    enhancement 
    opened by RobDavenport 0
  • Animation Implementation

    Animation Implementation

    Animation sprites are included in the .gce file but they are not used in game. We should have animation states for:

    • [x] Idle
    • [x] Running
    • [ ] Jumping Up
    • [ ] Jumping Falling
    enhancement 
    opened by RobDavenport 0
Releases(v0.0.1)
  • v0.0.1(Aug 21, 2022)

    Our first release of Hoppy!

    This concludes the "proof of concept" which inlcudes a very small (but very important) set of features:

    • Fish can move left and right
    • Fish can hop
    • Fish can bonk
    • Fish can respawn
    • Fish are rendered as fish

    Generally all of these tasks fell under this singular issue: #1

    In order to play the game, you will need a recent version of Gamercade Console. Once you have that, run it, and press the "Load game" button. Find the hoppy_game.gcrom file, and it should fire up. Note that if you play a single player game, you'll be all alone there, so maybe try hosting it with two instances of the console running.

    If you have any questions, please report them or ask here.

    If you're interested in contibuting to the project, consider joining either the Gamercade Discord or Spicy Lobster Discord, or checking open issues here.

    Source code(tar.gz)
    Source code(zip)
    hoppy_game.gcrom(704.86 KB)
My first Real-Time 3D Game Engine learning project written in Rust.

EyeEngine-Rust FOA, sry for my poor English. What is Eye Engine? Eye Engine is my first Real-Time 3D Game Engine learning project. There are two editi

F-seeeye 4 Jan 5, 2022
Facilitate the process of creating a decompilation project for a given Wii/Gamecube game

dadosod Facilitate the process of creating a decompilation project for a given Wii/Gamecube game Features Disassembly DOL Guess/Calculate common secti

Wesley Moret 7 Dec 7, 2022
Victorem - easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust.

Victorem Easy UDP game server and client framework for creating simple 2D and 3D online game prototype in Rust. Example Cargo.toml [dependencies] vict

Victor Winbringer 27 Jan 7, 2023
2-player game made with Rust and "ggez" engine, based on "Conway's Game of Life"

fight-for-your-life A 2-player game based on the "Conway's Game of Life", made with Rust and the game engine "ggez". Create shapes on the grid that wi

Petros 3 Oct 25, 2021
2d Endless Runner Game made with Bevy Game Engine

Cute-runner A 2d Endless Runner Game made with Bevy Game Engine. Table of contents Project Infos Usage Screenshots Disclaimer Project Infos Date: Sept

JoaoMarinho 2 Jul 15, 2022
A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it techinically works

rustetris A tetris game I wrote in rust using ncurses. I'm sure that there's a better way to write a tetris game, and the code may be sus, but it tech

Eric G 3 Oct 15, 2022
A game for the game jam "1-Button Jam 2021"

One click ninja A game for the game jam "1-Button Jam 2021" written in Rust with the Bevy engine. A rhythm game, where you play a soldier that can def

Alex Helfet 7 Apr 12, 2022
A game of snake written in Rust using the Bevy game engine, targeting WebGL2

Snake using the Bevy Game Engine Prerequisites cargo install cargo-make Build and serve WASM version Set your local ip address in Makefile.toml (loca

Michael Dorst 0 Dec 26, 2021
Wasm game of life - A Rust and WebAssembly tutorial implementing the Game of Life

wasm_game_of_life Conway's Game of Life in Rust and WebAssembly Contributing | Chat Built with ?? ?? by The Rust and WebAssembly Working Group About T

Rust and WebAssembly 236 Dec 24, 2022
My first attempt at game programming. This is a simple target shooting game built in macroquad.

sergio My first attempt at game programming. This is a simple target shooting game built in macroquad. Rules Hit a target to increase score by 1 Score

Laz 1 Jan 11, 2022
Conway's Game of Life implemented for Game Boy Advance in Rust

game-of-life An implementation of a Conway's Game of Life environment on GBA. The ultimate game should have two modes: Edit and Run mode which can be

Shane Snover 1 Feb 16, 2022
A game made in one week for the Bevy engine's first game jam

¿Quien es el MechaBurro? An entry for the first Bevy game jam following the theme of "Unfair Advantage." It was made in one week using the wonderful B

mike 20 Dec 23, 2022
A Client/Server game networking plugin using QUIC, for the Bevy game engine.

Bevy Quinnet A Client/Server game networking plugin using QUIC, for the Bevy game engine. Bevy Quinnet QUIC as a game networking protocol Features Roa

Gilles Henaux 65 Feb 20, 2023
Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game

Managed game servers, matchmaking, and DDoS mitigation that lets you focus on building your game. Home - Docs - Twitter - Discord ?? Features Everythi

Rivet 58 Jun 25, 2023
The OpenTimelineIO crate is maintained by the vfx-rs project

opentimelineio-bind Rust binding for OpenTimelineIO library The OpenTimelineIO crate is maintained by the vfx-rs project Supported Platforms OpenTimel

null 4 Nov 2, 2022
UnoLife is a project made solely in rust for the Timathon jam.

UnoLife, the way of unordinary life This is the perfect app for anyone looking to spice up their life! It has a bunch of apps and features to help you

Bunch-of-cells 9 Nov 23, 2022
A data compatibility project for Minecraft's assets

Data Compat MC Data tool for the Falcon MC project. Description DataCompatMC is a cli tool designed to help deal with the many different versions of M

GrizzlT 5 Dec 11, 2022
A data compatibility project for Minecraft's assets

Data Compat MC Data tool for the Falcon MC project. Description DataCompatMC is a cli tool designed to help deal with the many different versions of M

FalconMC 2 Jul 6, 2022
A Rust wrapper and bindings of Allegro 5 game programming library

RustAllegro A thin Rust wrapper of Allegro 5. Game loop example extern crate allegro; extern crate allegro_font; use allegro::*; use allegro_font::*;

null 80 Dec 31, 2022