Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> why on earth choose a non-OO language for a boardgame

Lua has usually been a very popular choice for game developers. One reason is that it gives you an easy way to embed a scripting language in your game.

You can do OOP without classes [0].

> Can you please please please integrate with Python on the server?

You expect the developer to port and maintain their entire project to Python because you can't be bothered to learn a new programming language?

[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...



>> > Can you please please please integrate with Python on the server?

> You expect the developer to port and maintain their entire project to Python because you can't be bothered to learn a new programming language?

They are literally begging, 3 "pleases", rather than "expecting".


I remember a book on the shelf at home in the 90's entitled "Object Oriented Programming in Macro Assembler".

And indeed, C has function pointers, so you can do OO. Just not some of the more fun stuff.


I clearly didn't "expect" the developer to port or do anything, I requested they consider also integrating with a (server-side) language that's in general more widespread, more expressive, more userbase, more libraries, more powerful developer tools. Per the examples I cited, boardgame platforms put most of the game logic on server-side, for complex games. The client-side checks that moves are not illegal, cheating or nonsensical.

I wasn't aware Lua had become widespread in game programming [0] (or more specifically, scripting on top of a game engine written in some other language); but supposedly not mainly due to whether Lua language has adequate features, but in part as a reaction to (client) performance of the Lua VM vs Python (VM maps to register set rather than stack-based; lower memory usage; coroutines); on client rather than on server. Some discussion in [0].

I did in fact in 2020 look into implementing a friend's boardgame in Lua on TTS vs in Python. That programming only confirmed my experience that line-for-line, Python is more expressive, IME more productive to develop in, also has much stronger library support.

Why is the basic documentation [1] on whether/how to implement OO Lua so contradictory and all over the place? When I look for a how-to document, I want a clear how-to, I don't want to see Lua's own users in a decades-long debate [2][3][4][5][6]. Or [7]. Or a lua-users.org/wiki that isn't even accessible via https [8]. (If I should be using a more accurate term than "OO", then just tell me what that is, instead of ad-hominems.) So for example, do we need polymorphism, mixins, the ability to call super, serialization (probably can do without that), etc. Should we sacrifice other features for more deterministic GC and performance? What are the compelling reasons for server-side Lua? on a feature-by-feature basis vs say Python?

(There's also a constituency who insist that Tcl is object-oriented, FWIW.)

Probably the best way to keep this discussion on-focus is to define "What is the consensus on an adequate set of OO features that's considered necessary for server-side game logic programming?" (that's a rational discussion, not "can't be bothered to", which is just ad-hominem).

As to TS, in my experience I don't find strong type-checking to prevent that many bugs, in codebases written by a small number of developers. I can program JS, so again if I saw a compelling reason to start using TS I would. (Sure, you could also crosscompile Python.) Again, that's not the primary issue, the primary issue is what server-side language once the game becomes complex and outgrows a pure TS implementation.

[0]: "Civilization V ditching Python for Lua" https://www.reddit.com/r/programming/comments/bp5m8/civiliza...

[1]: https://www.lua.org/pil/16.html

[2]: How can one implement OO in Lua? https://stackoverflow.com/questions/4799078/how-can-one-impl...

[3]: Is doing OOP in Lua considered bad practice? https://www.reddit.com/r/lua/comments/tbaxlo/is_doing_oop_in...

[4]: Really, how best to give Lua an object/class structure? https://www.reddit.com/r/lua/comments/tia21g/really_how_best...

[5]: Is Lua an object-oriented language? (SO, 2011) https://stackoverflow.com/questions/3477676/is-lua-an-object...

[6]: Why inheritance isn't as useful in dynamic languages, and other notes on OO in Lua (marc.info) "In short: inheritance is in most cases not a feature, just a simplistic method for expressing similarity." https://news.ycombinator.com/item?id=98529

[7]: r/ProgrammingLanguages, 2022: "If Lua is faster and smaller than Python, while being just as powerful and capable, then why is Python so much more popular?" https://www.reddit.com/r/ProgrammingLanguages/comments/tfurk...

[8]: https://wiki.c2.com/?LuaUsersWiki



And a 2017 beginner tutorial "How to Make an RPG : Classes In Lua - Creating your own class system."

https://howtomakeanrpg.com/a/classes-in-lua.html


Also a prior 2021 HN discussion on Lua vs Python vs TS vs Tcl, viz. embedding in games:

"Lua: Good, Bad, and Ugly Parts" https://news.ycombinator.com/item?id=29659336


Seems pretty trivial to support Python serverside. Python is very easy to run in a lightweight isolated container (and you can compile it to static executable). The game data that the engine makes available to the server side code looks pretty standard and doesn't look like a huge shim to maintain.

You could even cross compile the Python to typescript for a simplified server side environment (typy for example).


>Seems pretty trivial to .....

Then go do it. If it's pretty trivial....


Anything is trivially easy when you aren't the person that has to do it.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: