14kb WASM game written in D
skoppe.github.io
skoppe.github.io
I'm particularly impressed by the variable lighting of the bullets down hallways, that's really quite masterful work.
Kudos!
Edit: I am impressed because I'm impressed. I spent a few weekends recently messing around with pygame, and I had a really hard time organizing my code and my thoughts. I do primarily numerical, technical work, and I see that there is something challenging about writing a game that I haven't come across much in 25+ years.
Feel free to shit on my comment, but I still think it's a very cool project, and seeing it run so smooth in a web browser, in a vm, on a beat up box with a Celeron was surreal to me.
I suspect folks who had bad experiences with a "smart" person might have been dealing with someone who was a "big fish in a small pond", who hadn't been sufficiently humbled by going to (or trying to go to, haha) a more appropriately challenging level of education or professional practice.
So generally, I think the difference is that truly smart and knowledgeable people have serious respect for the vast body of knowledge they haven't acquired.
I've definitely met people who hadn't been humbled by life yet, and they're not too grating imo to deal with, provided they have good social skills and work ethic.
But there are those who innately understand that a lot of software team communication is about conveying an idea that is potentially unfamiliar to someone, and cooperating with them. I remember the first time someone showed me how to use Makefiles. I had seen them, I comprehended their usage, but when I was shown how easy it is to actually form them and use them for different purposes, it was incredibly eye-opening. That conversation couldn't have been but 7-8mins. That man was actually my boss for a while later on, before he had a bad car accident. Another example might be my old mentor who helped me grok syntax-rules for the first time, over a lunch break, with a pen and paper. It just clicked, and I learned.
My point is, the combination of social skills + intelligent explanations + teaching practice is a powerful one.
That must be why you've been so dismissive and rude in this thread, because you feel sad. :(
"Unreal Engine 3 Support for Adobe Flash Player - Epic Citadel"
Unity and Unreal can both export large games to the Web just fine but people found out they didn't want to serve 50 GB games to a temporary client.
https://docs.unrealengine.com/4.27/en-US/SharingAndReleasing...
An hardware that WebGL 2.0 is supposed to be much better.
Instead most online games look like Amiga 500 stuff instead.
I agree that it took many years for HTML5/JS to reach Flash's capabilities (and some stuff like easily swapping around SWF files is still not as easy to do) and i dislike how Flash was forcibly killed instead of losing its popularity "naturally" (though it being proprietary technology instead of some open standard or at least an open source project help its murder considerably), but the reason you do not see Citadel-level stuff on HTML5/JS has more to do with not being much of an incentive to do something like that than the technology being able or not (demos like After the Flood[0], which has as much gameplay as Citadel yet it shows more advanced rendering techniques - you can even look yourself in the glass reflections :-P - show that it is technically possible).
Citadel is from 2011, but this doesn't matter, the point is that you can do stuff like that on the web.
> doesn't work on my Vulkan aware mobile GPU
If the GPU is Vulkan aware then it might be an issue with your browser, though from [0] it looks like only Apple's devices do not support it - which wouldn't support Vulkan either, so i'm not sure why you'd bring that up.
People still appreciate pixel art and simplicity. Some even love the Amiga.
It up to Khronos and friends to keep the Web APIs relevants, after all why did they kill plugins?
Webgames are generally more about free to play and accessibility. No install or trust required. They are usually more casual games and must work on the widest possible selection of devices.
That's what WebGL is all about. If your looking for a memory intensive behemoth of a game, it makes more sense to look at native as opposed to WebGL. There's nothing wrong with either approach, but the web lends itself to one more than the other.
Also, OpenGL ES 3.0 is not from 2008. The specification was publicly released in August 2012, and of course it took years before enough devices supported it well enough (lots of driver bugs…) for it to be worth targeting.
The web is certainly a few years behind the native-code state-of-the-art, but it's not a decade behind. There's a lot you can do with these mature APIs.
So in a few months we'll have feature parity with 2012 mobile HW ?
I have quit 3D development around 2015 but I remember trying to use MRT on webgl to do some basic deferred shading and you could run on FF and Chrome desktop only. It's infuriating that 7 years later it's still the case. I used this technique when I was learning 3D programming in 2007. Calling this cutting edge is just...
Shameless plug, but our startup is building better support for Unreal developers to target WebGL2, and we're working towards WebGPU support. We're offering an end-to-end ecosystem that includes our SDK for optimizing games/3D apps, which includes compression, an asset streamer tool, and networking libraries for the web. This goes hand in hand with our hosting platform where developers can deploy their projects to without having to go through walled gardens. The best part is no 30% fees!
We're going to have some demos here pretty soon as we approach general availability of the platform. If you or any other devs reading this are interested, you can join our Discord community here:
Those "bleeding edge" features, are all GPU hardware advances since GL ES 3.0 was released.
Many of us could code something like this technically but it would play horribly and look worse - and would be more than 14kb of WASM
It is the little things, the lighting, the little sound effects, even the unlimited ammo
(It was a js13kgames submission in 2018; I’m guessing that this being submitted here now is in some way linked to how Q1K3 is currently on the homepage, also a js13kgames submission, though for 2021. Pure speculation.)
Source code: https://github.com/phoboslab/underrun
The original js13k game implemented a small sonant-x player for the audio, both sound fx and music.
-- [0] - https://github.com/skoppe/spasm/tree/master/docs/examples/un...
• There’s an & that should be either & or &, depending on whether it’s setting HTML or text.
• The opening garbage text is mojibaked, so that it looks like… different, not as æsthetically pleasing garbage.
• The text that’s supposed to be like “7 SYSTEM(S) STILL OFFLINE” is getting mangled badly, missing much of the string and getting a bunch of U+0000s in it—unchecked and incorrect string indexing, by the looks of it. Hmm… “1␀␀␀␀␀␀␀␀␀␀STIL1␀␀␀␀␀␀␀” actually looks like something’s clobbering the string literal stillOffline. Ouch; that actually worries me, though I hope it’s largely just a side-effect of some shortcuts taken to keep the code tiny and not something that would normally be an issue?
• terminal_text_outro has some double quotes that should be single quotes (apostrophes).
Other than that, seems to be working well.
I was confused for a second why this game made its way to HN again (there's a making of for the game itself from 2018[2]). This seems to be a port of the game to D[3] as a demo for a WASM runtime, Spasm, which is also written in D[4].
[1] https://phoboslab.org/underrun/
[2] https://news.ycombinator.com/item?id=18031024
[3] https://github.com/skoppe/spasm/tree/master/examples/underru...
Else folks get stuck at "Initializing..." with an exception in the console. Not everybody checks the console.
(TypeError: can't access property "createBuffer")
Edit: stuck at "Initiating..."
Also curious to know if there are any serious web apps developed using web assembly.
Much, much better performance than JS is possible because (among many other things) you can perform a lot of optimizations during AOT compilation due to eg. LLVM, avoid GC and arrange memory to help cache efficiency.
Re: JS call overhead, ultimately using instanced drawing so you have a constant number of draw calls even for a growing number of objects is what helps.
These results are utterly unscientific. You also can’t compare Firefox and Chrome’s profiling numbers to one another.
So yes it got me thinking the same thing.
Github stars are an extremely weak signal. Some D users have actually said to me that they feel slightly confused that their projects have more stars than the actual language implementation on github just because of hype, for example.
Maybe it could be, but our goal is not to have "niches". If anything, our niche is making people who would otherwise not be, productive enough to deliver what they want to make.
D isn't a gimmick language, it's a Programming (with a capital P!) language.
> SENT: SEP. 13, 2018 > RCVD: SEP. 13, 2718 > > THANKS FOR PLAYING > > I HAVE PREVIOUSLY BEEN A PROUD SPONSOR OF THE JS13K > COMPETITION SINCE THE VERY FIRST ONE BACK IN 2012. > HOWEVER, THIS YEAR"S COMPETITION WAS MY FIRST ONE > AS A PARTICIPANT AND IT HAS BEEN TREMENDOUS FUN! > > I WANT TO THANK MY DEAR FRIEND ANDREAS LÖSCH OF > NO-FATE.NET FOR COMPOSING SOME AWESOME MUSIC ON > SUCH SHORT NOTICE. > > FURTHER THANKS GO OUT TO THE JS13K STAFF, THE > SONANT-X DEVELOPERS AND ALL OTHER PARTICIPANTS > IN THIS YEAR"S JS13K. SEE YOU NEXT YEAR! > > DOMINIC > END OF TRANSMISSION
https://store.steampowered.com/app/234390/Teleglitch_Die_Mor...
Includes links to a couple other examples.
PhobosLab is awesome and it's great to see Dominic Szablewski pushing web-gaming forward to this day. Hope to see it continue. :)
But, I do think the future will be full of games that can be instantly played directly in the browser
Was frustrated by a similar experience with Q1K3 earlier.
but ff shows that underrun.wasm is 35KB, what's going on?