Technical details for a MMOG in perl
madmongers.org
madmongers.org
Kudos!
Interesting that the whole server side is built on a JSON-RPC API. That enables writing completely new clients later on.
They showed 2 classes in total, which look "normally" and the stack they're using. Does using cool modules count as "Modern Perl"? Their stack looks well understood / well designed, but that's it. They use a lot of new technologies, but there is nothing that makes me go "wow".
It's also ironic how they praise pngout (p. 57) for reducing image sizes, but publish 42MB presentation...
Not to criticise the project as a whole though - I love the idea of a client-independent server side and multiple interfaces for real time multiplayer. I was obsessed with that idea for a while and trying to do something similar one day - I'm amazed how they actually pulled it of. Great work there! Good organisation too with completing the web page in time for launch before everything else was completed - good first impressions...
It is a bit debated. See e.g. http://perlgeek.de/blog-en/perl-tips/what-is-modern-perl.htm...
Also, at the risk of sounding ironic I must ask -- you are really not aware of a web service called "Google" and its (many) competitors? Try e.g. this when you see unknown terms:
http://www.google.com/search?&q=modern+perl
>>ironic how they praise pngout [...] publish 42MB presentation...
Ah, yes. Publishing a big pdf from a presentation do take away all points in the pdf about image sizes sent from a web server. [Edit: For the sleep/caffeine deprived: This was irony.]
Edit: OK viraptor, sorry for being sensitive.
Edit: After reading, what I miss is more discussion about how the game logic was implemented; for fun I've done 2/3 of a couple of board games' logic which literally was hundreds of pages each (which I should finish, sigh).
Re. size. I didn't say it takes away all the points. Simply, it's a funny thing. Just like telephony engineers getting dropped calls, abstract mathematicians making trivial addition mistakes, etc. They lower the size to make the experience better during the game, but at the same time make a huge presentation. That's all.
What this means, is Perl becomes a proper MVC styled language like 'Ruby' or with its frameworks like 'Ruby on Rails.'
It matters because for years people complain about the scalability of perl when it comes to large projects due to it's 'hack syntax' nature.
With modern Perl, code is usually clean free of crazy syntax with a OO architecture where the base classes do most of the work (such as auto authentication, auto encoding/decoding, auto DB joins, etc.) and you do business/game logic in the upper modules.
I'd imagine that it's somewhat slow though. I assume it keeps the connection open, but if it doesn't the JSON encoding/decoding can also be a penalty.
Same with using MySQL, you have to use a network socket, and possibly disk bound depending on how MySQL is set up.
In any case, using the JSON-RPC style is very clean and fast to develop, and I use it for my MVC web projects. PERL rocks!