PDA

View Full Version : Yet another "how to make games" post.



Rob Beschizza
11-29-2005, 02:52 PM
Mea culpa, mea culpa. The question asked and answered a dozen times -- but always asked again, because the asker always has a different pre-existing skill set, objective, and so on.

So, here goes.

I want to make non-cutting edge games of no commercial consequence. (Armchair ideas include: an atmospheric adventure in the Myst vein that uses watercolor paintings as the backdrop; a Hidden Agenda style "never leave your desk" political sim where you are a post-stroke Mr. Lenin trying to block Stalin's rise from your wheelchair; an apparently simple 2D scroller in the Wonderboy vein that actually has all the statistical and explorative trappings of an RPG.)

I am a competent PHP developer.

C or C++ just looks like too much hard work. I don't mean to sound arrogant, but I want to spent time on those watercolor backdrops, not buggering around debugging pointers or freeing memory or all those other low-level language Grendels I hear of.

I feel as if my target is a forest, but each tree is of a different species -- python/pygame, C#, Java, actionscript/flash -- and I don't know which one I should chop down to build my hut.

RAD is very important: I turn down enough work as it is, so making time for all this unprofitable fantasy will be difficult enough!

I'm not above "game maker" type applications, though I strongly suspect learning a real language would be better in the long run, and my experience of such things is they produce generic shit.

Any guidance?

RichardC
11-29-2005, 02:55 PM
Try http://www.bigbluecup.com

It's nominally for adventure games, but people are doing some pretty cool stuff with it - http://www.fullyramblomatic.com/gfw/. It should do at least two out of the three (you're probably looking elsewhere for the platformer though...)

Talisker
11-29-2005, 02:57 PM
Flash is definitely worth considering -- Actionscript isn't too tough to pick up, it handles graphical bits easily, and it's a cinch to slap your game up on a web page for people to play.

That said, Python is the best language ever, so if it were me, I'd try python/pygame :)

Beyond that, I haven't tried any of the game-developer-in-a-box type things (such as darkbasic or whatever it's called), so I dunno how those would compare.

Gordon Cameron
11-29-2005, 03:13 PM
an apparently simple 2D scroller in the Wonderboy vein that actually has all the statistical and explorative trappings of an RPG.

Oh oh! Do this one!

Rob Beschizza
11-29-2005, 03:25 PM
an apparently simple 2D scroller in the Wonderboy vein that actually has all the statistical and explorative trappings of an RPG.

Oh oh! Do this one!

LOL. This idea was, literally, the result of Morrowind crashing, and me thinking, "Why can't some dumb bastard just make a 2D version of this that actually works."

Lum
11-29-2005, 03:30 PM
a Hidden Agenda style "never leave your desk" political sim where you are a post-stroke Mr. Lenin trying to block Stalin's rise from your wheelchair

I'm actually working on a similar game set in the Russian Civil War in my spare time. (What can I say, we all need hobbies.) Post-first stroke, Lenin was capable of maybe half an hour of work a day at best, which would definitely be an interesting game mechanic! Post-second stroke, Lenin was a vegetable capable of saying two or three words, none of which were "Fire Stalin".

PHP/MySQL is actually a viable target for a simple multiplayer web game like what you describe. There was a survival horror zombie game that was all the rage a while back (forget the name) that used a similar platform.

Jasper Phillips
11-29-2005, 04:07 PM
Religously speaking, IMNSHO you definitely want python+pygame, but practically for you the mileage may varry. Alot of what you should use among the others depends on the specifics of your situation. Some important things to consider, roughly in order:

1) What languages do the programmers you know like best? If you're learning the ropes it helps to have competent advice for when you're stuck.

2) Just what game you want to do, in specific detail. More simple games may work well in Flash for example, but most won't.

3) Library/Framework availability. Do you want 3D graphics, networking, a GUI?

4) Whether the language is Python. :D Seriously. I've worked professionally with all of the lanuages you mention except Flash, and IMNSHO Python is clearly best. C++ is too low level and is full of pitfalls for the beginner. Java and C# take more effort per module than Python, aren't as elegant, and aren't really any faster either -- their main advantage is in access to libraries for which you'll have no use.

However you slice it, you'll have a ton of work cut out for you, especially if (as you imply) your only programming experience is some adhoc PHP -- it'll be a lot like taking a couple of courses at the local university, with lots of books, practical exams, etc. Take a look around the net at all the half finished hobbyist games, and understand what you're getting into.

If you decide you're game for it all, I'd advise first tinkering around with an existing project. I know just the project too... :twisted:

Rod Humble
11-29-2005, 04:16 PM
Some stuff in this thread maybe of use.

Cheers!

http://www.quartertothree.com/phpBB2/viewtopic.php?t=18340&highlight=

chet
11-29-2005, 04:20 PM
Flash or Director.

There is a reason you see most casual web games built in either of these two languages. You don't have reinvent the wheel, you can find many, many examples and libraries to work from.

