schmooblidon / meleelight Goto Github PK
View Code? Open in Web Editor NEWMelee Light Platform Fighter
License: Other
Melee Light Platform Fighter
License: Other
Since the rafactor
branch merge, the shield vfx do not appear during a match, while they work just fine in the character select screen. Note that the shield break vfx do work as expected.
I am not getting any errors in the console, but maybe someone adept at debugging can go through and see what is happening.
This issue is happening on both Chrome and Firefox on my end, and with both meleelight.html and meleelightikd.html.
Gif of it in action (I apologize for the quality): https://gyazo.com/ab45fcc91c66296cbfe41af4fbcbab92
not sure how this works just yet. Been on my radar forever
was in the middle of a jab picture here of the crash. Music and background animations still playing too
Sometimes happens with the variant "Cannot read property '0' of undefined" or something like that, but it's less often in my limited experience of playing.
Uncaught TypeError: Cannot read property 'x' of undefined
at physics (physics.js:844)
at update (main.js:908)
at gameTick (main.js:1055)
In main/main.js:643, we are checking to see if either player 1 or player 2 is holding down the traditional quit button combo: L+R+A+START. However, we are checking it like this:
(tempBuffer[0].a || tempBuffer[1].a) && (tempBuffer[0].l || tempBuffer[1].l) && (tempBuffer[0].r || tempBuffer[1].r) && (tempBuffer[0].s || tempBuffer[1].s)
(
Is this really the intended logic? This checks either player 1 or player 2 happen to be holding any of these buttons. In actual Melee, the buttons are checked PER PLAYER as opposed to the logic being combined. With this logic, player 1 and player 2 can accidentally quit the game by playing the game legitimately, such as if player 1 were holding down A+R, and player 2 were holding down L+START.
Link to source: https://github.com/schmooblidon/meleelight/blob/master/src/main/main.js#L643
Willing to make a PR for this :) Would it be welcome?
Did a waveland onto the platform and clipped through the wall (getting a really fast record)
It was the wall to the right 2nd to last platform on the very left side of the stage
I don't think fox's side-b correctly emulates melee's side-b.
He isn't supposed to be able to fall off the ground with his final velocity after the last point he can shorten or whatever
When loading in Safari, an error appears saying that the variable layers cannot be found. This problem did not occur when I used Chrome, but once in Safari, the game would not load. I managed to fix this problem by moving the declaration for layers to the top of the main file. This fixed the error, but I do not want to make a pull request, as you can choose where you want to move the variable.
Here are the main problem points I have found:
interpretInputs
to display buttons, which uses jQuery (takes up about 70% of the time spent on dealing with inputs)Just curious. I'm new to this.
King of the Match
Round robin style(1v1 stock 2 lives in case of tie sudden death) where players in the room go against a "champ". Winner becomes the champ for the next round against next player in the Queue. Example Player A vs Champ, player A wins and becomes champ for player B, in this round player A wins again and player c now faces player A, this time player A looses and player C is now the Champ for player D. Mean while the previous losers are tossed back into the queue and get to choose a new fighter.
Timed drop in
It's a match with a time limit that is free for all and the objective is to KO as many people as possible, people can join or leave at their will and people and join in if there is room. This mode is more possible vs Stock matches with drop in opponents due to no need to calculate stock lives for joining players.
The debug menu doesn't update until the frame after you open it. pls fix.
ALSO the debug menu doesn't show CPU inputs. pls fix
Hey Schmooblidon, huge fan of this project, and I'm really glad you've gone the open source route. I'm extremely interested in contributing, and I wanted to get a sense of where you see this project going, and what you want to work on (first, or at all.) Some things that I think would be extremely helpful to this project are:
Sorry if the title of this issue is overly grandiose.
Uncaught TypeError: Cannot read property 'length' of undefined
at drawArrayPathCompress (render.js:49)
at drawCSS (css.js:752)
at renderTick (main.js:1166)
marth swings sword around seemingly randomly
With the way the code is structured at the moment, routines directly access and change player input data, such as player[i].inputs.lStickAxis[0].x
for the current left/right value on the left analog stick of player i
.
Instead, all functions dealing with input should not change any global variables, and just pass around the input data. This is particularly important to encapsulate the AI code, as by making it strictly return input values instead of changing variables, it will ensure that nothing in the game is being modified and the AI is only submitting inputs, and not mistakenly teleporting players around etc.
This is also a prerequisite for netplay.
I am currently working on this with the interpretInputs
branches. All help appreciated.
We don't currently have any part of the code that has JSDoc style comments, but when we start writing proper classes for things, we should definitely follow this style. This issue represents adding some build process for generating documentation based off of jsdoc comments.
The volume sliders on the audio screen are not rendering properly:
Issue #58 could possibly be related.
Right now a handful of places rely on jQuery, but not enough to warrant the library as a whole. It's currently only used for minor DOM manipulation that could easily be done with vanilla javascript, and for the $.extend deep copying, which we could have a small utility function take care of.
The character jumps when pressing up while holding the space key.
The character select screen can end up glitched as follows:
Reproduction: start the game, go into options -> audio, then go back to the main menu and go into versus. Issue happens 100% of the time on my end, on both Firefox and Chrome.
Issue #60 might be related.
The team agreed that this would be the best config to use https://www.npmjs.com/package/eslint-config-airbnb We should convert all currently linted code to it, but leave files that have /*eslint-disable*/
at the top as-is, those need a lot more rewriting than just linting.
(As of right now, I have been unable to figure out why this happens. Please let me know if you figure it out.)
Sometimes, if you walk/run off of a ledge, you are unable to jump until you have fallen for a while. I have seen this happen a lot, and it seems to be random. Sometimes it happens only once during a match, other times it will always happen during a match. I currently cannot do this on purpose, I will update you all if I figure it out. UPDATE: It seems like if you fall a certain distance, it won't allow you to jump. The distance at which this occurs and whether or not it delays the jump still seems inconsistent.
Animations come in at a pretty hefty ~6mb per character, and incur a pretty heavy load on the CPU when initialized. Right now we load every character's animations up front. This could be deferred until the character is selected.
The Web Audio API is strong enough, and support for it is wide enough, that audio code can stand on its own without needing this library to handle it.
Melee Light is a perfect candidate for http://electron.atom.io/. If sufficiently complicated, consider spinning off in to a new repository / milestone.
A stub of the steps is available over here, but specific gecko codes, a list of action states to capture, and some general tips would be nice: https://github.com/schmooblidon/meleelight/wiki/Converting-character-animations
I believe the Electron version needs to be updated.
error /Users/andrew/Desktop/meleelight/node_modules/electron: Command failed.
Exit code: 1
Command: sh
Arguments: -c node install.js
Directory: /Users/andrew/Desktop/meleelight/node_modules/electron
Output:
/Users/andrew/Desktop/meleelight/node_modules/electron/install.js:48
throw err
^
Error: Failed to find Electron v1.8.0 for darwin-x64 at https://github.com/electron/electron/releases/download/v1.8.0/electron-v1.8.0-darwin-x64.zip
at Request.<anonymous> (/Users/andrew/Desktop/meleelight/node_modules/nugget/index.js:169:61)
at emitOne (events.js:115:13)
at Request.emit (events.js:210:7)
Shield dropping after a dash doesn't work properly.
https://liquipedia.net/smash/Shield_drop
[ ] Dash, then shield on frame 5, then hold down.
[ ] Dash, then hold down, then shield on frame 5 or later, while still holding down.
Not sure if it's just me, but Fox and Falco's Side B crashes whenever I hit Marth.
At the same time, everytime Fox or Falco shoots a laser, the entire game crashes. This also happens with laser throws.
When in the air, if you are holding left on the keyboard and tap up, you don't jump.
I rely a lot (too much?) on tap jump on keyboard, esp. for Puff. And I have SD'd many times because of this.
This issue doesn't encompass writing the full suite of tests, just laying the groundwork for being able to write tests going forward. I'm a big fan of Mocha, but we may want to look at an abstraction of tests like Karma so that we can integrate other types of testing as well.
When respawning on the revival platform, the only registered inputs are control stick input. Instead, it should be possible to input any action while on the revival platform to get out of it (jump, attack, etc).
Now that all of the global variables have been identified by the earlier refactoring effort. It is time to incrementally rescope these variables into their respective homes. This will then allow us to restructure each major module and eventually the game loop.
below are the circles. The module on the right depends on the one to the left.
main/main -> main/ai
main/main -> main/render
main/main -> main/render -> main/vfx
main/render -> main/vfx
main/main -> main/render -> physics/actionStateShortcuts
main/main -> menus/audiomenu
main/main -> menus/audiomenu -> menus/menu
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> menus/css
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> stages/stages
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> target/targetbuilder
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> target/targetbuilder -> stages/stagerender
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> target/targetbuilder -> stages/stagerender -> target/targetplay
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> target/targetbuilder -> stages/stagerender -> target/targetplay -> physics/article
main/main -> menus/audiomenu -> menus/menu -> menus/targetselect -> target/targetbuilder -> stages/stagerender -> target/targetplay -> physics/article -> physics/hitDetection
stages/stagerender -> target/targetplay
target/targetbuilder -> stages/stagerender -> target/targetplay
main/main -> menus/credits
main/main -> menus/gameplaymenu
main/main -> menus/keyboardmenu
main/main -> menus/stageselect
main/main -> menus/startscreen
main/main -> menus/startup
main/main -> physics/physics
characters/fox/moves/index -> characters/fox/moves/ATTACKAIRB
characters/fox/moves/index -> characters/fox/moves/ATTACKAIRF
characters/fox/moves/index -> characters/fox/moves/ATTACKAIRN
characters/fox/moves/index -> characters/fox/moves/ATTACKAIRU
characters/fox/moves/index -> characters/fox/moves/ATTACKDASH
characters/fox/moves/index -> characters/fox/moves/DOWNSMASH
characters/fox/moves/DOWNSPECIALAIR -> characters/fox/moves/DOWNSPECIALGROUND
characters/fox/moves/index -> characters/fox/moves/DOWNTILT
characters/fox/moves/index -> characters/fox/moves/JAB1 -> characters/fox/moves/JAB2
characters/fox/moves/index -> characters/fox/moves/JAB1
characters/fox/moves/index -> characters/fox/moves/UPTILT
I would recommend starting at the shortest ones and work towards the larger ones. There are several cases where several globals from main are needed in other modules. depending on what's happening, we can possibly create modules to handle those. Ill fill in more detail as we make progress.
The amount of repeated code across the characters is pretty high, so we should try to move as much of the boilerplate over to a well-documented Character class. This also includes action states, as they come with a lot of boilerplate each as well.
As pointed out by @mastermark5, some of the code surrounding the interpretInputs function is a bit confusingly named. At every step we should clearly differentiate between:
This is something that could benefit nicely from flow type annotations.
Some additional comments about what the code is doing would also be helpful.
All the automation in the world will never replace a human checklist of things to test before making a new release. Please add one to the wiki, ideally broken out in to sections so that we can divide and conquer.
Right now sfx.js starts downloading all of the game's audio files immediately on execution. These should be deferred wherever possible. Stage music should only be loaded when that stage is selected, character audio files should only be loaded when that character is selected, etc.
Right now, (at least on the stage select screen) the cursor can go VERY far off screen, and can take a very long time to get back. If there is any way, I think it would be useful to add boundaries as to where the cursor can go.
When tap jump is disabled, it becomes harder to perform up and down smashes.
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.