Readit News logoReadit News
zovirl commented on Game design is simple   raphkoster.com/2025/11/03... · Posted by u/vrnvu
Razengan · a month ago
One thing that gets me is how there hasn't really been a language made solely for gameplay logic..

Almost every other domain has its specialized language: SQL, Julia, even HTML/CSS/JS.. but game developers still have to trundle on with general purpose languages invented 500 years ago by people who had nothing to do with games.

zovirl · a month ago
I agree there aren't very many. I can think of PuzzleScript, Unreal Blueprints, and Machinations (mentioned elsewhere in this thread). Perhaps this dearth is why Blueprints got so popular?

Honorable mentions might go to PICO-8's flavor of Lua (C-like but clearly designed to create a specific type of game and have a specific developer experience) and Excel (used for developing & balancing game mechanics, but usually replaced in the final product).

zovirl commented on Forth: The programming language that writes itself   ratfactor.com/forth/the_p... · Posted by u/suioir
behnamoh · 2 months ago
Why is it that languages like this don't scale? It's not the first time I see a powerful language that got forgotten. Other examples include SmallTalk and Common Lisp (tiny community).

It is because some languages are "too powerful"? What does that say about our industry? That we're still not that advanced of a specie to be able to handle the full power of such languages?

I say that because it seems languages that are "dumbed down" seem to absolutely dominate our world (Python, Ruby, JS, etc.)

zovirl · 2 months ago
I was lucky, early in my career, to work at a place which used a lot of Perl and to read Damian Conway’s book, Object Oriented Perl. It was an amazing, mind-expanding book for me. It was filled with examples of different approaches to object-oriented programming, more than I ever dreamt existed, and it showed how to implement them all in Perl.

So much power! And right in line with Perl’s mantra, “there’s more than one way to do it.”

Unfortunately, our codebase contained more than one way of doing it. Different parts of the code used different, incompatible object systems. It was a lot of extra work to learn them all and make them work with each other.

It was a relief to later move to a language which only supported a single flavor of object-oriented programming.

zovirl commented on Forth: The programming language that writes itself   ratfactor.com/forth/the_p... · Posted by u/suioir
saghm · 2 months ago
I don't think "power" is really that helpful a metric in determining how useful a programming language is. If you think of programming from the standpoint of trying to specify the program you want out of all of the possibly programs you could write, one of the most helpful things a programming language can do is eliminate programs that you don't want by making them impossible to write. From that standpoint, constraints are a feature, not a drawback.
zovirl · 2 months ago
And at the extremes, too much power makes a tool less useful. I don’t drive an F1 car to work, I don’t plant tulips with an excavator, I don’t use a sledgehammer when hanging a picture. Those tools are all too powerful for the job.
zovirl commented on Learn to play Go   online-go.com/learn-to-pl... · Posted by u/kqr
zahlman · 3 months ago
Zero increment blitz go is a terrible idea IMX; people will just play nonsense moves after the game should be ended, and calling a moderator takes time. Go lacks the absolute nature of checkmate.
zovirl · 3 months ago
http://online-go.com has an interesting anti-stalling feature: If you pass several times it checks with KataGo. If KataGo is 99% sure you will win, either player can click a button to accept that result and end the game.
zovirl commented on Learn to play Go   online-go.com/learn-to-pl... · Posted by u/kqr
brooke2k · 3 months ago
By chance I used this just a few weeks ago when I started learning to play Go. It's a pretty good resource!

