Porcupyne (Open-source Python Sonic engine)

Discussion in 'Fangaming Discussion' started by DM Ashura, Apr 27, 2011.

  1. DM Ashura

    DM Ashura

    Oldbie
    31
    0
    0
    Atlanta, GA
    Sonic Gemini
    Greetings. Some of you may remember me posting here about Sonic Gemini. That's been on hiatus for a little while for a number of reasons, but things are starting back up again. However, I've got a new project in the works that I'm seeking help with (both because I think the community would be able to use it and because I can base Sonic Gemini off it.)

    Introducing Porcupyne.
    [​IMG]


    Porcupyne is an in-the-works, open-source Sonic engine for Python. I've been programming it in Python 2.7 (though 2.6 may work), and extra libraries I've been using are Pyglet (for game flow), Rabbyt (for sprites), and Cython (for fast collision detection using bitmasks.) Most of the code is ported from either Sonic Dash for GM7 or from the Sonic Physics Guide on Sonic Retro. I chose Python because I believe it is an intuitive and easy-to-learn language, and because it will be easier for multiple people to contribute to a number of code files on a repository than having all the code packed into a single MMF or GM7 file.

    So far, we have implemented:
    <ul><li>Horizontal and vertical movement</li><li>Variable-height jumping</li><li>Collision detection of platforms</li><li>Slope angle detection for 360ยบ movement</li><li>Multiple directions for gravity</li><li>Scaling the game window to multiple resolutions</li><li>Scaling the physics too (if you want to, say, make an HD game)</li></ul>
    I started work on this engine around last weekend, and since then I'm pretty happy with how much I and two other programmers have gotten. (Today, I'm actually implementing rolling and spin dashing.) However, I really could use the help of some people who are experienced with Sonic fangame programming, especially if they really know the ins and outs of Dash and/or Worlds. (For one, our angle detection is still a little wobbly, and I'm having trouble fixing it.)

    Here's a link to the GitHub repository: <a href="https://github.com/DMAshura/porcupyne/" target="_blank">https://github.com/DMAshura/porcupyne/</a>

    So ... if you're interested, please leave a reply. Also, feel free to hit me up - my contact info is below.

    AIM: AstralAshura
    MSN: [email protected]
    YIM: DMAshuraWolf
    Skype: DMAshura

    Hope to hear from you guys soon! :D
     
  2. Hey DM Ashura, this is pretty cool. Nice to see more Sonic-related code on different languages, and on GitHub. I downloaded the engine, but I was missing some modules on my setup of python, I think:

    Code (Text):
    1. Traceback (most recent call last):
    2. &nbsp;&nbsp;File "setup.py", line 5, in <module>
    3. &nbsp;&nbsp;&nbsp;&nbsp;from Cython.Distutils import build_ext
    4. ImportError: No module named Cython.Distutils
    Since I'm in a pinch right now with college/work, (And since I'm not completely familiar with python packaging) I won't be able to get this running today, but I'll come back and post something when I get it running. I'm now watching the project on github.

    Also, cool logo haha.

    EDIT: I added an issue. :3
     
  3. Candescence

    Candescence

    Member
    1,980
    2
    18
    Sydney, Australia
    3D Indie Stuff
    You know, maybe I should get back to learning Python...

    Though, I can't get it running, annoyingly enough. Are you supposed to simply install the required libraries with Python, or put the bin files in the Porcupyne folder or something?
     
  4. DM Ashura

    DM Ashura

    Oldbie
    31
    0
    0
    Atlanta, GA
    Sonic Gemini
    Each of them should have a decently easy installer, I believe. Besides Python, you need:
    <ul><li>Pyglet</li><li>Rabbyt</li><li>Cython</li></ul>
     
  5. Mad Echidna

    Mad Echidna

    Gone Oldbie
    5,219
    0
    0
    So awesome. I've been dying for there to be a good open source Sonic engine for years!
     
  6. Good work!
    I'm new to Python, but it seems quite friendly to learn.
    Though, I couldn't make the collission.c work. I've always been quite bad with compilers, so any help will come in handy :)