hakase-labs / hikari Goto Github PK
View Code? Open in Web Editor NEWMega Man/Rockman game clone written by nerds for nerds.
Mega Man/Rockman game clone written by nerds for nerds.
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.
Weapons should be able to specify a palette. When the weapon is used by Rockman he can use the palette to change colors.
By implementing fading as a task it can be reused more easily in other parts of the application where fades are needed.
Right now the weapon energy bar is never shown, it should be shown when using any weapon that is not the mega buster.
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.
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.
Doesn't fail with a good message: "File not found". This needs to fail more gracefully and give a better message.
Need to emulate palette swapping using shaders.
Spec out Weapon, Project, and Ammunition. You can "fire" a Weapon by firing an event. The world can listen for that event and make the magic happen.
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.
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:
Audio is sometimes annoying when testing so it should be made configurable through the conf.json file.
If Rockman dies while in the water and then respawns on land, when he respawns it will create a water splash at his location. After death, it seems like the "isInWater" flag needs to be reset so that this doesn't happen.
A class that can wrap an sf::Sprite and couple it with an Animation, an AnimationPlayer, and probably a sf::Shader.
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.
In fact, I think a lot of normalization needs to take place to make sure that things are where they are declared to be. Some things are relative, some are absolute. Where things are needs to be more clearly defined so that when you look at the JSON file you can understand what the heck is going on.
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.
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.
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.
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).
Weapons should have a finite amount of energy and "run" out with use.
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.
Currently items can be collected, but extra lives don't actually give you an extra life. Evaluation criteria:
Currently items can be collected, but health pellets don't actually give you any more health. Evaluation criteria:
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.
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.
When changing weapons, the weapon energy palette should have the same colors as in the palette.
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.
Currently items can be collected, but weapon pellets don't actually give you any more weapon energy. Evaluation criteria:
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.
Currently items can be collected, but e-tanks don't actually give you an e-tank. Evaluation criteria:
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.
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.
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.
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.
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.
The weapons menu doesn't reflect the actual state of affairs. It should show how much each weapon has, how much life Rock has, etc.
New version of Squirrel released; should upgrade to latest version to get bugfixes, etc.
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.
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.
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.
Scripts need to be able to issue requests for sound effects and music playback.
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.
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.
Object "template" parsing needs to be implemented for Items, Enemies, etc.
When ending a slide sometimes the camera jitters when Rock's position is adjusted. There should be no jitter.
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.
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.
When playing, if the player pauses to view the menu screen there should be a slight fade. When exiting the screen there should also be a fade.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.