Code Monkey home page Code Monkey logo

hikari's People

Contributors

zackthehuman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hikari's Issues

Code Cleanup: Remove old Brains/Behaviors

There are still a few Brains and Behaviors lurking around in the C++ source. The Telly and Octopus Battery brains can be removed since their scripts work correctly now.

Damage flashing thing is missing

When Rock gets damaged he's supposed to have these sweat/shock things appear above him. Three of them appear. The implementation varies between different Mega Man games. Sometimes they move with Rock, other times they just appear and stay where they are.

SEGFAULT if bad audio file is specified

If a non-existent file is specified as the music/sample source then the AudioService will SEGFAULT during construction. This should be handled in such a way that it can fail without causing catastrophic failure.

Tested on the Mac build/cmake branch.

Running scripts from scripts should be through virtual file system

This is untested, but it hasn't been implemented so I'm pretty sure it doesn't work correctly. If a script wants to "require" another script, that requiring should be done through the virtual file system. Functions need to be provided to Squirrel so it can read files from the VFS.

Solid objects / platform objects

Currently the only thing that Rock can stand on is solid tiles and ladder tops. It should also be possible to stand on objects that are solid. Examples of this kind of behavior can be seen in the destructible barriers in Mega Man 2 and 3.

Add palette support to weapons

Weapons should be able to specify a palette. When the weapon is used by Rockman he can use the palette to change colors.

Create CMake build files

Cross-platform building is important to take advantage of tooling made available on all platforms. Some of the dependencies are unnecessarily complicated and can be simplified in order to make building the game easier. Some things that need to be done:

  • Merge smaller dependencies directly into the game's source by moving them to /extlibs/ and including the source when building. This avoids having to build and link another library. This can be done for:
    • GME
    • JsonCpp
    • PhysFS-Stream
    • Sqrat
  • Make a clean break from SFML2 and just mark it as a dependency. This way each developer and build it for themselves without having to take the Hakase Labs fork which is really just a mirror.
  • Finish the CMake build/install script for Squirrel3 to make it easier for everyone.

Implement boss door transitions

Implement the transition into a boss corridor and chamber. There needs to be a door, a transition sequence, and the sound effects. The door needs to block on the other end.

Implement weapon pellets

Currently items can be collected, but weapon pellets don't actually give you any more weapon energy. Evaluation criteria:

  • Collecting a small or large weapon pellet should increase your current weapon energy by some amount.
  • Should play the "weapon energy increasing" sound.
  • Gameplay should pause while the weapon energy bar is filling up.

This could be implemented as a blocking Task that runs in the GamePlayState, so that nothing else can happen while the weapon energy is being restored.

Sliding is not sustained when in a tunnel

When sliding through a tunnel (a space where Rock is blocked in top) sliding should continue until there is enough headroom to stand.

Currently Rock slides a set distance and then stops, no matter what. It is possible to get stuck in the wall or a tunnel due to this bug.

The tiles directly above Rock should be tested for solidity in order to determine of slides should continue.

Climbing up "off" a ladder sometimes ejects Rock into air

Sometimes when climbing to the top of a ladder Rock is ejected and becomes airborn for a few frames before falling back into the ladder top. This behavior is buggy and only happens when you transition from being on a ladder to standing at the top.

Player Spawn locations for Rooms

Currently there is no way to specify where Rock teleports in to for any room. There is also no way to mark a room as a "midway" point. Both of these things need to be addressed.

Simpler way to create instances of items, enemies, etc.

Currently there is no facility to create items, enemies, objects, or anything else. They have to be created and configured by the caller which is error-prone and leads to a lot of code. It would be better to have some sort of facility to create these types of things.

Implement e-tanks

Currently items can be collected, but e-tanks don't actually give you an e-tank. Evaluation criteria:

  • Collecting an e-tank should increase your current e-tank count by 1.
  • Should play the "e-tank" sound.

Camera movement not correct to original game

There are times when Rock can actually be off center and the camera will follow him in whichever direction he is off center, only centering when he walks back toward the center of the screen. Hikari currently always snaps to Rock's position as long as its within the camera bounds. This creates sudden jerks when transitions force rock into a non-center location.

Hero weapon not reset when level starts

Rockman should be using the Mega Buster when the level starts. However, if you die using another weapon then when the next round starts Rock will still be using that weapon. Rock should always be using the Mega Buster when a round starts.

Mechanism for spawning/re-spawning enemies and items

There are basic Spawners but they don't perform on-screen and off-screen checks so there is no way to re-spawn and item or enemy when it comes "back" on screen. This needs to be addressed so that enemies work as expected.

Hero direction not reset when level starts

Rockman should be facing right when the level starts. However, if you die facing left then when the next round starts Rock will still be facing left. Rock should always face right when a round starts.

Code Cleanup: Hero.cpp

Hero.cpp is starting to get pretty big, there are several large methods that do a lot of things. Namely, the "ladder detection" code is pretty large and not really that easy to follow.

Implement health pellets

Currently items can be collected, but health pellets don't actually give you any more health. Evaluation criteria:

  • Collecting a small or large health pellet should increase your current health by some amount.
  • Should play the "health increasing" sound.
  • Gameplay should pause while the health bar is filling up.

This could be implemented as a blocking Task that runs in the GamePlayState, so that nothing else can happen while the health is being restored.

Data-driven weapon assignment

There needs to be a data file that controls which weapon can be unlocked in which slot (which, of course, assigns them to a particular boss).

Ladder bugs when transitioning

If the Hero is climbing a ladder through a transition then when he gets on the other side he won't be climbing anymore, so he gets stuck in a weird place climbing. This needs to be fixed because it's really bad.

Boss introduction sequence

After the chamber dorr closes, the energy bar appears and fills up. During this sequence, the boss is lowered down from the ceiling and performs sweet dance moves. I know it sounds dumb, but that's what really happens... and it's awesome.

Weapon system GUI integration

The weapons menu GUI should reflect the true settings of the assigned weapons. Before this can happen the weapon system needs to be built. There needs to be a config setting that assigns certain weapons to certain slots, so that they're unlockable when you defeat a boss.

Implement extra lives

Currently items can be collected, but extra lives don't actually give you an extra life. Evaluation criteria:

  • Collecting an extra life should increase your current life count by 1.
  • Should play the "extra life" sound.

Implement audio service

The audio service exists, but it's very limited. It need to be fleshed out more, and it needs to be able to play sounds and music by ID.

Need AnimationSetCache

Currently obtaining Animation objects is weird and not efficient. It should be simple to create an AnimationSetCache and load the animation sets only once through that.

Proper fades before round start / after death

There should be fading sequences when the round starts (which there is now, but its implementation is less than good) and after player death (and also after the level is complete). These all need to be implemented.

Cannot climb/mount ladders from top

It is not possible to climb on to a ladder that you're standing on top of. If you're currently on a ladder then it's fine, but when standing on top nothing happens when you press down.

This may have to do with ladder tops being treated as platforms. Since you're on "the ground" you can't connect to the ladder.

This is a huge problem because it is not possible to access certain parts of stages if you cannot climb down from the top.

Normalize vector and rectangle usage

Currently there is mixed usage of BoundingBox, Rectangle2D, Vector2D, Vector2, etc., and the usage is not consistent. This creates awkward code where you have to convert one type to another when essentially they are all the same. Some refactoring should be done to make things more compatible with each other.

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.