[HN Gopher] Pyxel: A retro game engine for Python
       ___________________________________________________________________
        
       Pyxel: A retro game engine for Python
        
       Author : nateb2022
       Score  : 255 points
       Date   : 2024-07-07 18:38 UTC (4 days ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | halfcat wrote:
       | These retro game engines are so much fun. Takes me back to the
       | days of mode 13h.
       | 
       | Pyxel is (I think) unique among Python game engines in that it
       | can run on the web.
       | 
       | Some others I've played with are PyGame and Arcade, mostly geared
       | toward 2D, but you can see some impressive 3D examples on the
       | youtube channel DaFluffyPotato.
       | 
       | Ursina is another that's more 3D, fairly expressive, and runs
       | fairly well for being Python.
       | 
       | I do feel like I'm going to be forced to cross over into
       | something more powerful to build a real game though. Either Godot
       | or Unity.
        
         | kaibee wrote:
         | Stride game engine also exists and seems pretty ok. I've been
         | trying to switch to it from Unity. Its C# based.
        
         | raytopia wrote:
         | Panda3D [0] (which is what Ursina uses under the hood) and
         | Pygame can both run on the web due to PygBag [1].
         | 
         | Truth be told you can build a game on any tool, obviously the
         | tool you choose will help shape the game you make - but it's
         | more about keeping at it then the underlying technology.
         | 
         | Personally I really like Panda3D and feel like it doesn't get
         | enough attention. It's scene graph [3] is interesting because
         | it splits it into nodes and nodepaths. A node is what gets
         | stored in the graph but you manipulate them using the nodepaths
         | which simplifies programming.
         | 
         | It also has a really amazing aync task manager [2] which makes
         | game programming no problem. You can just pause in a task (or
         | even a event) which sounds simple but you'd be suprised by who
         | many engines won't let you do that.
         | 
         | It also has a multiplayer solution [6] that was battle tested
         | for 2 mmos.
         | 
         | Finally I really like it's interval [4] system which is like
         | Unreal or Unity's timeline but code based.
         | 
         | It's also on pypi [5] so super easy to install.
         | 
         | [0] http://panda3d.org/
         | 
         | [1] https://pypi.org/project/pygbag/
         | 
         | [2] https://docs.panda3d.org/1.10/python/programming/tasks-
         | and-e...
         | 
         | [3] https://docs.panda3d.org/1.10/python/more-resources/cheat-
         | sh...
         | 
         | [4]
         | https://docs.panda3d.org/1.10/python/programming/intervals/i...
         | 
         | [5] https://pypi.org/project/Panda3D/
         | 
         | [6]
         | https://docs.panda3d.org/1.10/python/programming/networking/...
        
           | westurner wrote:
           | harfang-wasm is a fork of pygbag.
           | 
           | harfang-wasm: https://github.com/harfang3d/harfang-wasm
           | 
           | pygbag: https://github.com/pygame-web/pygbag
           | 
           | https://news.ycombinator.com/item?id=38772400 :
           | 
           | > _FWIU e.g. panda3d does not have a react or rxpy-like API,
           | but probably does have a component tree model?_
           | 
           | Is there a react-like api over panda3d, or are there only
           | traditional events?
           | 
           | The redux DevTools extension also works with various non-
           | react+redux JS frameworks.
           | 
           | Manim has a useful API for teaching. Is there a good way to
           | do panda3d with a manim-like interface, for scripting
           | instructional design? https://github.com/ManimCommunity/manim
           | /issues/3362#issuecom...
        
       | 999900000999 wrote:
       | Looks very cool.
       | 
       | I absolutely love that it uses a language I actually know instead
       | of some niche thing or a DSL.
       | 
       | I'll have to check it out when I have some spare time.
        
         | sgt wrote:
         | Check out https://love2d.org/ if you ever change your mind on
         | that.
        
       | Razengan wrote:
       | I really wish there was a modern "computer console" like the
       | Commodore 64 or Sinclair Spectrum of old, where you could boot
       | straight into a programming environment.
       | 
       | Something comparable to the Nintendo SNES or DS's hardware
       | capabilities, which seemed like the perfect sweet spot between
       | artistic freedom and "helpful" limitations which actually
       | improved creativity by lowering complexity.
        
         | keyle wrote:
         | One could argue the opposite. There are countless 'computer
         | console' available at various low price ranges.
         | 
         | The closest thing today is RaspberryPI, and boot to a linux in
         | text mode, you're basically there.
         | 
         | What is more difficult to find is the combo hardware/software,
         | but the Pi 400 includes keyboard and a mouse comes with as a
         | kit.
         | 
         | Just like in the old days, find a (~TV) cheap LCD monitor and
         | plug and play.
         | 
         | And you have hundreds of games for free, thousands possibly
         | with emulators etc. And you can program in virtually every
         | languages on the planet.
         | 
         | If anything, what you have now paralysis by choice. There is
         | just too much you can do with a basic computers, so you wind up
         | on youtube and social medias instead of being bored with 1
         | compiler and 1 book.
         | 
         | ref: I grew up on ZX Spectrum+! :)
        
           | asyx wrote:
           | And you have the option to branch off into any other kind of
           | development. A C64 Style clone is mostly nostalgia. A
           | raspberry pi is presenting you (or your children) with dozens
           | of ways to learn employable skills project based and in a fun
           | way.
        
         | shakna wrote:
         | Picotron [0] is looking like that. I am watching that project
         | closely right now.
         | 
         | [0] https://www.lexaloffle.com/picotron.php
        
           | networked wrote:
           | There are other fantasy computers, too. Check out
           | https://github.com/paladin-t/fantasy.
           | 
           | An open issue [1] makes a point that MMIXX [2], which adds
           | graphics to Knuth's MMIX, is a fantasy computer.
           | 
           | [1] https://github.com/paladin-t/fantasy/issues/109
           | 
           | [2] https://www.malgil.com/mmix/graphics/
        
         | Hackbraten wrote:
         | You might like the Commander X16. [1]
         | 
         | [1]: https://www.commanderx16.com/
        
           | Gormo wrote:
           | Also the Foenix C256: https://c256foenix.com/
           | 
           | These kinds of projects are becoming more and more common in
           | retrocomputing circles.
        
         | exitb wrote:
         | This might be a bit more complex. We like to remember that we
         | were creative in C64 BASIC, but it is really too slow for any
         | sprite-based game development. What's different between then
         | and now is that changing the frame color used to be an event
         | you told all friends about.
         | 
         | An intersection of simple and impressive - I feel like
         | Raspberry Pi Pico and the likes embody this spirit nowadays.
        
         | pindab0ter wrote:
         | Not quite what you meant, but close enough for a mention: The
         | Playdate.
         | 
         | It's a platform specifically made for games (as opposed to a
         | Raspberry Pi for example), has a library of great games and is
         | ostensibly easy to develop for.
        
         | phasel0ck wrote:
         | check out the Mega65: https://www.mega65.org
        
         | b800h wrote:
         | The ZX Spectrum Next is exactly this.
        
         | robxorb wrote:
         | You might enjoy the Pimoroni PicoSystem, or its HDMI bro, the
         | PicoVision:
         | 
         | https://shop.pimoroni.com/products/picosystem?variant=323695...
         | 
         | https://shop.pimoroni.com/products/picovision?variant=410489...
         | 
         | (Not affiliated nor trying to sell it, the shop is just the
         | best link for information.)
         | 
         | EDIT: Also it's not quite boot into IDE, but the vibe of both
         | is similar in every other way.
        
         | ramses0 wrote:
         | Also take a look at Circuit Playground Express.
         | https://learn.adafruit.com/circuitpython-made-easy-on-circui...
         | 
         | It's a "computer" that boots straight to your program.
         | MicroPython (I even did it with TinyGo), and you can make
         | lights blink! But seriously... there's some very interesting
         | stuff with it, and you can also add on another chip that lets
         | you rock and roll with motors, speakers, etc.
         | https://www.adafruit.com/product/3093
        
       | dinozarw wrote:
       | pico-8: Python Edition
        
       | ilikehurdles wrote:
       | Finally, a python game engine capable of running at 60fps ;)
        
       | LarsDu88 wrote:
       | Python AND Rust so it doesn't run like total shiite
        
         | vgalin wrote:
         | Python library with Rust backend*
        
       | erremerre wrote:
       | I made my first video game with it. A pong game you can play, but
       | it has not been polished. While the menu works, is yet unable to
       | show the selected option. And the IA to play against are either
       | too easy or brutal.
       | 
       | https://blog.rmrubert.eu/miniproyectos/rpong/rpong.html
        
         | grigy wrote:
         | This is cool, I like the dynamics. Is the source code
         | available? I'm curious how much effort went into this.
        
       | extrabajs wrote:
       | I feel like there's way too much color for this to be 'retro'. It
       | seems you are limited to using 16 colors at once, but those
       | colors are drawn from a 24-bit palette unless I'm missing
       | something.
        
         | Aeolun wrote:
         | I think 16 colors is plenty retro enough. No need to make it
         | artificially ugly.
        
         | Gormo wrote:
         | The palette is very reminiscent of the C64 default palette to
         | me, though not exactly the same.
         | 
         | EGA also used 16 colors out of a possible 64 (although the the
         | 16 colors from CGA were most often used), and the colors here
         | also approximate a selection from the EGA palette:
         | https://en.wikipedia.org/wiki/Enhanced_Graphics_Adapter#/med...
        
         | whywhywhywhy wrote:
         | No need for it to be ugly like CGA or EGA was ugly, plenty of
         | retro computers had nice colors.
        
           | extrabajs wrote:
           | Can you name one that had a 24-bit palette?
        
             | robxorb wrote:
             | Amiga AGA:
             | 
             | https://en.wikipedia.org/wiki/Amiga_Advanced_Graphics_Archi
             | t...
             | 
             | As contemporary of 8-bit arch's it seems retro enough to
             | count.
        
       | AinoSpring wrote:
       | Someone needs to make a python game engine counter
        
       | VagabundoP wrote:
       | This is a thing of beauty. Might try and make a little game with
       | my teen kid.
        
         | grugagag wrote:
         | Also give Pico-8 and Tic-80 a chance.
        
       | marksbrown wrote:
       | An absolutely fantastic engine in my experience. I've used it
       | with students (rather than pygame) due to its bare bones nature.
       | I love how with a simple class structure of update and draw,
       | students can gain a tangible grasp of oop concepts as well as
       | implementing their own ideas. 10/10
        
       | krp wrote:
       | A few years back I made some pyxel snippets for students in a
       | class I was teaching, to help get them up to speed on using it:
       | https://github.com/kris-classes/pyxel-snippets
       | 
       | They may be useful to someone here if not too much has changed
       | with pyxel since then.
        
         | dr_kiszonka wrote:
         | This is very useful. I tried Pyxel a few years ago, but it
         | wasn't documented well. There were some resources in Japanese,
         | but I don't know it, unfortunately.
        
       ___________________________________________________________________
       (page generated 2024-07-11 23:01 UTC)