paladin-t / fantasy

A curated list of available fantasy consoles/computers.
https://paladin-t.github.io/fantasy/index
Creative Commons Zero v1.0 Universal
1.4k stars 79 forks source link

Added WASM-4. #71

Closed aduros closed 3 years ago

aduros commented 3 years ago

For your consideration :smiley:

paladin-t commented 3 years ago

I saw it's playable in browser. Just a quick question, is there an entry where developers can download or use the full featured dev environment? Without installing npm for non-nodejs users?

aduros commented 3 years ago

Thanks, at the moment npm is required. I think we could provide native executables though: https://github.com/aduros/wasm4/issues/29

paladin-t commented 3 years ago

Good to know. Will add then.

aduros commented 3 years ago

We now have a standalone download with no dependencies: https://wasm4.org/docs/getting-started/setup/

paladin-t commented 3 years ago

Sorry maybe I haven't make it clear. The w4 tool is now downloadable and runnable within few mouse clicks, but it still requires installing additional compilers to work. I think the current version doesn't change the fact that WASM-4 hasn't yet with all necessary toolchain built-in, that makes it closer to a shell other than FC.

I'd add this when WASM-4 has at least one language compiler (AssemblyScript/C,C++/Rust/Go) built-in, for at least one platform (browser/natives).

eXponenta commented 3 years ago

I'd add this when WASM-4 has at least one language compiler (AssemblyScript/C,C++/Rust/Go) built-in, for at least one platform (browser/natives).

Really this is impossible, because WASM has a lot of backends and toolsets. You can not use a fixed toolset for developing a game, because for example, GO or Rust, EMCC required specific ecosystem and selected by developer. AssemblyScript can be used locally, but every time is updated. Wasm4 console required to have a lot of skills on strict native-target typed languages and their build systems, you cannot use it simple as other high level scripted consoles on LUA or JS or Basic.

Generic requirements for Consoles is console-specific API headers and some CLI for wrapping/init /publishing a project.

Same as real consoles - you can use different toolsets/engines etc. that can generate valid package that should be prepared then by DEVKit publishing tool.

There are not real reason for blocking :)

UPD: We can ship a wat2wasm with a standalone or online devtools, and it will working, and will match to your rules, but nobody will use it.

MaxGraey commented 3 years ago

You have already enabled the following consoles, which don't use builtin high-level language but use ASM (Vistual ISA) instead:

wasm4 сould have been included for the same reason. Only it would be marked as WASM (also vistual ISA).

aduros commented 3 years ago

@MaxGraey I think the issue is not that it's assembly but that WASM-4 doesn't come bundled with a compiler, which is a fair point.

Would it help if we included direct download links for the different compilers under the WASM-4 download link? I'm a bit reluctant to bundle a compiler because we would have to change the build system to something non-standard.

For what it's worth, there are FCs on this list that have external dependencies (Leikr requires Java, Pyxel requires Python).

paladin-t commented 3 years ago

A native program requires stdc, etc. as runtime, Java and Python plays similar role there.

The point is a fantasy console should be shipped with at least one way that allows user to program it, this feature distinguishes it from a real console. Despite it's done in high-level language or assembly. I haven't played WASM-4 for long, so I could be wrong. I'd say ok if it offers an assembler. I think WASM-4 uses many language frontends, and works as a common backend itself, maybe it already implemented some sort of assembler that interprets/compiles frontends output to WASM-4 instructions? And could a user write ASM by hand?

MaxGraey commented 3 years ago

I guess the simplest approach could be pre-installed and prepared wat2wasm util (part of wabt.js) which looks like this: https://webassembly.github.io/wabt/demo/wat2wasm @paladin-t Will that be enough?

paladin-t commented 3 years ago

I guess the simplest approach could be pre-installed and prepared wat2wasm util (part of wabt.js) which looks like this: https://webassembly.github.io/wabt/demo/wat2wasm

I think it helps.

aduros commented 3 years ago

Thanks @paladin-t !