Re: Running a D game in the browser
On Friday, 5 August 2016 at 13:18:38 UTC, Johan Engelen wrote: That patch doesn't look too bad. Could you introduce a CMake option for building with Emscripten-fastcomp? And a #define "LDC_LLVM_EMSCRIPTEN" or something like that, so that you can change `#if LDC_LLVM_VER >= 309 && 0` to `#if LDC_LLVM_VER >= 309 && !LDC_LLVM_EMSCRIPTEN`. Should be mergable into LDC master then! I could definitely formalize things a bit, but any patch of this kind would quickly be obsolete, as Emscripten catches up with LLVM versions. Moreover, I don't feel comfortable polluting LDC with the specificities of some obscure use case (as cool as this use case can be!). It might be preferable - though harder - to patch Emscripten so it aligns on LLVM official API versions.
Re: Running a D game in the browser
On Friday, 5 August 2016 at 05:39:57 UTC, Sebastien Alaiwan wrote: On Thursday, 4 August 2016 at 19:17:34 UTC, Sebastien Alaiwan wrote: at the moment, I have a patch to making the build work (only for the binary "ldc2", not other tools of the package). I created a dedicated github branch "fastcomp-ldc". The patch: https://github.com/Ace17/dscripten/blob/fastcomp-ldc/ldc2.patch That patch doesn't look too bad. Could you introduce a CMake option for building with Emscripten-fastcomp? And a #define "LDC_LLVM_EMSCRIPTEN" or something like that, so that you can change `#if LDC_LLVM_VER >= 309 && 0` to `#if LDC_LLVM_VER >= 309 && !LDC_LLVM_EMSCRIPTEN`. Should be mergable into LDC master then! cheers, Johan
Re: Running a D game in the browser
On Thursday, 4 August 2016 at 19:17:34 UTC, Sebastien Alaiwan wrote: at the moment, I have a patch to making the build work (only for the binary "ldc2", not other tools of the package). I created a dedicated github branch "fastcomp-ldc". The patch: https://github.com/Ace17/dscripten/blob/fastcomp-ldc/ldc2.patch
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:40:47 UTC, Kai Nacke wrote: That's awesome! Do you still know the modifications you made to compile LDC with emscripten-fastcomp? I would be interested to have a look into the "PNaCl legalization passes" problem. That would be great, and might simplify the toolchain a lot. First we must get the build to pass again ; I'm working on it at the moment, I have a patch to making the build work (only for the binary "ldc2", not other tools of the package). I can send it to you if you want.
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: Hi, I finally managed to compile some D code to asm.js, using Emscripten. [...] You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html [...] Please let me know what you think! Fascinating!
Re: Running a D game in the browser
Very cool! Is it's possible now to write not graphical Apps for web in D? I do not need graphics, but I need normal language instead of js that can help me to do some computation. For example is it's possible to write in D app that would validate some fileds in HTML and simply show (even on console) information about data in them.
Re: Running a D game in the browser
On Thursday, 4 August 2016 at 09:57:57 UTC, Mike Parker wrote: On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: And a blogpost explaining the technique is available here: http://code.alaiwan.org/wp/?p=103 (Spoiler: at some point, it involves lowering the source code back to C) Reddit: https://www.reddit.com/r/programming/comments/4w3svq/running_a_d_game_in_the_browser/ HN: https://news.ycombinator.com/item?id=12225036
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: And a blogpost explaining the technique is available here: http://code.alaiwan.org/wp/?p=103 (Spoiler: at some point, it involves lowering the source code back to C) Reddit: https://www.reddit.com/r/programming/comments/4w3svq/running_a_d_game_in_the_browser/
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: Hi, I finally managed to compile some D code to asm.js, using Emscripten. It had been done by one dude several years ago, but some changes in the inner workings of Emscripten (the introduction of fastcomp, also probably combined with changes in the way LDC generates LLVM bitcode) made it impossible to use the same technique. You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html The source code + toolchain deployment scripts are available on github: https://github.com/Ace17/dscripten And a blogpost explaining the technique is available here: http://code.alaiwan.org/wp/?p=103 (Spoiler: at some point, it involves lowering the source code back to C) Please let me know what you think! Cool. I think the D Foundation should actively support stuff like this (once funding and resources are secured). Mobile (iOS/Android) and asm.js. That's where huge shares of the market are, it's a "must have". PS I don't like WASD in the game, I'm not left handed ;)
Re: Running a D game in the browser
On Thursday, 4 August 2016 at 05:03:17 UTC, Joel wrote: [snip] Though, it looks like the score isn't reset when you start a new game. Or, is it intended that way? Oh, I read it wrong, the score is reset. Dummy, me! It's just that you're becoming better at this silly game :-) Thanks for your replies! As Mark guessed, I didn't spend a lot of time on the game-design side (but I'm still interested in game-design related comments). It's more of a proof of concept, using D. Using C++, there already are impressive demos: https://kripken.github.io/BananaBread/wasm-demo/index.html
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 23:23:24 UTC, Joel wrote: On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: Hi, I finally managed to compile some D code to asm.js, using Emscripten. Good work. [snip] You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html [snip] Though, it looks like the score isn't reset when you start a new game. Or, is it intended that way? Oh, I read it wrong, the score is reset. Dummy, me!
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: Hi, I finally managed to compile some D code to asm.js, using Emscripten. It had been done by one dude several years ago, but some changes in the inner workings of Emscripten (the introduction of fastcomp, also probably combined with changes in the way LDC generates LLVM bitcode) made it impossible to use the same technique. You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html The source code + toolchain deployment scripts are available on github: https://github.com/Ace17/dscripten And a blogpost explaining the technique is available here: http://code.alaiwan.org/wp/?p=103 (Spoiler: at some point, it involves lowering the source code back to C) Please let me know what you think! Interesting but a bit lame. 1. The movement should continue in the same general direction, if not exactly the same. It is impossible to avoid something that can do anything. 2. The movement shouldn't accelerate so fast, it's harder to control where you want to go when if you hold the key down a you end up on the other side of the screen. Of course, I doubt this was a game intended to be fun ;) The good news is that you have a lot of upside. Consider making a video player... replace stinking flash! Could create better websites by having more programmatic functionality, etc.. (more app like websites) The upside, from the initial looks, seems to be quite good if you go in that direction.
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: [snip] Please let me know what you think! Another thing, the sound effects are late.
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: Hi, I finally managed to compile some D code to asm.js, using Emscripten. Good work. [snip] You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html [snip] Though, it looks like the score isn't reset when you start a new game. Or, is it intended that way?
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: I finally managed to compile some D code to asm.js, using Emscripten. I know virtually nothing about compilers and even less about Emscripten, but the fact that you managed to get a D game running inside a browser is plain awesome. Congratulations!
Re: Running a D game in the browser
On Wednesday, 3 August 2016 at 20:26:23 UTC, Sebastien Alaiwan wrote: Hi, I finally managed to compile some D code to asm.js, using Emscripten. It had been done by one dude several years ago, but some changes in the inner workings of Emscripten (the introduction of fastcomp, also probably combined with changes in the way LDC generates LLVM bitcode) made it impossible to use the same technique. You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html The source code + toolchain deployment scripts are available on github: https://github.com/Ace17/dscripten And a blogpost explaining the technique is available here: http://code.alaiwan.org/wp/?p=103 (Spoiler: at some point, it involves lowering the source code back to C) Please let me know what you think! That's awesome! Do you still know the modifications you made to compile LDC with emscripten-fastcomp? I would be interested to have a look into the "PNaCl legalization passes" problem. Regards, Kai
Running a D game in the browser
Hi, I finally managed to compile some D code to asm.js, using Emscripten. It had been done by one dude several years ago, but some changes in the inner workings of Emscripten (the introduction of fastcomp, also probably combined with changes in the way LDC generates LLVM bitcode) made it impossible to use the same technique. You can play a minimalistic demo: http://code.alaiwan.org/dscripten/full.html The source code + toolchain deployment scripts are available on github: https://github.com/Ace17/dscripten And a blogpost explaining the technique is available here: http://code.alaiwan.org/wp/?p=103 (Spoiler: at some point, it involves lowering the source code back to C) Please let me know what you think!