Here is a detailed blog post about the topic : https://www.radicalfishgames.com/?p=6892
627 karma · joined January 22, 2023
Here is a detailed blog post about the topic : https://www.radicalfishgames.com/?p=6892
More info here, if you're interested : https://jslegenddev.substack.com/p/export-web-games-for-desk...
This post was intended for my existing audience and I didn't expect for it to be posted on HN.
Anyway, now that it's here, feedback on performance is still very much appreciated!
The reason I'm not making this web playable despite being built using web technologies is that I'm targeting Steam for this game. Therefore, I need to make sure the game works well when installed as an executable on Mac, Windows, Linux.
There was already trust established between me and my audience so that's why it felt appropriate to tell them to download executables.
I understand why HN users not familiar with me, would be wary of downloading random executables from the internet. It's a good instinct to have!
Note: I'm not the dev!
As for Phaser VS KAPLAY:
Performance wise, Phaser is still better however there are perfs improvement coming to KAPLAY.
KAPLAY has an easier to use syntax for its API. Things are easier to do in KAPLAY VS Phaser while being less verbose. Phaser however, has more features considering it's more battle tested since it's been around for far longer.
I recommend joining the KAPLAY discord to see what others are building. I'm not aware of any famous games made in KAPLAY yet.
I'm hoping to publish a step by step tutorial soon on how to develop this in JavaScript for anyone interested in learning gamedev.
I usually post my tutorials on my YouTube channel here : https://youtube.com/@jslegenddev (Plenty of tutorials available already for people interested in JS gamedev)
I plan this time on also publishing a written version on my Substack available here : https://jslegenddev.substack.com/
Would you mind describing in more details how the text rendering looks like?
If KAPLAY existed as a WASM runtime or in another language, I would use it.
It's not a direct comparison with Phaser but I think it could give you a clear picture of where Kaplay stands and what it offers compared to Phaser.
Link here : https://www.youtube.com/watch?v=o8a6jXRnYfc
Game was made by Misanthrope. His twitter can be found here : https://x.com/petergencur
The jumping right before hitting an enemy is intended. If you do this, you can then more reliably land on another enemy right after and gain a x2, x3, etc... combo depending on how many enemies you land on before hitting the ground again.
I don't disagree with your points. However, using React for making the UI portion of your game is still using React for game dev. The default would have been to just make your UI within the canvas itself.
Now in the post, I explained that considering option 1) Using React for the game rendering vs 2) Using React only for the UI, I went with 2) and explained why.
However, I want to thank you for explaining why React is unsuitable for rendering the game itself.
Also in terms of UX. I think YouTube playlists aren't that great so there is potential to improve that.
I'm actually looking for a job. So if anyone has any opportunities feel free to contact me at jslegend[at]protonmail.com [at === @]. I'll then send you an actual CV with my skill and experience. I'm looking for fullstack or frontend roles and I'm based in Canada.
I created this portfolio website for my YouTube channel. That's why I haven't put my info there. It's meant more as a template.
If you're interested in learning how I built this project:
You can watch the video tutorial here : https://www.youtube.com/watch?v=gwtfWORCN0U
Or look at the source code directly : https://github.com/JSLegendDev/2d-portfolio-kaboom
// prevent itch.io scrolling
window.addEventListener("keydown", function (e) {
if ([32, 37, 38, 39, 40].indexOf(e.keyCode) > -1) {
e.preventDefault();
}
});I think with React the way to handle state is dictated by the library so there isn't much choice you have to make. You basically have to follow whatever pattern React gives you.
Granted it's not a mobile game but still.
Electron : Known as being bloated, but allows you to make sure that your game is rendered the same on all platforms. It achieves this by shipping a whole chromium browser with a specific version where you game is ran. It's established and there are plenty of resources on how to use it. Another advantage is that you can use the Steam API if you ever wanted to put your games on Steam. This is done through the node Steam API bindings.
NW.js : Same thing as Electron. Less secure by default, you need to go out of your way to implement best security practices. Easier to use than Electron. It's basically drag and drop.
Tauri : Very promising and mobile support coming soon. Unfortunately you can't use the Steam API through the node Steam API bindings. Uses Rust so maybe you can interface with the Steam API through it. It has a JS API which allows you to write your app without needing to write Rust code. Uses the default webview of the OS so is less bloated. Cannot 100% guarantee that the game will be rendered the same on all platforms because unlike Electron it doesn't ship a whole chromium browser.
Neutralinojs : Same principles as Tauri but less popular and more limited.