[HN Gopher] Bitty Engine: An itty bitty game engine ___________________________________________________________________ Bitty Engine: An itty bitty game engine Author : user8501 Score : 152 points Date : 2023-09-13 15:20 UTC (7 hours ago) (HTM) web link (paladin-t.github.io) (TXT) w3m dump (paladin-t.github.io) | otachack wrote: | I love these projects so much. It must be exhilarating to work on | them and I'm very tempted to work on one myself as a side | project/self learning experience. | Waterluvian wrote: | There's hundreds or thousands of these indie game engines | because, yes!, it is a lot of fun to write them. You'd learn a | lot. The #1 tip though is that you're writing a game, or an | engine, not both. So commit to doing one of those tasks. | Usually you end up with a bunch of toy games and no steam left | to want to really polish them into something complete. | JKCalhoun wrote: | > The #1 tip though is that you're writing a game, or an | engine, not both. | | Not sure I agree. I have always done both. | | Ostensibly I am writing a _game_ but not using someone 's | engine. And then my own "engine" comes out of the effort. | | Then I write a second game and pull over the rendering-sound- | etc-code from the first game. This "engine" gets further | refined as a result of being pressed into service for the new | game. | | Often it improves with each iteration and I move the newer | version back to older games and refactor them as required. | phero_cnstrcts wrote: | Do you know of any that use JavaScript/typescript? | josemwarrior wrote: | Phaser, as game engine, Pixi.js as a powerful render | library (FRVR.com games were made formerly with Pixi.js). | You can use Cocos Creator (not Cocos2D-x) | beepbooptheory wrote: | https://github.com/photonstorm/phaser | Waterluvian wrote: | Here's the more popular dozen or so: | https://github.com/collections/javascript-game-engines | | If you want to know about the really small indie ones that | are less for actual use and more for just "I want to make a | game engine" I would check out the various gamedev Discord | and Reddit channels. There's always people showing off | their work. | impatient_bacon wrote: | https://bitmelo.com/ | gmerc wrote: | 2d phaser (photonstorm) 3d babylonjs (microsoft) | Buttons840 wrote: | > The #1 tip though is that you're writing a game, or an | engine, not both. | | Most of the people who follow this advice will never ship | anything. Stop worrying and do what you want. It's okay to | reinvent the wheel if you want to learn how to make a wheel, | or if you just find it fun. | hutzlibu wrote: | Or if you need a special wheel adopted to your needs. | Because you were annoyed, that the common generic wheels | blasted the way you drove them ... but also could not use a | expensive high performance wheel, because they come in | different sizes. | | (But remember, if you want to ship fast, or at all, usually | better stay with the common wheels and sizes) | jesse__ wrote: | Can confirm; they're real fun. I've got a 7-year side-project I | still grind on in the form of a voxel engine. The trick is to | start small and have realistic expectations. Your progress will | be glacially slow at first, and that's okay. Eventually, if you | keep grinding, you'll have something awesome that you love | working on. | | If you want to check out my project there's a link in my bio. | JKCalhoun wrote: | I checked out your side-project. | | > [ ] Do sound :'D | | Why bother with sound? Likely a dev would just pull in | SDL_Mixer for game sound. Get on with the transparency. ;-) | jesse__ wrote: | Mostly for the learning experience of writing an MP3 | decoder and WAV mixer | PcChip wrote: | that's really cool! | | I'm doing an engine as side project too that I've just | accepted will never be finished and it's only for fun :) | | /r/TranceEngine | gabereiser wrote: | Can confirm the first two years will suck if you're starting | from scratch. Keep with it. By the 4th year you'll be able to | use all your abstractions to whip up prototypes over the | weekend. | tfrutuoso wrote: | I was looking for this to surprise the missus with her own JRPG | for her birthday. Thanks! | [deleted] | glonq wrote: | I played around with Construct2 a lot once upon a time, but never | followed them to 3 because the product got a bit too expensive | for me has a hobbyist. | | How does this compare to that, besides the obviously nicer cost? | 3seashells wrote: | The world learns lua one game at a time. All it needs is decent | standardization comitee and a better packages/module system. Lua | rocks | 40four wrote: | Silly question from a web dev who has never written a line of Lua | before (or delved into game development). What is it about the | language that make it such a good fit for game development? Seems | like every time I come across these engines, or read stuff about | game development in general, Lua is always the language of | choice. Can anyone explain it in a nutshell for me? Thanks | [deleted] | setr wrote: | I think it's less that it's particularly good for gamedev and | more that it's particularly easy to embed in an engine, and | it's faster than it has any right to be | 40four wrote: | Appreciate it! | ansible wrote: | > _... and it's faster than it has any right to be_ | | The main Lua interpreter by PUC-Rio is among the fastest | bytecode interpreters for a popular scripting language. Very | efficient C code. | | Wizard programmer Mike Pall then came along and wrote an even | faster Lua bytecode interpreter in assembly language. And | added JIT for even faster performance of hot functions. | Conscat wrote: | My understanding is that it's simply historically fallen into | the niche. Lua early on was relatively easy to embed in C | codebases, making it a natural fit for scripting C (or C++) | game engines and their editors. So many hugely popular game | development tools are scripted with Lua at this point that it's | somewhat breaking the mold to use anything that _isn't_ Lua in | this domain. | 40four wrote: | Thanks that makes sense | aewens wrote: | Probably since you can embed it in other languages quite | trivially. For instance, in C after about a dozen lines of code | you can now pass around data into Lua and back to C and thus | give you access to a scripting language with little fuss. It's | also a fairly small and simple language, so adding it in won't | add much more to the overall footprint of the project. | 40four wrote: | Interesting, thanks! | fullstop wrote: | As others have mentioned, it's got a few things going for it. | 1. It's super easy to embed in an existing code base 2. | The language itself is simple and easy to learn 3. It | has native coroutines, which allows game devs to write code | without a spider web of callbacks 4. For what it does, | it is fast | binary132 wrote: | I think it's because Lua's C API is very very closely coupled | to its native keywords and standard library, so it's not only | built for trivial embedding but also for trivial / mechanical | integration. Using the Lua API from within C or C++ is almost | like the syntactic language isn't even there and it's just a | convenient library. | | For example: | | https://www.lua.org/manual/5.4/manual.html#lua_pushfstring | | and: | | https://www.lua.org/manual/5.4/manual.html#lua_next | | It's also amazingly semantically simple and dynamic, almost | like a Lisp; even though it doesn't have classes, typelevel | programming is pretty straightforward. | | It also allows you to easily write and distribute native | modules (as shared objects) without needing integration code. | | It is also insanely portable. | jokoon wrote: | I know I'm going to bring down the mood, but that kind of engine | should support android as a priority. | | Godot does it, and it's an awesome alternative to Android Studio. | | EDIT: although it supports WASM, and I'm curious how well does | WASM works on mobile... | [deleted] | hutzlibu wrote: | Well, the dev thinks different and this is what matters. | | And WASM by itself works quite well by now, even on older | devices, but not really on stock browsers. The question is | more, how will be the whole experience of an autocompiled wasm | project with UI? This is hard to get right and debug, if not | right. | _gabe_ wrote: | That Lua debugger/editor with ImGui looks awesome! I've been | wanting to do a similar project since Lua makes the API for | creating breakpoints and stuff pretty easy. Styling ImGui to look | like a normal code editor must have been no easy task though. | gsuuon wrote: | Wonder if they've got support for Debug Adapter Protocol? | https://microsoft.github.io/debug-adapter-protocol/ | hinkley wrote: | I have been contemplating lately if we need something like either | the early days of computer games or the heyday of the Demo Scene, | where people make amusements that are meant to run on embedded | computers. | | I'm not quite sure what that should look like, but in particular | making physical puzzles driven by say an STM32 chip could be | cool. Especially if you can have it change the rules of the game | once you've solved one puzzle. | | Anyway, teeny tiny game engines brings that whole line of | thinking back up for me. | MenhirMike wrote: | > where people make amusements that are meant to run on | embedded computers. | | I'm glad that PICO-8 exists, which is kinda exactly that. | Except that it's not targeting any actual hardware (it's an | imaginary retro-system), but it ticks all the other boxes. | | Would be interesting to see what you can do in a physical space | - your STM32 example still needs some kind of output attached | to it, but with a 3D Printer and some other cheap components, | you can add whatever I/O you want. | hinkley wrote: | When I was a child, there was a hot second where someone | implemented PacMan on an LCD screen. | | And I really do mean a hot second, because one boy showed up | with one, another couple had one within days, and by the end | of the week the school had banned them. As, I'm sure, did | most every other school in the country. Now I can play | audiobooks on my watch, but no games to speak of. ___________________________________________________________________ (page generated 2023-09-13 23:00 UTC)