HN user

elisee

2,259 karma

Game developer. https://twitter.com/elisee

Posts69
Comments252
View on HN
deno.com 1y ago

The JSR open governance board

elisee
4pts0
serenityos.org 2y ago

Happy 5th Birthday, SerenityOS

elisee
75pts4
deno.com 5y ago

The Deno Company

elisee
883pts431
www.youtube.com 5y ago

OS hacking: Let's make a simple breakout game in HackStudio

elisee
1pts0
www.youtube.com 6y ago

SerenityOS update (June 2020) [video]

elisee
8pts0
www.youtube.com 6y ago

Browser development: JavaScript+HTML painting demo in Serenity browser

elisee
1pts0
www.youtube.com 6y ago

Browser hacking: The HTML canvas element [video]

elisee
1pts0
hytale.com 6y ago

The Hytale Foley Studio

elisee
2pts0
github.com 7y ago

EFI Boot Application in C#

elisee
3pts1
blogs.unity3d.com 7y ago

Unity: Updated Terms of Service and commitment to being an open platform

elisee
14pts4
surviv.io 8y ago

Surviv.io, a Web-based PUBG clone

elisee
2pts0
www.khronos.org 9y ago

Khronos Releases GlTF 2.0 Specification

elisee
2pts0
www.youtube.com 9y ago

Jonathan Blow “Making Game Programming Less Terrible” Talk [video]

elisee
11pts1
www.scirra.com 9y ago

Construct 3 public beta now available

elisee
2pts0
www.youtube.com 9y ago

“Papers I Have Loved” by Casey Muratori [video]

elisee
2pts0
github.com 10y ago

How the itch.io app sandboxes games

elisee
18pts3
blog.itch.io 10y ago

Itch.io refinery: A customizable toolset for first game releases and playtests

elisee
11pts2
itch.io 10y ago

Itch.io week (open marketplace for independent creators)

elisee
4pts0
ludumdare.com 10y ago

Windowframe – a game by Daniel Linssen

elisee
1pts0
mediastream.cern.ch 10y ago

Deep Learning and the Future of AI – Yann LeCun

elisee
4pts0
github.com 10y ago

Non-nullable types – Microsoft/TypeScript

elisee
6pts0
www.roadtovr.com 10y ago

The HTC Vive Costs $799 and Ships April First

elisee
4pts0
superpowers-html5.com 10y ago

Superpowers, a collaborative HTML5 2D and 3D game maker, is now open-source

elisee
292pts43
superpowers-html5.com 10y ago

Superpowers, the collaborative HTML5 2D+3D game maker, is now open source

elisee
9pts1
www.youtube.com 10y ago

Learning Simple Algorithms from Examples [video]

elisee
3pts0
www.khronos.org 10y ago

Khronos Finalizes glTF 1.0, interoperable 3D runtime format

elisee
2pts0
dbaron.org 10y ago

Payments on the Web

elisee
1pts0
www.youtube.com 10y ago

Primitive Technology

elisee
2pts0
docs.sparklinlabs.com 11y ago

TypeScript Primer – Superpowers

elisee
2pts0
itchio.tumblr.com 11y ago

Itch.io now lets game developers organize their own bundles

elisee
1pts0

From https://ladybird.org/why-ladybird.html

    The world needs a browser that puts people first, contributes to open standards using a brand new engine, and is free from advertising's influence.
     
    This is why I've co-founded the Ladybird Browser Initiative with Andreas and my family has pledged $1M to support Ladybird's development. I believe in Ladybird and I believe in Andreas' vision, and I hope you'll help us support an open, independent browser that supports you.
     
    Chris Wanstrath
    GitHub Founder & former CEO

From my experience building it under WSL on a reasonably recent laptop: from cloning the Git repo to seeing SerenityOS pop up in QEMU, maybe half an hour. A lot of it is downloading and building the toolchain.

