Would it be wise to use Soya 3D?
I've been considering used Soya3D for my game for the compo.It'd let me work faster (I can model animate faster than I can make sprites in Inkscape), but I want get an idea of how many people would be willing to download and install it, and/or how many already have a copy or have a computer running an OS with Soya in a package repository (Such as most Linux distros).
(log in to comment)
Comments
Any idea of about what portion of that 10% has a second box/partition with Windows or *NIX?
While I would imagine that quite a few of the OS X users would have a second machine and thus be able to run your game with Soya3d, I would guess that very few of them will do so. During Pyweek judging there are usually fifty or so games to try, and anything that makes your game harder to try out will likely mean that it won't get played. I've come across judges who flat out refuse to install any kind of library beyond Pygame. As best as I can tell, installing Soya3d on anything but Linux requires compiling from source, which most people just aren't going to do. Is there a modern Windows binary? The only version I can find is for Python 2.4, which is getting a little outdated by now.
For my own part, I do genuinely make an effort to play every game. However, when I make my first pass through the games list, anything that doesn't run immediately, whether because of dependencies or bugs, gets put to one side, while I play all the games that work first time. I always intend to go back and try to make the others work, but my own laziness often triumphs, I'm afraid.
As for the number of OS X users, I'd imagine it's a lot more than 10%. It was 7/56 (12.5%) during Pyweek 5, and OS X use has increased quite a bit in the last few years, particularly for game dev. As a single data point, during Pyweek 5 I was the only Super Effective team member using OS X, but now Chard, Adam and Garath all have MacBooks as development machines.
Thanks for the info :)
*Gets back to making sprites for his practice game*
Pyglet works fine on OS X, as does the 2.x series of PyOpenGL. I'm not sure exactly what the problem is with the 3.x series - one working GL binding was always enough for me, and I never bothered to investigate further. However, once you've got a working GL binding, I've always found OS X to be one of the nicer systems to develop for, largely due to it having comparatively well-behaved drivers.
The problem with Soya is largely that it's based on a lot of C libraries, most of which are only vaguely OS X compatible. Combine this with the Soya dev team not considering OS X a priority (as they're mostly Linux-based), and you get something which sort of works, but needs a lot of coaxing, and which can break at the drop of a hat.
I'd need to write a .OBJ parser, though, but it could work. I just might have to twiddle with Blender's OBJ exporter.
I've been meaning to learn Pyglet for a while now anyway. I'll have to consider it for my next practice game and see how it goes.
By the way, Linux and FreeBSD drivers act squirrely because they're designed for Real Programmers ;-)
There are OBJ parsers for Pyglet out there, although not part of the main library. Still, it shouldn't be too hard to use OBJ files in a Pyglet-based game - I've done it myself in a couple of small unfinished projects.
Any links/tips/google search terms are well appreciated! :-)
I'm starting to reconsider this as an idea for the compo. (I actually feel kind of woozy looking at the syntax for dealing with OpenGL. I don't want to sound whiny, but I'm really humbled by it. I have no idea where to go when it comes to that, and can't fully grasp even how the code was constructed. I guess I'm not quite the hotshot I thought I was ^^;)
Still, any advice or pointers to documentation are welcome and appreciated :-P
The "standard" online introduction to OpenGL is the NeHe tutorials. These are largely based around a C/Windows approach, but the underlying API is the same, once you get beyond the basics of setting up an OpenGL context, etc. If you're looking for a more traditional approach, I'd point you at the Red Book, an older version of which is available online, and which should cover just about any questions you might have at this stage.
You should, however, be aware that OpenGL is quite low-level, and that you'll have to write quite a lot of code before you can do anything much. However, you will gain a lot in terms of flexibility.
My team will be using it this compo, and it is already being used for a few other games as well.
The only possible problem I can tell you is the PyOpenGL on OSX one, but if nothing else perhaps you can look at the code for it to get started and use it as a starting point for pyglet, it is documented fairly well, or where it's not it is generally pretty obvious what it does...
http://pygame.org/project/968/?release_id=1945
HTH :)
Having taken it upon myself to see how it would work, I tried to substitute the pyglet GL bindings for PyOpenGL in PYGGEL, it did not work. Clearly in various respects one is a more/less faithful representation of the OpenGL specification. On the upside the dependencies of PIL and numpy compiled cleanly.
OS X users also have the problem of not having pygame on 2.6 yet without serious faffery.
On the note of learning to use pyglet's GL bindings I would recommend ignoring the bits in the programming guide about contexts, screens and displays. Start here and then use the basic structure from those examples to try out the simple examples from the Red Book. Alternatively, look at the pyglet translations of the NeHe tutorials 1-10.
PYGGEL should *not* require Pygame 2.6 - until very recently I was using the previous version for dev.
In regards to the OSX problems, I asked some friends about it, and none of them say they have ever run into problems with OSX compatibility with PyOpenGL, so it is kind of a phantom issue, I dunno.
If anyone is interested, I will try and see what it will take to swap in pyglet, and make a new release or something that doesn't break backwards compatibility, etc....
Good luck either way, Akake, any/most 3d games haven't fared really well, so whatever you use, make sure you are familiar with it before the competition :)
you seem already off the soya3d-wagon, but for the record: why not package it with the game? you could make a clean source-package that only states its dependancies and a packaged version, which ships with all dependencies - very convinient for the judges :)
also i would love to see another soya3d game - the engine is one of the reasons i switched to python, when their main-dev did. haven't done much with it lately, though
I'm not sure how I'd package it, though, because it's so C-heavy. I'd like some direction for that. ^^;
I'm not necessarily off the bandwagon, just reconsidering using it for the compo :-)
The issue, as I see it, is that my copy of Soya3D is compiled for Linux. I'm not sure it would function on a Win32 system. Are Python/C modules platform-independent?
If so, I could certainly package it with my game, which would be (relatively) simple, I'm sure.
I like the idea alot. It would allow me to make a much nicer game much more quickly. ^_^
---Akake
Compiled Python modules are very much platform specific. Personally I'm very keen on pure Python libraries, like Pyglet. It makes packaging so much easier. The issue is always what to do when you need to call foreign functions. Either you have to write a compiled library (which then links the foreign library dynamically at runtime) or you stick with pure Python and use the ctypes FFI. The latter option is better for distribution but it means you have to use ctypes... Libraries can then abstract away all the ctypes magic and you can end up with a very snazzy interface to C functions loaded from elsewhere at runtime.
Anyway, some libraries go one way, some the other. As far as I know there isn't a decent set of pure Python 3d space/rendering/collision abstractions so distribution will always be tricky if you use such abstractions. It's perfectly possible to write a pure Python 3d framework on top of pyglet, distributing the pair of them. Pyglet, already being pure Python and achieving quite commendable cross-platform compatibility, is a dream for distribution. Its only snag there is its (granted optional and quite understandable) dependence on AVBin for compressed audio and video formats.
I'm not so keen on writing a full 3D framework, and I don't think I have the time to learn PYGGEL in the next couple weeks, so it'd have to wait for afterwards. ^^;
Truth be told, I'm considering working more with C++/OGRE after the compo anyway, so I may turn out to be more of a fan of that than Soya3D anyway ^^;
Thanks for the info, though. ^_^
*Has been humbled by how little he actually knows* XD
Chard on 2009/04/11 13:49:
Firstly do you definitely mean soya3d (http://home.gna.org/oomadness/en/soya3d/) and not pysoy (http://www.pysoy.org/)?
I note that neither library is available compiled nor compiles cleanly on OS X, so likely you won't target Mac users if you use either of these libraries. I also note that pysoy employs a GPLv3 like license which has crazy licensing implications on anything you write using it.
There was a system capabilities poll for PyWeek 5. From it I estimate at least 10% of PyWeek entrants use OS X. See: http://www.pyweek.org/p/8/