Just finished a rough draft of a new Javascript retro game. Would love to have any usability feedback from people. It requires a keyboard, so you can’t play it on a touchscreen or smartphone.
The game is based off a VERY OLD Apple II game I used to play as a kid. While primitive compared to todays games, it was a little challenging since I had to brush up on trigonometry to make things work.
It’s still “Beta” so if you find any bugs/glitches, please let me know which Operating System and Browser you are using. Thanks!
no worries! Made me jump at first and then became a little annoying that I couldn’t turn it down but of course I could turn my comp volume down but that’s normally that’s quite high
Great old school game though. A leaderboard would be good
It’d be nice if the initial screen animations were faster and/or there was a way to bypass them to get back into the game
For some of the functions, I had to use global variables. The only way I know how to do that in Hype is to use something like “window.gameOver = false;” in order for a value to go between scenes and functions. Because of that, I had the game jump from the shot summary scene to the splash scene and reset all of the global variables with window.whatever.
Is there a better way to handle global variables between different functions in Hype? If I could figure that out, I’d have it jump to the scene where the game actually begins.
On a different note, I picked the Ctrl key for firing due to old habits from playing Doom. Plus you don’t have to worry about keyboard repeat rates with the Ctrl key. Good to know about the issue with Ctrl+Left arrow in Safari. Thanks for the feedback!
I would echo many of the previous comments (but had no issue with the control key as the firing mechanism) & add one and a half…
If there is a counter of the amount of shots You have left I missed it - if there isn’t one it would be useful to include… and maybe two levels - beginner with unlimited ammo - expert with “x” amount.
That's how I do it, since globals are part of the window object anyhow. The only other way I've seen that makes sense is @h_classen's suggestion to put them on the hypeDocument object since that will work in the face of multiple hype documents on one page and also not conflict with any other global namespace. (Of course you may be at a rare risk of colliding with a future Hype API if you don't name it distinctive enough!)
In this case perhaps storage that persists across page reloads would be better for determining if you've read the load screen? Cookies or localstorage?
Thanks! I thought about adding something like that, similar to the “Percentage hit” and “Percentage Missed” messages you received at the end of Galaga. If I have time I will add it in. Thanks so much for the feedback!
I’ve been looking for this type of solution for a long time. Thanks so much for pointing it out.
I’ve made some minor changes and just posted the updated results on my website. (Changed the cannon angle range and switched to spacebar instead of ctrl). I will have to allocate a little more time to change all my global variables into hypeDocument Objects but hopefully will get this done in the next week. (Assuming nothing major happens at my regular job in the next few days.)
I just finished two minor changes based on feedback. The gun angle is about 20 degrees wider than before. Also, swapped the Ctrl input with Spacebar to fire. Going to try to re-write everything using the solution posed by @h_classen but that will take a little more time.
Even though it's been suggested I would avoid but only because there is a possibility that something might break down the line if say the Hype API added a property that had the same name BUT there is probably a small chance of this happening.
I'm wondering if there could be a particular property set aside for this? like "global" or "data"? agreed beforehand so that there wouldn't be this conflict.
hypeDocument.global = {
}
Other arguments for not using global scope is memory performance too which is apt as you are designing games but again this is all up for discussion and I would look at each as you build individual projects.
I’d be fine having a name reserved. I’d probably say not global as it is semi inaccurate since it is inherently scoped to the hype document. data would be fine with me but is a bit generic so maybe there’s a better term?