I think for the most part, unless you are doing a full fledged 600meg game, making it work in the browser is the way to go. No install issues etc, there is so much overhead taken care of for you. Most people who think Flash or Director are too limited, or only for simple games, simply have never worked with them.

If you are planning on really going whole hog and making some indepth giant game, I would suggest modding a game versus starting from scratch. But from what you described, flash/director will work fine.

I haven't had time to checkout the popcap api stuff, but that also might be interesting.

Chet

Unicorn McGriddle
11-29-2005, 04:31 PM
I share Lum's Russia fetish. Also, Hidden Agenda was awesome. And I'm all about the Lenin, who was perhaps the most stylish charismatic leader in history.

Qenan
11-29-2005, 04:35 PM
That said, Python is the best language ever, so if it were me, I'd try python/pygame :)

Lisp and Ruby are both nicer languages, IMO, but I couldn't say how they do for games. Probably not much in the way of related libraries.

shang
11-29-2005, 04:41 PM
Go with Python/Pygame. A great language and a lot of libraries/frameworks for game writing. And there's PyOpenGL for 3D stuff and/or hardware accelerated 2D stuff.

Flash has better RAD tools though, but they cost money.

Jasper Phillips
11-29-2005, 04:47 PM
Flash or Director.

There is a reason you see most casual web games built in either of these two languages. You don't have reinvent the wheel, you can find many, many examples and libraries to work from.
I would say the reason that casual games use flash is simply because they are casual, and their customers demand ease of installation.


Most people who think Flash or Director are too limited, or only for simple games, simply have never worked with them.
I fit into that broad catagory, although I don't think we're so easily dismissed. IMHO Flash is limited to simple games because IIRC it's not fully object orientated -- a severe limitation for complex projects. Admitedly I don't have experience with Flash; is there some large complex project you're thinking of that Flash has handled admirably?

Lum
11-29-2005, 04:49 PM
I was actually thinking of using DHTML for the game interface, since it'd be stupidly simple (basically manipulating spreadsheets!) but are there any sites out there for Flash APIs or similar?

More on topic, Lenin wasn't charismatic so much as really, really focused.

Talisker
11-29-2005, 05:00 PM
That said, Python is the best language ever, so if it were me, I'd try python/pygame :)

Lisp and Ruby are both nicer languages, IMO, but I couldn't say how they do for games. Probably not much in the way of related libraries.
While I like Python a great deal, my tongue was firmly in cheek above. No silver bullet, etc :)

Unicorn McGriddle
11-29-2005, 05:05 PM
Lenin wasn't charismatic so much as really, really focused.

Well either way, he sure swept me off my feet. Also, put a picture of any other world leader next to a picture of Lenin and that poor other guy will look like motherfucking Gleek.

Jab
11-29-2005, 08:27 PM
hm python is that good eh? I have a teach yourself python pack from deitel I won a few years ago, I'll have to open it up and give it a shot then.

Jasper Phillips
11-29-2005, 08:56 PM
If you already know how to program, the python book you want is "Python Essential Reference" by David Beazley.

Rod Humble
11-29-2005, 09:30 PM
Lenin wasn't charismatic so much as really, really focused.

Well either way, he sure swept me off my feet. Also, put a picture of any other world leader next to a picture of Lenin and that poor other guy will look like motherfucking Gleek.

I have always been a Stalin admirer myself. The guy was quietly in the background, getting the job done, taking note of scores to settle later :)

BTW for that sort of game check out Floor 13 a very old PC game from Virgin, good for ideas.

Jab
11-29-2005, 10:12 PM
I'm an adequate programmer, took C++ in high school, taking it again next sem. Never touched python before. I've forgetten alot of it from not using it.

PeterGinsberg
11-29-2005, 10:50 PM
Most people who think Flash or Director are too limited, or only for simple games, simply have never worked with them.
I fit into that broad catagory, although I don't think we're so easily dismissed. IMHO Flash is limited to simple games because IIRC it's not fully object orientated -- a severe limitation for complex projects. Admitedly I don't have experience with Flash; is there some large complex project you're thinking of that Flash has handled admirably?

Have you looked at Flash in the last couple years?

Actionscript 2.0 has a signficant portion of the what it takes to be a more serious OO language (classes, inheritances, private/public methods, interfaces, typed variables, defined return types for functions, exception handling, etc). This has been available for a couple years now. The problem is too many flash "coders" who are really more designers and don't have any experience with OOP and are still writing old style actionscript.

I've worked on several quite complicated games in flash ( e.g. the previously-mocked-on-qt3 Avatar Prom (http://www.the-n.com/games/avProm/) -- free email-less account required -- a Fire Emblem-ish strategy RPG prom game).

The RPG/Card Combat/Dating game we're working on now (it's about as nuts as it sounds) is even more complicated and Actionscript is not getting in my way at all. We've got dozens of classes and very well organized code base that allows good collaboration between the two coders on the project.

There's even some really nice flash IDEs out there: http://www.powerflasher.com/fdt/flashsite/flash.htm
As well as extensive libraries, standalone compilers, and many other useful code to grab.