And then incremental rebuilds (when I go and pull the latest changes once in a while to see what's new) take anywhere between 1-10 minutes, depending on what changed exactly. YMMV.

For an entire operating system, it's pretty cool already! I wonder if C++20 modules will take it down some more, it's been mentioned a few times as something to investigate.

Andreas has recently mentioned that SerenityOS is meant to be an English-language OS. (Might have been on Discord or a Q&A video, not sure.)

I believe his rationale is that other languages are generally awkward at talking about technical stuff, and SerenityOS is addressed at technical users anyway. In my own experience as a French native speaker, I do tend to prefer all my software to be in English rather than getting the awkwardly-translated-in-French version.

As far as accessibility goes, like anything in the project, it's up to someone passionate to step up and work on it.

Andreas has been making videos (https://www.youtube.com/c/AndreasKling/videos) sharing his journey: technical ones working on some part of the system, as well as more personal ones talking about his philosophy, struggles and moments of joy.

I'm just one of many but I'm guessing his sincerity combined with his technical abilities make it all very compelling to watch and contribute with money or code, even though the system isn't at a point where you would want to use it.

Basically: it's a fun, open, ambitious project whose story is being told mainly through videos, with a kind and interesting person behind it.

The Deno Company 5 years ago

Haha I feel your pain, I did the same initially, took a few rewrites over the years to get to something I'm happy with and runs well.

The Deno Company 5 years ago

There's a central Deno server program called the switchboard, which serves static content, runs a small REST API for account management / login, and starts a WebSocket server for game servers to register themselves.

Each game server (a stand-alone Deno program that might or might not run on its own machine) connects to the switchboard over websocket and authenticates itself with an API key (since people will be able to make their own game servers).

When a player wants to join a server, they POST a request to the switchboard, which gives them back a token that they can send to the game server after establishing a WebSocket connection to it. The game server checks the token with the switchboard and gets back public user account info if it's valid.

Each game server's logic is currently single-threaded. I guess we might end up offloading some work to WebWorkers later on.

A server can publish some state info through the switchboard that will be broadcasted to other servers from the same user. This is used to show player counts in game rooms from a lobby, things like that.

I run the whole thing on a couple cheap Scaleway servers, with Cloudflare in front (no AWS nor containers or anything of the sort). My previous platform, built with Node.js (https://jklm.fun) is able to sustain at least 2000 concurrent players like that, though admittedly those are board-like games which are not very demanding, unlike the games for Sparks.land which will be more fully-fledged... so we'll see how that holds up!

The Deno Company 5 years ago

Not quite, I'm running Sucrase on my Deno HTTP server: if the extension is ".ts", I put the file through sucrase before serving it as text/javascript. In development, it happens every single time I reload (and it's fast enough that I don't even notice). In production, Cloudflare requests the .ts file from my server once (triggering sucrase), and then caches it.

The Deno Company 5 years ago

It's getting there! They finished a rewrite of the extension recently and it's quite nice.

If you're on Windows like me, sadly there's still a nasty bug with path mismatches between the LSP server and the VSCode extension (https://github.com/denoland/deno/issues/9744) which requires reloading the window to fix spurious errors, but I'm sure it'll be fixed soon enough.

The Deno Company 5 years ago

Correct! In production we've got Cloudflare in the middle, so we're only using sucrase on-the-fly for each .ts file during development. So far it's unnoticeable in terms of loading times.

I notice your script files are all pretty small, have you run into any upper limits on performance or scalability so far with this approach?

Not that I can tell. But if we need to, we can always do a minified bundle in production later on. So far it's just nice to not have to even think about it!

The Deno Company 5 years ago

Ah thanks for the heads up. It requires WebGL 2 which isn't yet in iOS's Web engine I believe? And IIRC all browsers have to use it on iOS. It does work on Android.

The Deno Company 5 years ago

Happy to see Deno get some financial backing!

I've been building my new multiplayer games website [1] with Deno over the last 4 months and apart from some minor growing pains, it's been a joy to use.

The lack of unnecessary package management, and the TypeScript-by-default approach makes Web dev much nicer. We're also using TypeScript on the client-side, relying on VSCode for error reporting. We use sucrase to strip the types just as we're serving the script files, so that there is no extra build time, it feels like TypeScript is Web-native and we can share typed code with the server.

[1] Not yet launched but we ran a preview past weekend with hundreds of players over WebSockets: https://twitter.com/MasterOfTheGrid/status/13757583007179735... - https://sparks.land

Indeed! I swore off Web development a couple times because of the mess but now my whole party games platform is made with plain JS, no bundling, no post-processing, no big frameworks and it's pretty good. (Although I did recently augment it with some JSDoc types, for long-term maintainability)

At least three devs have asked why I wasn't using some reactive framework or big library. I know why: I'm much more productive without! Simple DOM helpers go a long way: https://jklm.fun/common/dom.js

(If you're curious: https://jklm.fun)

I've been focusing on re-making my various Web party games into a more unified platform at https://jklm.fun/

The previous iterations were built years ago using CoffeeScript, Grunt/Gulp, Jade, Stylus, etc. This time around, I went for vanilla HTML/JS/CSS, no transpilation, no bundler, no build step at all (and no frameworks). It's been a joy. I'm using the TypeScript compiler in VS Code for sanity checking and might add some JSDoc to leverage the type checks even, but for now it's quite nice as is.

I've also enjoyed building up a Discord community for it all, got almost a thousand people in there now and it's a lot of fun interacting on a daily basis.

See also this recent blog post + paper by OpenAI, they designed curiosity in an agent by having it test how well it can predict the output of a randomly initialized neural network from the game's current frame + input. The better the prediction, the more its mental model of the world is correct, and the less it gets rewarded (encouraging it to go and find unexplored situations). https://blog.openai.com/reinforcement-learning-with-predicti...

itch.io's new open source wharf & butler tools might be what you're looking for: https://itch.io/docs/wharf/ and https://itch.io/docs/butler/

Quoting Wharf's spec intro:

    Wharf is a protocol that enables incremental uploads and downloads to keep software up-to-date. It includes:

    A diffing and patching algorithm, based on rsync
    An open file format specification for patches and signature files, based on protobuf
    A reference implementation in Go
    A command-line tool with several commands
Butler is the commandline tool for generating patches (it can negotiate small diffs from the server without requiring a full local copy of the thing you're diffing against), uploading them and applying them back on the client.

It is used to power itch.io's Steam-like application, itch: http://itch.io/app, delivering multi-gigabyte game installs & updates.

Context: http://itch.io/ is a place for publishing indie games and other creative stuff. There is no greenlight process like on Steam, people can share content very easily without gatekeepers.

(Disclosure: I know the devs pretty well but I'm submitting because I think it's interesting content for the HN audience)

They recently released a Steam-like app for browsing, installing & updating games. There's an awful lot of interesting stuff being done like https://itch.io/docs/butler/ (CLI tool for efficiently patching games with diffing for both upload & download).

The latest feature they added is experimental sandboxing which allows transparently running the games you download from itch.io as a separate restricted user / in a jail. The submission link details the research done to make it work.

More info here: https://itch.io/docs/itch/using/sandbox.html and https://github.com/itchio/itch/releases/tag/v18.0.0