Code Monkey home page Code Monkey logo

supa-maryo's Introduction

supa-maryo (No further planned development at this time..)

  • Live at: numanaral.github.io/supa-maryo.
  • Built purely with web (React, ts & scss) without WebGL, canvas or any game library/framework.
    • You can inspect objects in the game and mess around with them directly in the Debugger Tools!

What's the current progress:

  • You can check the Project & issues for what was completed, but basically you can only really just move around at this point. I only had about 3-4 days to work on it, so the main progress was going to come this weekend (MapEditor, collision, mobs and game state).

Why create this?

  • I actually started working on it for a React Summit conference which I was asked to become a speaker for.
    • Becoming a speaker was a life goal / dream for me, and I wanted to talk about something interesting and not covered by every single react dev already.
    • The goal with this project was not "building a game", but rather show "how to leverage react and its super powers" to create a fast-paced environment which needs handling various states, reacting to events, ways to optimize things, forward-thinking, pain points and their resolutions and so much more. I have been doing react for a long time and I can say that building a games with react allowed me to have deeper understanding of its inner workings. (thus why I thought this would be a great topic)
    • The speakers were selected based on the usefulness of their topics (which I didn't really put much thought into), and I guess my topic was considered useless. I was just too naive to think that I was hand-picked to give a speech.
    • After working on this for on this for two weekends and not hearing anything, I decided to ask what's happening. Turns out, I wasn't selected. Would have been nice if I was told right away at least, but oh well.
    • I was once reminded again not to have high hopes on anything.

So, what are the next steps?

  • Well I am actually quite busy working on some contract projects on the side (on top of my FT work), so I probably won't have any time to work on this as this is no longer a priority for me.
  • I would love to come back to it at some point as I quite enjoyed building it, also would be nice to at least finish the core game, but who knows when that will happen.
  • I actually had another game in my mind to work from a long time ago, so I may even just completely ditch this and never come back to it.
  • Only time will tell..

Sources for the assets / sprites:

  • Note that I modified the sprite-sheets to make life easy for me and to further optimize lodaing assets.
    • You can check originals vs the edited versions in the assets folder.
  • mariomayhem.com
  • spriters-resource.com

supa-maryo's People

Stargazers

 avatar

Watchers

 avatar

supa-maryo's Issues

GameCharacter

Create a GameCharacter component which will display the current character based on the character id.

Handle character actions

Handle character actions based on the keyboard actions. To keep things simple, we are going to ignore collision for now.

Mobs

Create mobs, handle their movement, and detect collision with objects and character.

Handle keyboard actions.

Ensure that we are properly capturing the keyboard actions and we can trigger side effects based on these actions.

NOTE: We need to allow multi-key presses.

GameMap

Create a GameMap component which will display the current level based on the request level id.

Responsive assets

The game assets should scale with the window height. When the user resizes the window, the assets should resize based on the new scale.

NOTE: This shouldn't affect the pixel movement. E.g.
If the character moves 10pxs, the movement should be scaled via the ui and we shouldn't have to move 10px * scale.

Character collision with objects

Detect and handle collision. This will mean:

  • Prevent moving onto an object.
  • Allow standing and jumping from an object.

Objects could be tiles, pipes. Mob collision will be handled in a different issue.

MapEditor: Part 1 - Coordinate marker & generator

For this task, the MapEditor component which will handle generating (bottom, left, type) points for the selected boxes*. When the user clicks on the first bottom left-most box, and selects the type Tile (naming TBD), our MapEditor will generate the following (TBD):

{
  [leftBoxIndex]: {
    [rightBoxIndex]: {
      type: 'Tile'
    }
  }
}

NOTE:

  • boxes refer to a grid item.
.
.
[0, 16], [16, 16], [32, 16] ...
[0, 0], [16, 0], [32, 0] ...

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.