Personally, my favorite tutorial I went through was The Interactive Way to Go (https://way-to-go.gitlab.io)

Also notable is Sensei's Library (https://senseis.xmp.net) which is a very old and unbelievably thorough wiki on everything Go. It's a cool place to browse even if you don't play.

zovirl · 3 months ago
Sensei's Library is a gem from the non-commercial web! It reminds me of the C2 wiki (https://wiki.c2.com) but for Go instead of software engineering.
zovirl commented on How to be a leader when the vibes are off   chaoticgood.management/ho... · Posted by u/mooreds
jdefr89 · 3 months ago
Your employees won’t rat you out… Just don’t say “sucky” to those above you. If I have a cool ass manager who looks out for me and is real (I’m lucky enough to be at a MIT lab where everyone is cool as hell), I will always have their back…
zovirl · 3 months ago
Even in situations where this is true, there's almost certainly a better phrasing than "this new policy sucks," which only communicates an emotion. It is imprecise. Listeners will jump to their own conclusions about why you think it sucks.

You can acknowledge the problems more directly: "I get it, we don't have enough chairs so Wednesday is likely to be a challenge." or "I know mandatory 9-5 is going to disrupt your commute."

A bonus of the more precise approach is you can follow up with "do you have other issues with the new policy that I may not know?"

zovirl commented on Why haven't local-first apps become popular?   marcobambini.substack.com... · Posted by u/marcobambini
motorest · 3 months ago
> Technically an algorithm that lets the last writer win is a CRDT because there is no conflict.

Your comment shows some ignorance and a complete misunderstanding of the problem domain.

The whole point of CRDTs is that the set o operations supported is designed to ensure that conflict handling is consistent and deterministic across nodes,and the state of all nodes involved automatically converge to the same state.

Last-write-wins strategies offer no such guarantees. Your state diverges uncontrollably and your system will become inconsistent at the first write.

> Making a true system that automatically merges data while respecting user intent and expectations can be an extremely hard problem for anything complex like text.

Again, this shows a complete misunderstanding of the problem domain. CRDTs ensure state converges across nodes, but they absolutely do not reflect "user intent". They just handle merges consistently. User intent is reflected by users applying their changes, which the system then propagates consistently across nodes.

The whole point of CRDTs is state convergence and consistency.

zovirl · 3 months ago
I think the parent was complaining about mentions of CRDTs which don’t acknowledge that the problem domain CRDTs work in is very low level, and don’t mention how much additional effort is needed to make merging work in a way that’s useful for users.

This article is a perfect example: it says syncing is a challenge for local-first apps, logical clocks and CRDTs are the solution, and then just ends. It ignores the elephant in the room: CRDTs get you consistency, but consistency isn’t enough.

Take a local-first text editor, for example: a CRDT ensures all nodes eventually converge on the same text, but doesn’t guarantee the meaning or structure is preserved. Maybe the text was valid English, or JSON, or alphabetized, but after the merge, it may not be.

My suspicion, and I might be going out on a limb here, is that articles don’t talk about this because there is no good solution to merging for offline or local-first apps. My reasoning is that if there was a good solution, git would adopt it. The fact that git stills makes me resolve merge conflicts manually makes me think no one has found a better way.

zovirl commented on Easy Forth (2015)   skilldrick.github.io/easy... · Posted by u/pkilgore
bxparks · 3 months ago
As I like to say: "C is a language that solves a million problems. Forth is a million languages that solve almost nothing." :-P

I've been reading about Forth for 30-40 years. The dual stack is easy to understand. My problem is that I cannot see how control flow works in Forth, e.g. a simple if-then-else.

I think that something as fundamental as an if-then-else should be obvious in a useful language. Heck, it's obvious in assembly language. But not in Forth.

zovirl · 3 months ago
> My problem is that I cannot see how control flow works in Forth, e.g. a simple if-then-else.

What made it click for me was http://www.exemark.com/FORTH/eForthOverviewv5.pdf, specifically sections 2.3 "Loops and Branches" and 5.3 "Structures". With a slight simplification, if/else/then branching is defined in 7 words.

Two primitive words, branch and ?branch (in python because I know it better than assembly):

  def branch():
    """ branch is followed by an address, which it unconditionally jumps to."""
    ip = code[ip] # Get address from next cell in code, jump to it.

  def branch_if_zero():
    """ ?branch is followed by an address. ?branch either jumps to that address,
    or skips over the address & continues executing, depending on the value on the
    stack."""
    if stack.pop() == 0: # Pop flag off stack
      ip = code[ip]      # Branch to address held in cell after ?branch
    else:
      ip += 1            # Don't branch, skip over address & keep executing
Two helper words for forward branching. >MARK adds a placeholder branch address to code and pushes the address of the placeholder. >RESOLVE resolves the branch by replacing the placeholder with the address from the stack.

  : >MARK    ( -- A ) HERE 0 , ;
  : >RESOLVE ( A -- ) HERE SWAP ! ;
And then the actual IF, ELSE, and THEN words. IF puts ?branch and a placeholder address in code. ELSE puts branch and a placeholder address in code, then updates the preceding branch address (from an IF or ELSE) to land after the ELSE. THEN updates the preceding branch address to land after the THEN.

  : IF   ( -- A )   COMPILE ?branch >MARK ; IMMEDIATE
  : ELSE ( A -- A ) COMPILE branch >MARK SWAP >RESOLVE ; IMMEDIATE
  : THEN ( A -- )   >RESOLVE ; IMMEDIATE

zovirl commented on Air-dried vs. Kiln-dried Wood   christopherschwarz.substa... · Posted by u/crescit_eundo
LunaSea · 6 months ago
I wonder how they could differentiate the age of the wood from the age of the construction
zovirl · 6 months ago
From the Nature article posted by unwind, it sounds like they dated the sand surrounding the wood, not the wood itself.
zovirl commented on The Level Design Book   book.leveldesignbook.com... · Posted by u/keiferski
thesuitonym · 7 months ago
One thing I've never understood, as someone who only has a passing curiosity in game design, is how people learn from them? It always seemed to me that the whole idea was 'Here's a theme, make a game.' But if you don't know how to make a game, where does the knowledge come from? I get you can do independent study, but you could do that without a game jam.

Don't get me wrong, I understand the appeal of game jams, I just don't understand why I see it offered as a learning experience so frequently, as opposed to a practice experience.

zovirl · 7 months ago
I learned an enormous amount from in-person game jams by chatting with other game developers at the event, most of whom were more skilled than I was. I've also found game jams made it easier find collaborators, easier to get feedback from other designers, and easier to see how other people approach the same theme.

> But if you don't know how to make a game, where does the knowledge come from?

If you're at the stage where you feel like you don't know how to make a game, you might find value in doing the exercises from the book "Challenges for Game Designers" by Brathwaite & Schreiber.

u/zovirl

KarmaCake day22October 19, 2024View Original