Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

So You Want To Write Your Own MMORPG 35

Jari Komppa writes "After getting tired of tons of newbies starting MMORPG projects as their first programming project and calling for help on flipcode message boards, I decided to write a little rant in attempt to give these people some idea of the magnitude of the project they're starting. There seems to be hundreds of these projects out there.."
This discussion has been archived. No new comments can be posted.

So You Want To Write Your Own MMORPG

Comments Filter:
  • What's the point? (Score:4, Insightful)

    by codexus ( 538087 ) on Thursday February 21, 2002 @12:23PM (#3044998)
    Why complain about these harmless newbies. They'll learn from their mistakes and start more reasonable projects later. One has to make his own experiences. When I was younger, I too started huge projects of this kind. Now I know it's not as easy as it seems.
    • Re:What's the point? (Score:3, Interesting)

      by Rentar ( 168939 )

      Wow, a non-trolling first post ... I thought of doing such a thing myself ;-)

      I basically agree, but:

      • There might be newbies who actually had those thoughts in the back of their head, but need to see it black on white to really realize this. For them this is a good rant. They will probably join another MMORPG.
      • Those newbies who are quite serious about starting such a huge project will do it, wether they read this rant or not. They will learn it the hard way (which I don't think is all to bad, as long as the hard way doesn't include any lethal or damaging situations.)
      • Most rants primarily help the ranter. I'm sure the author feels better now, that he brought his thoughs to paper (well ...).
    • Or they'll bite off more than they can chew, get really depressed, and never get around to contributing anything to anyone. They've got to get it in their heads to start simple, otherwise they'll never achieve great things.
      • Re:What's the point? (Score:2, Informative)

        by Guru1 ( 521726 )
        Or they'll bite off more than they can chew, get really depressed, and never get around to contributing anything to anyone. They've got to get it in their heads to start simple, otherwise they'll never achieve great things.

        Like many coders, I enjoy the process of designing and writing my own code simply for the sake of making something work. I started my own MMORPG a couple years ago and it's working out well so far. No, I'm not ready to go public, and yes, there's a good chance it will never go anywhere, but that's not necessarily the point is it?

        Since starting I have learned piles of things about Java, threads, networking, different ways to cache things, etc etc.. it's a great learning experience. Just as many people first learned to program from writing basic games on their old apple IIe's, I think it's a great learning experience.

        Actually I would say that it's a better thing to practice programming than any other type of "game" that you could play around with. Online games of this sort tend to involve incredible flexability in the types of things they cover. Security for hackers trying to break your game, connection speed and threads for the hundreds of people you're planning on having connecting, memory usage for the hundreds of objects and rooms you'll have, speed since you'll want your game to not crawl, data storage since you'll have all sorts of data to store about people, areas, etc etc etc.

        I'd view this almost the same way parents view their children reading. Every coder should try to write a MMORPG at some point in time.. you could learn a lot while having fun.
    • Why rant?

      For some bizarre reason, there is a wide-ranging belief: anyone can purchase a compiler and some tech books, thus, anyone can write good software. You see evidence everyday - at least I do - in offices where the operations staff (tape monkeys) have been transferred into programming with the help of VB and a Dummies book, in state government where the only qualification for programmers is a college degree (no matter the major), in clients who INSIST that their Excel spreadsheet is the perfect medium for their corporation-wide finance package. Even worse, you see it in the software that you suffer from daily.

      To the point: Programming is easy. Designing and building useful software is HARD....DAMN HARD. Just because no governmental body is demanding that you become licensed and certified before foisting your code upon the world, doesn't mean that software development is any less an engineering feat than building a suspension bridge. Sure, anyone can drop a log over a creek and call it a bridge, just as you can pound together some QBasic routines and call it software, but don't fool yourself concerning your true level of skill.

      Software development is in its infancy, and most likely will require many lifetimes to truly reach some state of maturity. Development processes are poorly understood, architecture is almost non-existant, and we practitioners are often left groping about in the dark. For now, good software comes from people who are willing to: work hard, think hard, and fail often. Paying the piper, in this day and age, is the ONLY way good developers come into existence, and the ONLY way good software ever comes into being. Inspire the dreamer to move, not merely sit and dream.

      THAT'S why I rant.

    • > Why complain about these harmless newbies. They'll learn from their mistakes
      > and start more reasonable projects later.

      Yes and usually it's the case that the ones that should read these rants generally speaking don't do it. However, hopefully even someone reads it so the effort isn't wasted.
  • Newbies. (Score:2, Interesting)

    by n-tropy ( 98354 )
    At the very least more ppl will get into programming starting projects way over their heads. In 92 I decided i wanted to do a mud... Tackling a major rewrite of a mud was a bit much for my programming skills at the time but after reading through all the code (could tell you what a function did and where it was at the time) I ended up doing many minor improvements. I never did do even a quarter of what I intended but It gave me the push to polish my skills. After the projects die I'm sure the surviving ones will be able to canibalize the remaining ones for usefull code... all that work won't be for absolutely nothing. The best way to learn to program is to work on something your passionate on.
    • I agree, bashing your head against such code improves your coding theory and skills.

      I'd recommend a MOO for someone looking to code. Created by a coder as a coder's playground, everything is 'hackable' in a MOO. You can re-do the verb editor, how it parses input, even alter the server. You can run the same MOO core on a variety of *nix boxes, Windows, etc. It's an easy way to play around and code a bit. For more information about MOO coding, check out the Sourceforge [sourceforge.net] project for it. Most MOOs are social MOOs, and wouldn't hold much of an appeal to the same crowd that would code MMORPGs. However, quite a few MOO's are set up as full-fledged RPG's.

      If you're interested in making your own online RPG and want to learn how to code instead of facing the daunting task of a MMORPG, try starting with Ghostcore [fazigu.org]. It's an extremely well put together piece of code, and while I may not like the way the combat system's done, on your place you'll be able to pick it apart and play with it as you wish. For an example of it in use, check out GhostWheel [nexus.net]. As far as other well done RPG MOO's, check out Sindome [sindome.org] (a younger MOO, still in development) or Cybersphere [vv.com], one of the older MOO's (where I code).

      I know that text-based online gaming is a bit old fashioned and retro to the kind of people the article is talking about, but I think it's an excellent place to hone and refine your coding skills to become part of a real project later on in life. You're not responsible for artwork, animation, or other things. You're working on artificial intelligence, combat systems, translating your concepts into code, and even dealing with customer support and fixing players' problems. It's full of valuable lessons for a real career in such a thing. And no form of M* is better, from a coding point of view, than a MOO. During periods of my time where I couldn't have a programming job, due to also being a full time student or such, I've found that coding up new projects on the MOO kept my skills fresh and kept that mindset easily reachable.

      Also, if you're looking to refine your object oriented theory skills, nothing will cram it down your throat without lube like a MOO. Just as that horrible language Scheme forces you to learn how recursion works, working on a MOO will force you to think in good OOP terms.
  • This article is way too negative, and I'd hate to see people discouraged by it. What potential game makers should take from it is a warning to KISS (if you don't know what that stands for look on the first page of any programming book). I'm working on a game, and some of what this guy says is true.

    The important thing is to not be overly optimistic. The game I'm working on is a simple single player game where you are building (and at times defending) a space station. Sorta a SimCity meets Babylon 5. I don't even want to think about how long I've been working on this. Of course I am pretty slack about it, sometimes many months will pass with me not even doing anything with it. Too busy with school (a few years ago), work (now), and having a life (sometimes). Someday it will be complete and it WILL be cool.

    I am thinking of doing a MMORPG kinda game but I gotta finish the one i'm working on now. And I agree with the guy when he says that you need help for this.

    But I'm doing this for fun, and even if no one else likes this game, I will love it because I put so much hard work into it. And besides, I have learned so much about programming while working on this game (OOP, threading, UI design), which is another benefit to it. I have redesigned the programme three times and changed the library i was using twice (allegro to SDL to one I'm making that uses SDL).

    So if you are thinking of making a game, I say go for it. Start with a simple idea that's not gonna take too much time for you to actually see something on the screen or you will get programmer's block (like i have many times). Cut down your game to the bare minimum of complexity, you can always expand it later.

    You probably won't get rich off your game but you'll have fun making it, and you will improve your skills.

  • I must say that I agree. I've been working on a text-based MMORPG for the last few years. Yes, that sounds like an paradox but the idea to to make the engine robust/abstract enough so that graphical clients could be added at some point in the future without forcing a rewrite. For the moment the developers like text, prefer text, want text, etc. There's graphical clients for players and world editors with fun widgets, but the world in mostly expressed in text.

    This project was my 3rd attempt, so I knew what I was getting into. I tried to use off the shelf technology whenever possible. It was decided up front that speed and performance were not an initial goal- we can worry about optimizations later if moore's law doesn't do a preemptive stike.

    So, we've waded pretty deep into the waters of multithread scheduling & concurrency safety, Object modelling, internal scripting languages, Relational databases and persistence layers to abstract their interfaces, XML parsers and generators for client/server protocols, and all the other fun stuff that you would never imagine you need to know to write a decent engine.

    Yeah, it's taken longer than we thought it would and we're just recently at the point where we can write "the fun stuff" (ie, non-infrastructure).

    For a project that's done in spare time by a running average of 2 active people (and a dozen well-wishers) I think we've done very well. The only reason I think we made it this far is that people were willing to wear multiple hats of sysadmin, developer, webmaster, packager, and documentation maintainer. That, and
    they were willing to waste a few years working on infrastructure instead of "the cool magic system".

    I still think we'll be surprised if the system is ever playable, but at this point it's a social activity for the people involved and it's helped me land at least one good job. I've learned a lot from working on the project and don't reqret any of the time put in.

    I don't like to talk about the project too publicly (I guess this is the exception) because of the high failure rate and generally lack of respect anyone has for these sort of things, as evidenced by the article. Still, if you're realistic about what you can get out of the effort, it might be worth a shot.

    Good Luck,
    • Being a "table fan", I always try to tablize (parameterize) as much of the logic and control information as possible.

      If such was done with a role-type game engine, then most of the effort would be filling in the tables just like regular ol' biz data entry. The characters would have parameters like risk-taking level, evilness, loyalty level, and even variational ranges (tolerances) for some randomness. Perhaps GIF filenames to give characters images for different moods (fields like character_ID, mood_ID, fileName, etc.) You get the idea.

      This seperates the content creation from the programming. Some people may prefer to work on the programming (framework) part, and others may want to work on the content end by filling in tables/forms.

      Too many people like to hard-wire lots of this stuff in code. I don't get that. That is not the way to manage jillions of attributes. Code is for algorithms, not attributes IMO.
      • You're right, you definitely need to seperate the "world data" from the code. The code should ideally be world-agnostic.

        One thing you may have overlooked, however, is that the game engine is ideally suited to an OOP structure, and relational databases with flat tables are not. So you either need to write a translation layer to turn tables into objects and vice versa (this is not trivial, and it takes a long time to do), or you need to use a object database instead of a relational one. Problem is there aren't very many free object databases that are worth anything, and if you do find one chances are that it doesn't have a good API for your language of choice.

        I ran into a java-based one called bluezone a while back and it was the only thing that came close. Too bad I didn't discover it sooner :P
        • (* One thing you may have overlooked, however, is that the game engine is ideally suited to an OOP structure, and relational databases with flat tables are not. *)

          By "flat" I assume you mean non-tree. I doubt trees are the way to go. People over-use trees; they really need a set-based setup when it scales. There is no "tree-god" to force real relationships into trees. Thus, trees are usually an artificial and limiting construct. True, I don't know games that well, but in the biz domain, trees keep tripping on themselves left and right. Many OOP'ers are just too indoctrinated to see beyond trees and try to force the world into them. (Disclaimer: not all OO fans are tree-happy.)

          oop.ismad.com
  • They're everywhere (Score:2, Interesting)

    by RQuinn ( 521500 )
    I've been programming since high school and I'm currently a CompSci student. Over the years I've been a part of many scenes, and people like this are everywhere.

    I remember QBasic forums I'd read. About once a week someone would come and ask for coders and artists and soundmen for their killer RPG that's ten times better than Final Fantasy 3. Or sometimes, it would be the just slightly less annoying post of "How do I make RPGs?"

    Just a few years ago, I'd taken an interest in Half-Life coding. I never go too deeply into it, but I participated on message boards answering questions that I could. Over six month's time I got no less than 25 people contacting me asking me to be the lead programmer on their great new mod that would beat TFC or (later) CounterStrike.

    Even playing EverQuest, it got out to my guild that I was a CompSci student. Immediately someone approached me asking me to program for them since they had a great amazing idea for a game better than EQ.

    All of these people are simply people with ideas, who haven't yet realized that ideas aren't worth shit. They think that their idea is so wonderfully unique that it will carry them all the way to the top, despite the fact that they have no useful skills. Some of these people will listen, and scrap their big idea and start on something small to learn to program. Most likely though, they will realize that the game making business isn't the thing they thought it to be, and so they will give up and go back to just playing games.

    But there's always someone with an idea out there who over estimates its value. And they'll just keep coming.
  • Reminds me of the old BBS door's, man everyone and their brother was writing those things. From Pimp Wars to Pissing contest, to OO][ who. Got pretty damn crazy back then, with everyone and their brother grabbing a Pascal compiler and popping one out.

    I think the rant is unjustified. It is better to see thousands of people wanting/trying to write MMORPG's then not, cause if no one cares then your project/concept/genre is DEAD. So be happy people are into MMORPG's and have a beer or something.
  • There are plenty of people willing to help.

    As someone who knows C++ cold (with OO CASE tools,
    libraries, the guts of its object system, modeling
    languages and notations, generic programming,
    framwork and toolkit design, debugging, etc.)

    I am willing to give some guy a hand, and help
    him make a difference. But here is a catch!

    I want the final version of the design spec before
    I even move a finger. There are way too many SF
    projects that serve no other purpose but to waste
    your time (seriously, I had this "leader" stalk
    me, and IM flood me!)

    If the guy has a solid idea, I don't mind investing
    an hour a day, to co-implement his ideas.

    What sucks is, when they ask YOU for ideas. I am
    all for democratic production, but for chrissake,
    say it upfront that you have no idea.

    Some of these guys (kids?) are in it for more than
    scratching an itch. Sometimes, they just want to
    show off an IRC buddy, other times, they just want
    to get as many kudoses as "celebrity" developers.

    Whatever their drive is, I would be happy to contribute
    to their project if:
    1) they KNOW the domain of the application (yes, sometimes they want contributors to their *study* projects.)

    2)They have the design spec frozen, and
    captured in a document.

    3)They have demonstrated their seriousness, by bringing
    some code to the table (don't even think of ripping, or "extending" another similar project.)

    4) Christ, they have a great attitude. Don't ask too
    many questions about my personal life, don't demand
    that I stick to my "code submitting" schedule --turth is,
    my real life comes before the deadline of their project.

    5)they must admit other's contribution (this cheesy, distributed thingie has my name in the "submitted patch"
    category, even though I wrote half of the code,
    and made the stupid thing "distributed" in the first place -- yes, I broke it down into modules,
    and designed/implemented the inter-module messaging system.)

    oh well.

    --
  • by alphaseven ( 540122 ) on Thursday February 21, 2002 @04:48PM (#3047240)
    They're always going to be newbies trying to get in way over their heads. Here's a post [google.com] from ten years ago from some joker who's trying to program his own operating system. Now instead of operating systems newbies trying to do MMORPGs. Just ignore them and let them give up on their own.
  • Guilty! (Score:3, Interesting)

    by rufusdufus ( 450462 ) on Thursday February 21, 2002 @10:39PM (#3049043)
    I am a very experienced programmer; after retiring I decided to try my hand at a massively multiplayer game system. I got a long way too; my graphics engine smokes any of the the games out there today. My network engine is distributed and robust. Oh, its a glory to see.

    All except that its not quite finished yet, and probably never will be.

    I knew the magnitude of the problem, or thought I did. And I was right...about the programming end of it. Its a big task, but I'm a big programmer.

    But taking an engine and making a game is just plain overwhelming. The content for a decent game is a lot of work, mostly artistic. Polishing all the edges takes time, what I thought would take two years, I now estimate at about ten (1.5 years into it).

    My suggestion: don't go there unless you have a big team behind you. Ever notice how big the credits pages are for games? Take heed!
  • I must mad as anything then to start this project.

    MMORPGDK [gnu.org]

    Trying to provide the server systems that handle all the objects, the user accounts, the messaging, the scripting system and then provide the client(s) to the game server system and last of all also provide gui tools for just about anybody to create their own game objects, their quests, their own skill/attribute system and install and run the thing must be real mad now that I think of it. The goal is such that anybody should be able to use it, import their content or create their content and get their game running. Your opinions please.
  • by Anonymous Coward
    I hate to say but that's a typical finnish approach and should be ingored
  • I'd like to adress this message to all newbies and programmers who embarked on tasks that are laughed at by others:

    So what if there would be thousands of projects like that? What harm is there?
    Every day people start out to create new projects, not just RPG ones but anything. There's no estimating the number of hobbyist projects, let's just say there is an entire 'ocean' of software out there. Does the author of this article imply it is harmful to have this kind of diversity?
    Every programmer starts out as a newbie. It's just that some day you decide to improve your IT skills beyond those of a mere user. This is a change of mindset where you have the desire to CREATE something instead of just USING stuff that other people cooked for you. Being a newbie isn't a bad thing per se, so we should stop looking down upon and discouraging newbies from doing stuff that they like to do.
    I've been working as a developer for almost 10 years now and I feel a bit like a newbie every day because every day there is something new to be learned.
    Few software projects encourage as much fantasy and creativity as roleplaying games - maybe because your goal is to literally create an entire world of your own, you can have anything you like! I would argue that most people who do this don't want to create the next everquest or anything (well, there's always hope of course) they just want to do something cool that is fun for them. A simple truth in software development is that a majority of all projects (be it commercial or hobbyist) don't ever get finished. That's not a big deal, because maybe by the time the project finally dies the (level 0) newbie who created it turned into a (level 1) Developer.

    Experience is what makes us better programmers. Experience can only be acquired by learning. Learning can only be done while being motivated. The kind of motivation you get by creating something of your own is immense. Don't ever let nay-sayers discourage you from creating things!
  • Getting in over your head that is.. Because you'll eventually have a conversation like this:

    Me: You needed to see me?

    PHB: Yes, sit down. We need something to compete with Microsoft Windows. Sales has decided that they need this to break into markets that have thus far been out of our reach.

    Me: *blank stare*

    PHB: We need a demo in time for the Lala Expo and we need to be able to ship 2 weeks later. The Expo is in August so that gives us almost 6 months. One customer is really interested in getting this in late July though, so if we can meet that deadline, there will be a $5,000 bonus.

    Me: *blank stare*

    PHB: Great! I'll schedule daily progress meetings with myself, you, sales, and marketing.

    DISCLAIMER: If my boss reads this I'm just kidding..

    Seriously though, I'm starting the framework for what could be a MMORPG, but I've been taking on things like that for almost 18 years now -- never completing a vast, vast majority of them! But you know, I had fun, learned a ton, and I'm very employable now, regardless of never really having a finished product (of course, I don't work in the game industry). Basically, if you will learn something and it's enjoyable to you, go for it, because hands-on experience (good or bad) is the only thing that really makes you a better programmer.

As far as the laws of mathematics refer to reality, they are not certain, and as far as they are certain, they do not refer to reality. -- Albert Einstein

Working...