This is all in addition to the fact that Flash gives you a much better shot at being able to work easily with artists/animators. They are likely to be already familiar with the tools, and you can just drop the animations in.

I've done a lot of coding in other languages, but I've never worked with Python, so I can't really compare it to Flash.

Rob Beschizza
11-29-2005, 10:57 PM
Thanks all for your suggestions! Which went something like "Python, Python, Python, Flash, Python, Python, Python, Python, Python, Python Python, Python, Python, Python Python, Python Python, Python Python, Python Python, Python, Flash, Python, Python, Python, Python, Python Python, Python, Python, Python." :-D

Thank you especially to Jasper and Chet: I must admit to being basically torn between Python and Flash, and will cover my bases by doing some very simple stuff in both until I get a feel for what's possible with each. I'll have a go at making Tetris or Pacman with both, see what happens.

Lum, if I ever get around to "Comrade Prometheus" I will be in touch! I have thought of doing something with PHP/MySQL online using XMLhttpRequest to make it smooth and toasty, since that's all the rage these days.

Rob Beschizza
11-29-2005, 11:00 PM
Go with Python/Pygame. A great language and a lot of libraries/frameworks for game writing. And there's PyOpenGL for 3D stuff and/or hardware accelerated 2D stuff.

Flash has better RAD tools though, but they cost money.

Can you name some for me to google? Money isn't a problem, assuming we're not talking 4 figures here.

chet
11-30-2005, 12:00 AM
Give python a try, but I would say python would be a mistake. Are people pushing the language because it is the current geek favorite or are they pushing the language because it will help you make games?

Check out right now, list the good games made in python.

Now list the good games made in flash/director (get back to me in a few years when you are done listing).

Python is a great language for some things. It has its place where it outshines other languages, and yeah, people are trying to use it to make games, but as the sole language to develop a game in? What I see right now in the python people, making a complete game all in python - "Wow, look at what I did in python", Dude! Cool! Rad! You did that in python!!!

You don't see that much anymore in flash/director. Because they are mature tools being used for years to make games. Do you want to be a pioneer for a language? Or do you want to make games?

For the game types you describe, I could list countless examples in flash/director. And you could prototype and develop them quickly, with plenty of tools already available. You could work easily with artists who are familiar themselves with the tools.

