My wife and I have run a MUSH for several years, and are now developing an indie, low-budget MMORPG. We are using open source libraries whenever possible - Panda3D and Twisted Network primarily - but for the actual world engine and game logic are working from scratch. We looked at various available engines, including Torque, but for the features we intend to put in decided that scratch-building was the way to go.
Hi Drew, thanks for the post!
So are you using C/C++ for your world engine then? What I was planning on doing is just using Python for everything, game logic, server logic, net code etc… Of course, once all this is done I will probably need to see if there are any bottlenecks but I doubt it will be necessary for what I’m doing.
Steve
We are hoping to avoid having to write any of our own code in C++, although we are prepared to do so if needed. The current plan is to have all of the actual game logic and world engine written in Python. I’ll be able to let you know how well that worked out in 2-3 years, if everything goes well.
Sounds like a good project!
Steve
i thought we could use a little summary at this point:
(M)MORPG’s and panda3d, what we all brought together so far…
client:
panda is usable for most of the stuff you would expect from a client but lacks documentation when it comes to network. using another network library like twisted will allow to code your client completly in python (if nothing unexpected happens).
if you dont want to write on the engine itself you cant use these multitextured terrains build from highmaps on average-class hardware. so either make everything completly custom made or use pre-made level parts to build up the world. both are nice solutions as long as you dont plan a world with the size of a real-life country.(so its propably ok for 99,999% of all cases)
a clientsided collision detection for the own character, combined with a serversided validation of the position should do a nice job and allow lag-less game experience with some protection against fly/speed-hacks.
panda’s smooth mover could help to smooth other player’s movment.
grafic in combat could go clientsided while actual hitpoints are calculated on the server only.
simple and solid solutions seems to be possible for most problems a client would encounter.
server:
need to do all npc collision detection and the validatoins checks of the player positions. aswell as cheking of which player positions should be send to which client. (based on the distance between players). at least the later 2 tasks should be programmed in c++ if there are a lot of players.
depending on the player count it could be usefull to programm stuff like combat system in c++,too.
everthing else could go in python,too.óf course you need a extra network libary like on the clientside,too.
game content can be created with opensource tools available for lots of different platforms. Blender and Gimp offer almost everything you need (beside a texteditor of course) so no problems on this end either.
fazit so far: (M)MORPG’s are possible with a minimum of c++ coding.
@harry… i uploaded a very early version of my test-model. it’s lacking animations and propper cloth/hair/textures. if you are further intrested in the modell i’ll create the missing stuff… here’s the link http://home.arcor.de/positiveelectron/files/char001-rev01.zip
all made with blender/gimp … i just edited 2 lines of the egg files due to some export errors.
have to hurry… coffee&cake’s waiting for me… seeya l8ta guys
Researching Python for use in online games further, I discovered this:
Ultima Online 2 (now cancelled unfortunately though).
I had no idea they were using Python. It’s a good read in my opinion.
Steve
Sorry for the delay in my reply, I have been terribly busy with work. Anyhow, ThomasEgi - thanks for the excellent post, it sums up everything nicely, it is a great reference for anybody. About using C++ in place of Python for some tasks - it might help, even though I strongly doubt we could encounter a real bottleneck because we are using Python instead than C++, unless one is a true C++ guru. Python means faster development, and faster development means you have more time to optimize your code.
Thanks for the game model, it looks cute! Let me play a bit with it
Sm3 - thanks for the detailed info about Torque. The branching developments are more interesting to me than the engine itself; even if one were not to use the MMO kit, it could be a good starting point to develop your own code. About the database, I like SQLLite, mostly because it requires zero database management, even though MySql is much faster (according to my web development experience) when it comes to reading data from the database. Sadly, you cannot distribute MySql with commercial projects, but I am not sure if it’s ok to use it server-side even if you don’t buy a license. In any case, I’d suggest to use a straightforward abstraction layer for the database, so you can switch database and see which one works best for your games.
you’r welcome. if you need a ready rigged blend file drop me a note. (though only the body itself is rigged, not the cloth but they are can be remade quite fast =) )
Hi Harry, my original plan was to use just only SQLite. The theory is you’d host a game on your local PC and your friends can connect and play with you. SQLite would work fine in that scenario I believe.
Since then, I’ve decided to use both SQLite and PostgreSQL. I’ll use SQLite for client-side non-authoritative information and anything authoritative I’d use on the server-side with PostgreSQL.
I’ll also use the Python DB API Version 2.0 which will handle the abstraction. As long as you use a DB API compliant database, you can switch out easily. Just like using JDBC I guess.
I think a lot of people mistakenly think they can use MySQL for free when really they aren’t supposed to.
Torque is ok, however, I’ve recently become a little disenchanted with it. One thing that is really bugging me is that the player characters will not conform to the terrain but float above it. I guess it’s because Torque uses bounding boxes for collision. This is something I can do in Panda3d very easily so I figured an engine I paid money for could work just the same. I guess I was mistaken.
The more I use Panda3d, the more I realize it is very flexible and really has a lot of features that are in game engines costing hundreds or thousands of dollars.
Steve