@Tajchert Not a cool kid by any means, but I’ve been very happy with just downloading pages as single HTML files and syncing them to the cloud. I then organize them into folders. It’s link-rot-proof and very greppable.
@7tonshark Great write-up, thanks for sharing! We used a similar approach to implement dynamic tiling in our game, although with only 4 bits. And we also considered a dungeon setting with 2.5D walls, and ended up with top-down instead :)
@eliaskuvoice Fantastic work. It’s as if The Rage of the Mad God and Liero had a child, and I’m here for it. It’s easy to forget this is a 13kb jam game. The use of emojis is brilliant, too. Hotline Miami vibes :)
Hey @javascripl, thank you for the insightful feedback on Afterlife! I really like the idea to make the gameplay less centered on earning money. In fact, that's usually how I play myself: optimizing the road network for happiness of duszki :) #js13k
https://t.co/fK5mKKG7DM
A new game by @michalbe and myself: AFTERLIFE.
A city-builder inspired by Caesar 3 and The Sims. We wanted to create a game teeming with life—despite the theme being 'Death.' Or perhaps because of it :) Your denizens need housing and food, and make their own decisions. #js13k
Our latest game is live!
Foster a thriving community of duszki (Polish for ghosts) in this retro city building sim, played in your browser. All in 13 kilobytes of JS and HTML.
2022: “WOW you can write a prompt and an AI will draw it!”
2028: “You want to write a prompt? First you need to hire 10-15 promptOps Engineers to build out your PromptFlow pipelines which sends promptjobs to your PromptLake from the PromptQueue using the EventPrompt stream”
@dosaki Actually, defining the XZ plane as [center, normal], i.e. [{0,0,0}, {0,1,0]}, and casting a ray from {x, y, far} to {0,0,0} might be a bit easier.
@dosaki The "point" coords need to be in the [-1, 1] range on all axes, since we start in the NDC space.
const screenToWorld = (x, y) => {
const point = new DOMPoint(x * 2 - 1, -(y * 2 - 1), 1);
return W.v.inverse().transformPoint(point);
};