For a 2d scroller, there is this in flash, Sonic The Hedgehog (http://www.wickedsmallgames.com/games/s/sonic-the-hedgehog/play-game.html) among thousands.

Just a few adventure style games (http://www.wickedsmallgames.com/games/web-games.php?sorder=cat&cat=7), and I mean just a few. I could list hundreds if not thousands of examples of your game types already done in flash/director.

Why choose python? Can someone really explain that specific to games, not specific just to the language? And I am looking for practical proven examples, not theoretical. What has it done game wise?

I would choose your language because it has a long history of making games, is reasonable to learn, has a giant game community, thousands of code examples and functions, understood by artists.

What language would you be able to make a "game" in quickest? What language would you be able to make a "professional" level game in quickest? Easiest?

And while I say director/flash, for the level of game you are describing I would say flash. They aren't the same language, but with the same bent of being designed for interactive graphical tasks, like games. You can download a trial of flash and play with the tutorials and look at some code examples.

And don't discount installed vs web games. Do you really want to monkey around with installers? Updates? Those are ambitious things for first projects. Those are not making games things.

Chet

Talisker
11-30-2005, 12:33 AM
While I said that I'd use Python myself up-thread a ways, yeah, my Python boosterism is misplaced. I use it for all kinds of non-game code, and as such, while it'd be a great choice for me, Chet and malphigian are giving the most sound advice here.

Macromedia will let you download a 30-day trial; I haven't tried any of the 3rd party IDE's yet m'self, as the stock Macromedia stuff works fine for me on the odd occasion I need to do Flash work.

(Python's still a great language though :P)

Chris Nahr
11-30-2005, 04:37 AM
Geez, the Pythonistas are getting worse than the Lisp weenies. Chet is right, there's absolutely no reason to use Python for games. It's cute that someone made game libraries for Python but that doesn't make it a good game development platform.

For the kind of games Rob describes, the optimal tool is not a general-purpose programming language but an integrated environment that focuses on creating graphics and linking them together. Macromedia's stuff should fit the bill.

And if you ever feel like getting more hardcore but still want to avoid C++, you should check out Microsoft's free Visual C# Express and Managed DirectX. Tinkering around with heterogenous Python/C libraries for graphics & games might be fun if you're hell-bent on using Python anyway, but it's hardly a productive choice otherwise.

pms
11-30-2005, 11:14 AM
a Hidden Agenda style "never leave your desk" political sim where you are a post-stroke Mr. Lenin trying to block Stalin's rise from your wheelchair;

Okay, am I on a desk or am I in a wheelchair?
Why is Stalin in my wheelchair?
Is there a sub-game where I try to drool into a cup without spilling anything?

Also: embalmers.

BaconTastesGood
11-30-2005, 11:53 AM
Python and Flash operate in different spaces. While I basically agree with Chet's synopsis, I disagree with his tone. Python can be used to make some kinds of games that Flash can't, just like C++ can be used to make some kinds of games that Python can't*.

They key is understanding what the trade offs are. Python is free, portable, and provides access to services like OpenGL, imaging, numerics, and "non-gaming stuff" that you suddenly find out might be real useful for gaming (such as networking, compression tools, string manipulation, etc.).

Python, as a general purpose language, is going to be harder to pickup and just get something going than a more domain specific language, but it will ultimately prove to be more flexible.

The question is: is that flexibility important?

* Yes, you could call something a Python app even if it called back into C++ for everything, but that's a semantic dodge. The reality is that a compiled C++ application is WAY faster than an interpreted, uh, anything.

Lum
11-30-2005, 01:22 PM
It looks like for a client-server turn-based game, a client app in Flash would be absolutely peachy keen, assuming the client can make http and/or sql calls. Definitely gonna research it further, thanks.

(I'm tempted to write the server in python, though, just to really torque off this entire thread. HE CROSSED TEH STREAMS!)

chet
11-30-2005, 02:03 PM
I know you are poking me with a stick, but Lum, that would be the point of the thread, at least for me. Which is why I dismissed python as the "sole language" choice. Play to a language's strengths, especially if you are new to the language.

Writing the server side in python makes sense. While there are some cool server stuff being done with flash with things like SmartFox (http://www.smartfoxserver.com/) (and others), if you are calling the backend using simple http calls, your backend should be built in the language that is best at handling that. In this case i would actually stick with php/mysql, but i could see someone preferring python. And yes, you can pass stuff back and forth to a server this way from a flash client.

And Brian, yes, every language has its strengths and I don't think I entirely dismissed python. But answering the original question, I do stand by the idea that python as the lone language would be a horrible choice for the games he mentioned.

Side note, I thought python was not as portable as flash in the sense that you have to recompile your release for each platform and there are some trade offs, is this not true?

And lets be honest, no offense to anyone, but the chances of any of the game ideas being taken to the point of being satisfying, even for the creator, is very, very low. Adding multiple languages, or shoehorning a language into a game language because it might be flexible later is just another stumbling block to the game. Make a version in flash, from zero to alpha it will be quicker. Then if you need something, get stuck, see issues, you can understand your choices in the context of making the game, not in some open ended, I am making a game where you sit in a wheelchair, will this language let me make an rfc compliant email server?

Chet

Rob Beschizza
11-30-2005, 02:16 PM
a Hidden Agenda style "never leave your desk" political sim where you are a post-stroke Mr. Lenin trying to block Stalin's rise from your wheelchair;

Okay, am I on a desk or am I in a wheelchair?
Why is Stalin in my wheelchair?
Is there a sub-game where I try to drool into a cup without spilling anything?


I've already started the game. Here's a screenshot:

http://www.celestialmechanics.com/avatar/altered.gif

I think I'm going to take chet's advice and home in on Flash. I've had a look at everything, and Python strikes me as a good general purpose language that would be great for slightly bigger, more traditional games -- a way to do what the big boys do, but easier and on a smaller scale. That's not really what I need. I'm definitely in it for garage fun, and the fact that I already know javascript, and Flash's actionscript is very similar, is really tilting me that direction. That, and chet's relentless but convincing browbeating. :-)

PeterGinsberg
11-30-2005, 02:20 PM
I'm definitely in it for garage fun, and the fact that I already know javascript, and Flash's actionscript is very similar, is really tilting me that direction.

FYI (useless fact incoming!), it's very similar because javascript and actionscript both use the ECMAScript (http://en.wikipedia.org/wiki/ECMAScript) standard.

Jasper Phillips
11-30-2005, 02:21 PM
I feel like I've been machine gun tag teamed by the flash mafia. ;-) IMHO Python is substantially better, but as I attempted to point out, it's not the most important choice.

Some sort of combined application like Lum suggests actually sounds pretty cool, and might make the best of both worlds if only because you can easily play it in a browser.

Jasper Phillips
11-30-2005, 02:59 PM
Give python a try, but I would say python would be a mistake. Are people pushing the language because it is the current geek favorite or are they pushing the language because it will help you make games?

Check out right now, list the good games made in python.

Now list the good games made in flash/director (get back to me in a few years when you are done listing).
Yes, I would say because it will help you make games.

I took a quick list through the flash games you mentioned, sorted them by highest stars, and after looking through the top 30 or so found nothing I even came close to wanting to play. In the past I have found some cookie cutter point-and-click adventure games, but that's it. Honestly, I'm not impressed by the "endless number of good flash games".

Pygame is just a wrapper around SDL and/or OpenGL, which are used in many actually good games, Linux ports for games come to mind as well as Dominions. Python has also seen use to varrying degrees in games such as Templel of Elemental Evil, Freedom Force, EVE Online, backyard sports games, Ultima Online 2 (although this was cancelled).


Python is a great language for some things. It has its place where it outshines other languages, and yeah, people are trying to use it to make games, but as the sole language to develop a game in? What I see right now in the python people, making a complete game all in python - "Wow, look at what I did in python", Dude! Cool! Rad! You did that in python!!!
I use Python for it's combination of ease and utility, and because it handles everything I need to do, not to show off. I've never seen Flash handle the (limited!) sorts of 3D things I want, nor the networking.


I would choose your language because it has a long history of making games, is reasonable to learn, has a giant game community, thousands of code examples and functions, understood by artists.
The size of the community is definitely in favor of Flash. It will undoubtedly be easier to find others who know it, and this alone is enough to favor it if you're new to programming.

As far as artists go though, I'm not sure I follow. These games all use standardized video/image/animation formats. What's different about making a .png for a Flash game vs. any other format?


What language would you be able to make a "game" in quickest? What language would you be able to make a "professional" level game in quickest? Easiest?
Flash for the first by a small margin, although Python is used for 48 hours game making contests. Python for the second.


And don't discount installed vs web games. Do you really want to monkey around with installers? Updates? Those are ambitious things for first projects. Those are not making games things.
True, having all this stuff standardized and probably already installed is nice.

Jasper Phillips
11-30-2005, 03:02 PM
And if you ever feel like getting more hardcore but still want to avoid C++, you should check out Microsoft's free Visual C# Express and Managed DirectX. Tinkering around with heterogenous Python/C libraries for graphics & games might be fun if you're hell-bent on using Python anyway, but it's hardly a productive choice otherwise.
Python is silly, but C# is ok? The two aren't that different...

BaconTastesGood
11-30-2005, 03:04 PM
Side note, I thought python was not as portable as flash in the sense that you have to recompile your release for each platform and there are some trade offs, is this not true?

Compiled python files are completely portable, but obviously any packages you are dependent upon may not be available on platform X, but by and large you're going to find the most popular stuff available everywhere (or, at the very least, a lot more places than Flash).

A basic Python app that runs on Windows will run on OS X and Linux, assuming reasonably sane configurations.

Jasper Phillips
11-30-2005, 03:16 PM
Python and Flash operate in different spaces. While I basically agree with Chet's synopsis, I disagree with his tone. Python can be used to make some kinds of games that Flash can't, just like C++ can be used to make some kinds of games that Python can't*.

[snip]

* Yes, you could call something a Python app even if it called back into C++ for everything, but that's a semantic dodge. The reality is that a compiled C++ application is WAY faster than an interpreted, uh, anything.
I'm curious, how much faster do you think WAY faster is? One scientist I saw did Nuclear Simulations in (an older, slower version of) Python and C++, then compared the two. C++ was less than twice as fast. Alot of processing gets offloaded on the graphics card and bottlenecks can be done in C, so the difference can in practice be smaller.

The bleeding edge where C++ can make a game that Python can't is fairly small, and due more to access to libraries than efficiency. This isn't just a matter for Python either, but also Java, C#, Delphi, etc.

chet
11-30-2005, 04:07 PM
Jasper, not trying to be a dick, but can you link to just one of all the great python games out there?

As I said, I linked to a tiny, tiny, inisignificant number of games, but that were similar to what was being proposed. If you want to make a "atmospheric adventure in the Myst vein that uses watercolor paintings as the backdrop" discussing point-and-click adventure games might be a starting point...

Thanks

Chet

Jupiter Jones
11-30-2005, 04:31 PM
I fit into that broad catagory, although I don't think we're so easily dismissed. IMHO Flash is limited to simple games because IIRC it's not fully object orientated -- a severe limitation for complex projects. Admitedly I don't have experience with Flash; is there some large complex project you're thinking of that Flash has handled admirably?

Flash Actionscript 2.0 is 99.9% object oriented. 3.0 will be 100%.
If you are interested in making Object Oriented stuff with Flash, pick up the books by Colin Moock. If you want to make cool games with Flash, get one of the books by Jobe Maker. Get both and rule the universe.

Backov
11-30-2005, 04:53 PM
Jasper, not trying to be a dick, but can you link to just one of all the great python games out there?

As I said, I linked to a tiny, tiny, inisignificant number of games, but that were similar to what was being proposed. If you want to make a "atmospheric adventure in the Myst vein that uses watercolor paintings as the backdrop" discussing point-and-click adventure games might be a starting point...

Thanks

Chet

There's one he forgot to mention in his list.

Civ 4.

Edit: Yes, it's a C++ base with Python/XML high level stuff. That's how it's supposed to be done.

chet
11-30-2005, 05:40 PM
Jasper, not trying to be a dick, but can you link to just one of all the great python games out there?

As I said, I linked to a tiny, tiny, inisignificant number of games, but that were similar to what was being proposed. If you want to make a "atmospheric adventure in the Myst vein that uses watercolor paintings as the backdrop" discussing point-and-click adventure games might be a starting point...

Thanks

Chet

There's one he forgot to mention in his list.

Civ 4.

Edit: Yes, it's a C++ base with Python/XML high level stuff. That's how it's supposed to be done.

And so Rob should learn python, C++... hire 40 guys, get an office filled with ping-pong tables and free pepsi. A PR guy to start hyping his game, a few million investment, blah blah blah.

YES PYTHON IS THE GREATEST FREAKING PROGRAM EVER, ROB SHOULD USE IT TO BUILD* THE PYTHON SUPPORTER'S GAME!

But for his game i would still suggest flash.

Chet
*Oops, forgot to point out, knowing python can't make the python supporter's games. Rob, you also need to learn C++. But hey! You will have used python, and thats all that counts.

Backov
11-30-2005, 06:09 PM
Chet, you don't have to win every argument man.

You asked for a good game made with Python, I told you. No need to go off.

Jasper is right, Python/PyGame is a fine alternative for indie games. It's portable, it's easy (relatively), and it's good.

Flash is another good option, but not one I would ever recommend to anyone.

BaconTastesGood
11-30-2005, 06:27 PM
I'm curious, how much faster do you think WAY faster is?

Depends on what you're doing. If you're doing hardcore numerical stuff, like millions of matrix multiplications, it's probably well over an order of magnitude or more. Basically the more stuff you're doing "in the language" the slower Python will be, whereas the more stuff you're doing with stuff that can be offloaded or is bottlenecked externally (e.g. an FTP client) the faster you'll reach parity.

If you're doing stuff that relies on a lot of Python's internal stuff which is heavily optimized, e.g. the maps, comprehensions, generators, etc. then again, the speed difference will be reduced.


The bleeding edge where C++ can make a game that Python can't is fairly small, and due more to access to libraries than efficiency. This isn't just a matter for Python either, but also Java, C#, Delphi, etc.

Isn't Delphi compiled?

One other major, MAJOR area of difference is memory size and footprint. I've written a custom XML editor for a client of mine and even though it's relatively small, the total distribution is almost 10MB because of support libs, etc. I've written entire games in C++ 1/4 that size -- with music and sound effects embedded in them.

But I still pretty much code almost exclusively in Python these days, reverting to PHP for Web stuff (if the Python Web stuff was more ubiquitous and popular I'd probably switch to that as well) and C/C++ (I prefer C) for small, fast, compiled applications.

chet
11-30-2005, 06:27 PM
Its not winning every argument, it is responding in kind. It is being sick of the religious fervor, where people ignore anything being asked and put forth these arguments based on hypothetical reasons. Look at the beginning of this thread, do you really think rob would have been best served learning python?

But backov, you didn't answer me. Civ4 is not programmed in python, it uses python as a scripting language ontop of its engine. So I would ask again, when someone asks what language (singular) they should learn to program to make games of the type rob mentioned, what language (singular) should they learn?

And if you are going to say python. Name some python only games as an example. At this point I am honestly curious to see anything decent from the python community. I follow this area pretty closely and have never seen anything very interesting done all in python, mostly proof of concept, so is there something I missed? Do good python games exist?

Jasper dismisses the few examples i used, but then really dismisses rob's games as well. If we want to talk about hypothetical game making from someone experienced in C++, or whatever, that is a different discussion, would be a fine discussion, but to continually ignore the practical, or real to keep pushing python? I am asking you, jasper, anyone - take it out proof of concept, show me the end result of making a python only game.

From the guy's trying to make games I talk to, which are quite a few, the #1 stumbling block is getting caught up in process, and not keeping focused on the end result. If you want your hobby to be working on games, fine, go for it, there is fun in that, use anything and everything. But if you want to make your hobby making games, you have more focused choices. Depending on your background, some people would be better suited for java, some a c variant, some should go with popcap's sdk and build from there etc.

But what I see here is a bunch of hypothetical discussion not about games, but about languages, about championing a language over championing game design. I see roadblocks being put forward instead of solutions. I would rather see people make games, to the point it can be played, then see a bunch of crap that will never be played. It is a selfish reason. I want to play games.

Chet

Backov
11-30-2005, 06:29 PM
To be honest, Rob might as well invent and develop his own language in 8806 assembly - he'll have about the same chance of finishing anything.

Language choice is pretty unimportant. Finishing something is the bitch.

EDIT: And to answer you a bit - if you're really serious about making a 2d game, and not just wanting to dink around with Director or something.. C++ and the Popcap games framework will rock your world. It's really good.

Jasper Phillips
11-30-2005, 07:16 PM
I'm curious, how much faster do you think WAY faster is?
Depends on what you're doing. If you're doing hardcore numerical stuff, like millions of matrix multiplications, it's probably well over an order of magnitude or more.
The Nuclear Simulation example I gave was hardcore numerical code.

Lum
11-30-2005, 07:22 PM
Delphi is a compiler, yes. It'd be called Visual Pascal if Microsoft marketed it. The creator (http://en.wikipedia.org/wiki/Anders_Hejlsberg) was hired by Microsoft, and duly came up with C#.

I learned Pascal before C, so I do entirely too much work in Delphi.

Rob Beschizza
11-30-2005, 08:43 PM
To be honest, Rob might as well invent and develop his own language in 8806 assembly - he'll have about the same chance of finishing anything.


Why do you say this?

Backov
11-30-2005, 09:59 PM
To be honest, Rob might as well invent and develop his own language in 8806 assembly - he'll have about the same chance of finishing anything.


Why do you say this?

Because making a game is hard. Try it, you'll see.

Wasn't trying to dis ya btw, it really is just fucking hard to finish something as big as a game.

Matthew Gallant
11-30-2005, 10:11 PM
That Altered Bolshevik screenshot is nifty.

Rob Beschizza
11-30-2005, 10:52 PM
To be honest, Rob might as well invent and develop his own language in 8806 assembly - he'll have about the same chance of finishing anything.


Why do you say this?

Because making a game is hard. Try it, you'll see.

Wasn't trying to dis ya btw, it really is just fucking hard to finish something as big as a game.

LOL :) You got me all fired up with the original comment. So here is my very first ever computer game, extruded in PHP in about 90 minutes (firefox recommended, IE flickers on page reload):

Most Respected Game By Far! (http://www.celestialmechanics.com/eyeball/index.php)

If the server wont feed you refreshes fast enough, I also put it here: http://www.onlineeditions.com/eyeball/index.php

I know it's totally ghetto, but that's my point, and the point that I think Chet has been trying to get over: what I'm aiming to achieve really isn't a million times more complicated than this.

Rob Beschizza
11-30-2005, 11:00 PM
That Altered Bolshevik screenshot is nifty.

Welcome to your who whom!

:)

shang
12-01-2005, 12:59 AM
And if you are going to say python. Name some python only games as an example. At this point I am honestly curious to see anything decent from the python community. I follow this area pretty closely and have never seen anything very interesting done all in python, mostly proof of concept, so is there something I missed? Do good python games exist?

Here's a few to get you started:

http://www.pygame.org/thumb/fdcef8759fb3a368dc2e58e446615e0e.png

http://civil.sourceforge.net/

A turn based, networked strategy game based on the American civil war.


http://www.pygame.org/thumb/731bc1fe2b953cd715d4ed45e58d4e58.png

http://www.ospace.net/index.en.html

A semi-massive multiplayer space conquest game that has hundreds of players.


http://www.pygame.org/thumb/c94e17f1da05343efe1859a9342fe897.png

http://bub-n-bros.sourceforge.net/

Networked multiplayer clone of Bubble Bobble.

http://www.pygame.org/thumb/9d74b0a5f0d0fa3cb81af40b15f0d814.png

http://basegolf.net/

A commercial baseball/golf hybrid game (sold, for example, via TotalGaming.net).


http://www.imitationpickles.org/pyweek1/shot-v11-thumb.jpg

http://www.imitationpickles.org/pyweek1/

The PyWeek game programming contest winner, where you sneak past guards and blow up stuff with dynamite.


Then there's the usual bunch of tetris/bejeweled etc. clones that are aplenty in the Flash world too. http://www.pygame.org/projects/6

Now I know I'm pretty biased in favor of Python, and Flash probably is better for simple games, but I hold to my opinion that as soon as you start to need the flexibility of a real, general purpose programming language, Python is the way to go.

And while my own game projects (http://people.cc.jyu.fi/~shang/projects/games.html) have been mostly proof-of-concept kind of things, I have actually used Python myself for game related stuff, so it's not just a matter of liking Python for e.g. web stuff and recommending it based on that.

I've been coding Java and C++ professionally for about six years now, and Python is way way more productive. The only things going for C++ and C# are generally better performance and DirectX (which could be pretty easily called from Python too, but nobody AFAIK has bothered to create the wrappers yet, since that would lose the portability benefit of Python games).

PeterGinsberg
12-01-2005, 07:22 AM
Now I know I'm pretty biased in favor of Python, and Flash probably is better for simple games, but I hold to my opinion that as soon as you start to need the flexibility of a real, general purpose programming language, Python is the way to go.

What features, exactly, are missing from Actionscript that make it not real? Have you actually sat down and evaluated the language, or are you just tossing out a gut reaction?

I ask this because we've seen people who seem to be making judgements on very very old versions of Flash a couple times in this thread (e.g. "Actionscript isn't OO" when it actually is).

Here are some downsides of flash:
Flash/Actionscript can't do 3d. It's pretty good for networked stuff, but has some pretty annoying quirks. It's not appropriate if you need to interface with other languages (e.g. C++) or OS level APIs. Flash has a fairly high performance overhead.

All of the games you link above would work just fine in flash, for example. You could also play them without having to install each of them :).

I'm glad to see Python games, and I think it's cool for people to promote languages/platforms they like. I'm just less into people putting down another platform that they might not actually know very much about (last comment not directed at you, shang, just the general tone in parts of this thread all around).

Rob Beschizza
12-01-2005, 10:22 AM
Thank again, folks. Let's not have a holy war: it's clear to me both languages might be useful, and I don't think I'll have problems identifying which would be more appropriate for a given project.

shang
12-01-2005, 11:46 AM
Now I know I'm pretty biased in favor of Python, and Flash probably is better for simple games, but I hold to my opinion that as soon as you start to need the flexibility of a real, general purpose programming language, Python is the way to go.

What features, exactly, are missing from Actionscript that make it not real? Have you actually sat down and evaluated the language, or are you just tossing out a gut reaction?

It's not the syntax or the features of the language, really. What I'm thinking when I'm making the distinction is the wealth of existing libraries. However, I do admit that it is partly my gut speaking, I haven't looked into the new versions of Flash in any detail (I think I will after this :)). Plus learning a general purpose language instead of a special purpose language can be useful if you want to do something else than games in the future, but yeah, this is mostly besides the point here.

I guess the biggest problem with Flash is if you want any kind of persistence, like saving a game. With Flash, you need some sort of server backend with e.g. PHP+MySql that introduces a completely new environment and language to learn in addition to Flash/ActionScript. Not to mention you have to host the saved data for all your players. On the other hand, distributing Python games is still a bit of a hassle, so that's definately a very strong argument for Flash games.

Knowing as many tools as possible doesn't hurt, though. This thread has definately renewed my interest in Flash, as I haven't done anything with it in ages. And I suggest those you dismiss Python for games programming outright to give it a try sometimes. It might surprise you on how pleasant it is after years of C++ coding. :)

Rob Beschizza
12-01-2005, 12:40 PM
It might surprise you on how pleasant it is after years of C++ coding. :)

I am always fascinated by the hate I hear for C/C++, from C/C++ people.

People used to always whine about human-readable languages like C, as opposed to more difficult, faster programs written in assembler.

Now that higher level languages are becoming marketable against C and the like, however, you'd expect the same thing to happen: C++ speed snobs lording it over the amateurs and their glorified scripting languages. But no, it's as if programming in C and its relatives is so painful that slipping into a warm tub of Python or C# or Java or PHP is the best thing that ever happened.

From an amateur's point of view, this situation rules. I just find it vaguely shocking that not one person has come in this thread to tell me "Suck it up. If you're going to bother, learn C++ and do it properly."

Fugitive
12-01-2005, 12:56 PM
I am always fascinated by the hate I hear for C/C++, from C/C++ people.
I think it's one of those things where it looks great going in, but it's not until you've spent a few years banging your head against the language's complexity and zillion little gotchas that you understand other people's complaints.

And even though there's a large body of work on tips and ticks, how to avoid problems, design appropriately, etc., you still can't throw all of that at someone brand new to the language and expect them to start coding perfectly. You're going to eventually screw up in one of the language's more infamous ways whether you think you're prepared for it or not.

Jasper Phillips
12-01-2005, 01:14 PM
What features, exactly, are missing from Actionscript that make it not real? Have you actually sat down and evaluated the language, or are you just tossing out a gut reaction?

I ask this because we've seen people who seem to be making judgements on very very old versions of Flash a couple times in this thread (e.g. "Actionscript isn't OO" when it actually is).

Here are some downsides of flash:
Flash/Actionscript can't do 3d. It's pretty good for networked stuff, but has some pretty annoying quirks. It's not appropriate if you need to interface with other languages (e.g. C++) or OS level APIs. Flash has a fairly high performance overhead.
It has been quite a while since I looked at Flash/Actionscript, and I'm glad you sorted me out about it now being OO! Do you know of a good place to download some actual code to look at, and/or a good programmers overview of what the language does? My google fu is weak, as all I turn up is an endless stream of "tutorials", stuff that apparently requires the IDE to look at, or people charging money for what I suspect is free elsewhere. :-/

Jasper Phillips
12-01-2005, 01:28 PM
I am always fascinated by the hate I hear for C/C++, from C/C++ people.

People used to always whine about human-readable languages like C, as opposed to more difficult, faster programs written in assembler.

Now that higher level languages are becoming marketable against C and the like, however, you'd expect the same thing to happen: C++ speed snobs lording it over the amateurs and their glorified scripting languages. But no, it's as if programming in C and its relatives is so painful that slipping into a warm tub of Python or C# or Java or PHP is the best thing that ever happened.

From an amateur's point of view, this situation rules. I just find it vaguely shocking that not one person has come in this thread to tell me "Suck it up. If you're going to bother, learn C++ and do it properly."
Times have changed. Hardware is blazingly faster, so things like memory footprint and execution speed matter much less. Higher level languages have evolved considerably since the halycon C++ days (although the Smalltalk and Lisp guys might disagree), both to be more useful and to progressively narrow the efficiency gap. Unit testing has caught on, alleviating one of the major drawbacks to dynamic programming languages.