doom-sokol
website
doom-sokol | website | |
---|---|---|
4 | 35 | |
46 | 269 | |
- | 0.4% | |
5.0 | 7.4 | |
8 days ago | about 1 month ago | |
C | CSS | |
GNU General Public License v3.0 only | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
doom-sokol
-
Let's compile like it's 1992
Doom is actually quite easy to build because the source code is already structured to keep the platform-specific parts isolated (Doom was developed on NeXT workstations and then 'downported' to DOS.
For instance here's my WASM port of the Doom shareware version. This is a fork of doomgeneric, which itself is a fork of fbDoom - but midway through I noticed that all the abstractions added by fbDoom and doomgeneric are actually not very helpful for a WASM port that should run in browsers, and that I probably would have been better off forking the original source instead):
Github repo: https://github.com/floooh/doom-sokol
Hosted version: https://floooh.github.io/doom-sokol/
-
WASM Instructions
Here are a couple of real-world examples, these are all C/C++ code bases which run across Linux, macOS, Windows, iOS, Android and in browsers without porting:
Home computer emulators: https://floooh.github.io/tiny8bit/
CPU simulators for Z80 and 6502:
https://floooh.github.io/visualz80remix/
https://floooh.github.io/visual6502remix/
The shareware version of Doom:
https://floooh.github.io/doom-sokol/
Samples for the cross-platform libraries this stuff is built on top: https://floooh.github.io/sokol-html5/
WASM (and asm.js before it) turn the web into "just another platform" for cross-platform code bases written in any language that can compile to WASM, and that's pretty great.
-
Doomgeneric: Make Porting Doom Easier
I started my WASM DOOM port (https://floooh.github.io/doom-sokol/) from doomgeneric which was helpful at first, but since I had to 'slice' the various modal loops in Doom in order to make it work in a frame-callback app model it wasn't all that helpful in the end unfortunately.
My porting notes for anyone interested: https://github.com/floooh/doom-sokol#porting-notes
website
-
WASM Instructions
Also note that that webpage can be somewhat out of date; for instance, see here for some recent edits to it (e.g. features Node had implemented that were marked as unavailable): https://github.com/WebAssembly/website/commits/main/
-
Revisiting WASM for F#
I would also say that IF blazor worked on a browser plugin like silverlight did, today that's not the case it is built on the webassembly standard which and it is being adopted in the browsers which means once it gets on the web, it is unlikely to ever go out again. Even if Microsoft themselves leave Blazor today, it can still work, the burden of creating a fork and keeping blazor alive will certainly be big but someone will be able to do that, just like the open silver folks revived silverlight via wasm tech without any particular Microsoft involvement.
-
Introducing Persisted Copilot Chats - Integrated AI Across your Workflow
Moreover, Tsavo and Rutvik also highlighted some ongoing and upcoming improvements in Dart, such as the isomorphic capability, compiling to WebAssembly, and how it has allowed us to communicate with JavaScript code effectively.
-
Cloudflare Workers using Go
WebAssemblyOpen external link (abbreviated as “Wasm”) is a binary format that many languages can be compiled to. This allows you to write Workers using programming language beyond JavaScript, such as Rust, C, C++, Go and more.
- BunJS : La star montante du monde JavaScript
-
Server side Javascript in WebAssembly
In this post, we'll write a server-side Javascript function and then build it into a WebAssembly binary using the open source Spin tool. Our code will be less than a dozen lines long in total, so this is a concise introduction to WebAssembly and serverless functions that won't require you to spend a lot of time figuring out a code sample.
-
WebAssembly with Go: Taking Web Apps to the Next Level
You might've noticed the increasing chatter around WebAssembly (WASM) in the dev community. Its potential is vast, and we've found it invaluable in enhancing our open source project!
-
WebAssembly: Building GUI for C++ libraries with Embind
WebAssembly.org: nice collection of resouces.
-
WASM: Big Deal or Little Deal?
It's a meh deal.
They should've stuck with "this is crossplatform bytecode for the web", and it would've flourished there. Instead, now it's "designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications." [1]
Servers! Applications! Tigers! Lions! Oh my!
And it's not particularly good, or effective, or performant at any of those.
[1] https://webassembly.org
-
The state of modern Web development and perspectives on improvements
Today, the idea of optional code-on-demand execution in Web sites, in most cases, is violated. W3C introduced Web Components to extend HTML tags but made it entirely dependable on JavaScript. All modern Client-Side libraries, like React.JS, Angular, Vue.JS, are built with JavaScript. Sun Microsystems introduced Java Applets based on JVM. Adobe presented Macromedia Flash with a browser extension. Microsft made it possible to run reduced .NET applications in a browser with the Silverlight extension and recently introduced Blazor, which compiles C# code to WebAssembly and executes it on the client side.
What are some alternatives?
doomgeneric - Easily portable doom
leptos - Build fast web applications with Rust.
wasm4 - Build retro games using WebAssembly for a fantasy console.
itk-wasm - High performance spatial analysis in a web browser, Node.js, and across programming languages and hardware architectures
emsdk - Emscripten SDK
wordpress-playground - Run WordPress in the browser via WebAssembly PHP
CLI11 - CLI11 is a command line parser for C++11 and beyond that provides a rich feature set with a simple and intuitive interface.
Vcpkg - C++ Library Manager for Windows, Linux, and MacOS
node - Node.js JavaScript runtime ✨🐢🚀✨
AppImageKit - Package desktop applications as AppImages that run on common Linux-based operating systems, such as RHEL, CentOS, openSUSE, SLED, Ubuntu, Fedora, debian and derivatives. Join #AppImage on irc.libera.chat
llvm-project - The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
WASI - WebAssembly System Interface