Code Monkey home page Code Monkey logo

oypugame's Introduction

OypuGame

Goal

Create an easily accessible multiplayer version of PuyoPuyo, resembling Tetris Friends.

Overview

OypuGame is the game/user side of the Oypu online game. Oypu is a PuyoPuyo-like puzzle game played entirely in the web with online multiplayer functionality. Online functionality is aided by OypuServer.

Technologies

OypuGame is created with Phaser and communication with OypuServer is made through Socket.io.

Original Version

A while back, I made a version of PuyoPuyo that you can still play. It's not perfect and forgoes a lot of the additional features. Try it out on itch.io (Source Code).

RCOS Proposal

View on Google Docs

Features

  • Offline Gameplay
    • Piece Rotation
    • Piece Detection
      • Chain Removal
      • Sprite Swaps
    • Piece Gravity
    • Next Piece Preview
    • Scoring
      • Combo Detection
      • Score Display
      • Score Gained Display
  • Custom Piece Sprites
    • Piece Sprite Animations
  • Board Sprite
  • Online "versus" Gameplay
    • Server Multiplayer
    • Multiple Displayed Boards
    • Player Garbage Interactivity
    • Account Login
  • Stats Menu
  • Rankings
    • "Elo" or other system

Current Maintainers

License

OypuGame is licensed under the MIT License. See LICENSE for additional details.

oypugame's People

Contributors

taliyos avatar

Watchers

 avatar

oypugame's Issues

Button Hitbox generation

Create method to automatically create a hitbox around the buttons text and image. Keep in mind that there are cases where there is text but no image, image but no text, and both image and text. There can only be one image and one text and maximum though.

The point of this is to allow users to click on either the image or text to press the button instead of one or the other. The final implementation should work for both clicks, hovers, and any other interaction event. This should be accomplished by overwritting phaser's automatic hitbox generation inside setInteractive()

Flash/Piece "Pop" Animation

Before pieces are removed, an animation should be played to show that a chain was detected.

In Puyo Puyo, this is typically done by flashing the pieces.

Scoring

A scoring system should be implemented to keep track of how the player is doing. This will additionally be useful when determining how to send "garbage" over the other players in multiplayer.

Scoring should be similar to Puyo Puyo, where continuous layers of chains are given higher rewards than a single layer.

Additional details will need to be researched.

Board Creation

Create board representation within Phaser. This is the board where the pieces will go, so the data structure behind it is important to get right. In PuyoJS, this is handled with a 2D matrix. Other solutions will be investigated before implementation.

Preview Animations

Implement a smooth transition between preview pieces.

This means that the PiecePreview should be modified to transition from the futurePiece to the nextPiece. When the nextPiece is used, it should go up and fade out before being removed.

Image Interactions

Allow for images to be clicked with the mouse pointer. This should use a technique similar to that of ButtonText. This is the "InteractiveImage" version of the InteractiveText.

This will be used in the UI and not be used in the gameplay.

Piece Preview Sprites

As of now, the piece preview uses a simple red box. This should be changed to match the style (and just look better). No specific guidelines at the moment, position of the preview pieces can also be changed to accommodate a new design.

Scene Switching

Allow for the Phaser scene to be switched in game.

The test case would be going from the main menu to the offline game.

Ideally, this implementation allows for load screens and transitions, but those will be added later on to allow for more focus to be put on the function of the game.

Piece Construction

Every created piece is a 2x1 with two random colors. Each piece, other than when falling down, acts independently and should not be considered "attached".

To distinguish between the two separate "containers", we have the FallingPiece and Piece
A falling piece is a 2x1 construction of two pieces.

  • A falling piece can be rotated in 90 degree increments
  • After touching a solid piece (one that has already fallen) or the bottom of the board, the falling piece should lock in place, separate, and activate gravity on the individual pieces

A piece is of a random color (of 5 possibilities)

  • Can have gravity enabled or disabled
  • Should contain an update function to check if the piece is in a chain and has ground underneath them

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.