• 0

Who wants to help make a game?


Question

Ok folks, I'm working on a game.

I'm dead serious about this.

It's going to be a new MMOG, but unlike Evercrack or Ultima Offline it will be 100% dynamic (using technology based loosely on MUDs and MOOs). No more stagnant economy, or level dichotomy. No more waiting 6 months for new areas to open up. No more paying for a new expansion once a year.

I need a team of dedicated (and slightly insane) individuals.

I need programmers, artists, level designers, game designers, and of course testers (alpha testers for now, there will be an open beta later of course!) of all varieties.

This is an exciting possibility. Am I crazy? Entirely possible. But at the very least we're gonna give this thing our best shot.

Imagine a game universe where things change continually. New construction happens on a regular basis - daily or weekly new areas will open up.

Imagine having ALL the game players online whenever they want to be. No more "pick a server near you".

Imagine being able to make permanent changes to the game world. You set off a bomb, it blows up a building... the building stays blown up until someone fixes it.

Current direction of the game:

- One persistent universe. Yes, there will be multiple servers. But everyone is on all at once. The servers will represent different virtual aspects of the game world. Some servers will run NPC's exclusively, some will run geography (dungeons, etc.), some will provide other functionality.

- Graphics will be reminiscent of Baldur's Gate or DiZablo. 2D sprites with a 3D top-down isometric style.

- Game style is likely to be traditional swords-n-sorcery, although we might move it towards a more Final Fantasy-esque "steam powered" world. Not 100% sure yet, of course.

- Development language is pure Java. Not crapplet Java but real 100% honest-to-god-this-is-a-kickass-language Java.

Additional questions or comments? Direct 'em my way.

gurm42@Hotmail.com (mail and MSN messenger)

gurm42 (AIM and Yahoo messenger)

453460 (ICQ)

- Gurm

Link to comment
Share on other sites

Recommended Posts

  • 0

He wants to add new kinds of items and objects on the fly (ie. while the game is running). While this can be done in C++, it usually requires some form of scripting language; most of which are very slow. Using Java is much easier because it can be used as the main language and the scripting language (less hassles). Understand?

Personally, I prefer C#. But's that just me :p

Link to comment
Share on other sites

  • 0

Gumboot,

I have a C# reference, but I have only skimmed it. Can dynamic class loading and unloading be done in C# as well? If so, I'd consider it, mainly because it will run substantially faster than Java.

- Gurm

Link to comment
Share on other sites

  • 0
Originally posted by Gurm

To those of you suggesting C++ with inline ASM, I do appreciate your input. Honestly...

However, as I said before it CAN'T BE DONE in C++. Not without reinventing the wheel. If you follow MUD history at all, it's like LPMud vs. MOO technology. LPMUD was a C-based interpreter for a "mudlib" which was written in LPC, an object-oriented extension of C. Sadly, the LPC code needed to be interpreted at runtime, which made it even slower than Java.

While this certainly CAN be done differently, the basic idea is to make the entire game one big codebase. Rooms, monsters, weapons, players - are all objects, descended from a basic game object. Where the objects live... Java doesn't care. Want to update an object? Sure... change the code, and tell the program "hey, reload CLASS X" and bingo - it's changed.

- Gurm

I see what you mean. But to load up those kind of things instead of streaming packets in will take insanely long.

Link to comment
Share on other sites

  • 0
Can dynamic class loading and unloading be done in C# as well?
Yes it can. For example, Terrarium is a P2P app which moves creatures (implemented entirely in code) from computer to computer. It then dynamically loads and runs them in a protected manner.

As to class unloading, I haven't the faintest :knocked:

Link to comment
Share on other sites

  • 0

for those of you yelling about using C++, I see nothing wrong with using Java. I know enough java and have seen enough demos that graphics like he's describing (isometric 2d) are MORE than possible and will run MORE than fast enough. This isn't 3d, so you don't need a lot of horsepower. Plus, the whole concept needs Dynamic Loading and Unloading and such.

I'd be willing to help with development in Java and perhaps C#. I've skimmed a lot of my C# book and probably will go more in depth this summer.

timdorr&timdorr,com if you want to reach me (de-mudge the address though...)

Link to comment
Share on other sites

  • 0

ooh...i know a bit of C# too...mostly console application stuff...and the very basics of windows applications...

...isn't THAT hard to learn, most of the functions are inbuilt ;)

Link to comment
Share on other sites

  • 0

I must say, this is a really cool idea.

I have often thought of making a game in the same vein as the one you are proposing, but after several false starts I came to the conclusion that the enormity of the task was just too much for me to handle alone. (I recall coding a great 3D model viewer in DirectX then getting really depressed when I (re)discovered the fact that I'm a hopeless artist, and couldn't draw good textures if my life depended on it :)).

As to whether I can help, well that depends... if you decide to go for C# then I will help, but if you go for Java then I probably won't - if only because I just got Visual C#.NET and I'd hate to go back to Textpad. ;) I do believe that .NET will replace Win32 as the client-side platform of choice for the majority of developers world-wide; .NET has lots of MS developer talent behind it, great developer resources at MSDN and easy migration from Win32.

Either way, good luck to you Gurm (you'll sure need it).

Link to comment
Share on other sites

  • 0

I will have to confer with all the people involved at this point... we will have to reach a group consensus about platform. The server side code may very well still be done in Java, but for the client side - well, if object pushing turns out to be too ugly (and it very well might) then the client is open to whatever we want to use. VC++, C#.NET, whatever!

- Gurm

Link to comment
Share on other sites

  • 0

I don't think that you've a clue what you're talking about.

A simple MUD is a text based thing which doesn't need much to synchronize the actions going on in that MUD world, hell it even runs on one server. Also it's not designed to be able to run over 20000 people simulateously at a time. Also I never heard of such one.

A 3D MMORPG is a different thing. You need to store/transmit 3D position information, clothing info, inventory info, banking info, bulletinboard info, continuos movement info and the list goes on. In case of SWG there comes additional info about the look of housing, position of housing, interiors of housing etc. And last but not least, due the amount of power needed to manage a 3D MMORPG and it's average online user count, it needs a large server farm to run it, so you need sophisticated proprietary clustering and cell switching functions. A MUD just needs one server since there's almost nothing to manage and synchronize compared to the 3D version.

You underestimate the whole thing.

Verant did UO, so they know what they're doing. And if they need over 2 years and don't even have a beta, it got a damn good reason. Also they got programmers with knowledge, which is something you won't find on the Internet.

Also I don't see what it has to do with programming languages. And if you truly plan to write the serversoftware in Java, you show that you don't have a clue. A server needs to be fast, not multiplatform capable.

--edit--

Correction:

Verant did EQ and got lots of the devs of UO also in the team.

Link to comment
Share on other sites

  • 0
I don't think that you've a clue what you're talking about.
And I think I do. I've worked as a game programmer before, I've written my own MUD before, and I've got a CS degree.
A simple MUD is a text based thing which doesn't need much to synchronize the actions going on in that MUD world, hell it even runs on one server. Also it's not designed to be able to run over 20000 people simulateously at a time. Also I never heard of such one.

You never heard of it so it doesn't exist? *sigh*

A MUD scales nicely to over a thousand users on a PC. Not a server farm, but a P3-500. And it's doing a LOT of extra work. Walking function trees EVERY time someone types something. No intelligence at all. It could EASILY scale to many thousands on a high-end workstation if you simply optimized it to not go pinging every single person every time someone did a "who's on?" command.

A 3D MMORPG is a different thing. You need to store/transmit 3D position information, clothing info, inventory info, banking info, bulletinboard info, continuos movement info and the list goes on. In case of SWG there comes additional info about the look of housing, position of housing, interiors of housing etc. And last but not least, due the amount of power needed to manage a 3D MMORPG and it's average online user count, it needs a large server farm to run it, so you need sophisticated proprietary clustering and cell switching functions. A MUD just needs one server since there's almost nothing to manage and synchronize compared to the 3D version.
I'm well aware of how a 3D MMORPG works. I also know that they suck. And if you honestly think that all that information you just mentioned is tossed around all the time, you're sadly deluded. Sure, it's all available and synched up on all the servers. However, the only information that goes down to each user is what is in their field of view and information that concerns their immediate environment. That's it. If what you were saying were true, there wouldn't exist technology today to run it all. Obviously they're using lots of nifty little tricks.
You underestimate the whole thing.

Nope. I fully understand how massive this is. That's why I've been working on the theories since college. As I said above, I've built and run MUDs before. I've been a wizard on successful MUDs that logged a thousand people continuously before. If you seriously think I haven't thought about all of this, you're nuts. And I'm not trying to compete with Evercrack. There are lots of people who want spiffy 3D games. I want a game with a little more depth, and am willing to play with 2D sprites in 3D isometric format to get it.

Verant did UO, so they know what they're doing. And if they need over 2 years and don't even have a beta, it got a damn good reason. Also they got programmers with knowledge, which is something you won't find on the Internet.
I won't find programmers with knowledge on the Internet? Are you high on crack? Why is it that all the best utilities come from the Internet? The trickiest code? The best graphical demos? The minute a game comes out someone has cracked it. That person is a kickass programmer who just never got a job doing it.

I am CONTINUALLY amazed by the raw talent available on the Internet. Artists - hell, EVERYONE who visits quasi-legal boards such as what Neowin used to be, or what Mitosis or the like are now has 3D studio and Photoshop, knows how to use them, and has spiffy .sig graphics.

As for Verant having good programmers... well, that's debatable. I could make a list of the things that suck about Evercrack, but I won't - we've all seen it and we all know. But that's just counterproductive.

Also I don't see what it has to do with programming languages.

The fact that you DON'T see what it has to do with programming languages indicates that YOU are the one that doesn't understand what you're talking about. I'll try to explain - and I'll make sure to use small words so that you'll understand (shameless rip of The Princess Bride acknowledged):

Programming languages all look different on the inside. When I say "on the inside", I mean the way they actually represent data and code in the computer. Visual Basic looks a lot like English, but that has NOTHING to do with how it actually stores code, now does it? Java looks a lot like C++, but if you understood anything about programming language theory you would know that it shares more in common with theoretical scientific languages like

LISP and Scheme and Prolog than it does with C or C++.

One of the necessary things that has to happen in this game is that you have to be able to change things while the game is running. Why? Because otherwise people get bored. Maybe not your average player, but there is always SOMEONE at level 18 (or whatever you decide the top level is) that is bored, has beaten every monster in the game, explored every area, and wants something else to do. And if you don't provide it for them they will stop playing. And you can't just shut the game down while you make changes... well, actually you CAN. That's what Verant does. And it ****es Evercrackheads off BIG TIME.

Now, if you want to make a dynamic world, how do you go about doing that? Sure, you could hard code all the rules, and make everything into big ol' data files that describe housing, clothes, people, monsters, etc. A friend of mine wrote a kickass system to do that as his senior project (which went side by side with mine which was a precursor to the game I'm working on now). But you know what the problem is? If you want to change anything non-superficial, you STILL have to shut the game down. Let's say you discover that someone has developed an exploit. You either let them get away with it until the next scheduled shutdown, or you shutdown early. Either way, you **** more people off. However, if the game can be modified while it's running, you don't have to shut it off. Just make the fix, hit "update", and let the change propagate across the servers.

Now, I don't think you program at all. If you did, you wouldn't be starting this asinine argument with me. So I won't get TOO deep in this next little bit. But suffice it to say that if I have a class called "weapon", that all weapons are a subclass of, and I want to change something about weapons... maybe add a new type of magic that can be associated with them (although I probably wouldn't do that QUITE that way, but this is just an example after all), it is VERY easy to do that if you can dynamically modify classes. Just make the change, update the class, and the next time that everyone's weapons refresh they'll have the new property.

And if adding to the universe is as simple as writing some new code, you get an entire class of people who are interested in enhancing the game. Whether they're players that are seeking a better play experience, or just control freaks who want to learn how to code... the eventual goal of becoming a wizard (the mud term for an admin) has kept many a player playing and honing their skills and understanding of the game.

And eventually you build up a persistent universe with some history to it. You have entire old codebases to fall back on.

Oh, why am I bothering? Is it possible you really don't understand any of this? Yeah, probably.

And if you truly plan to write the serversoftware in Java, you show that you don't have a clue. A server needs to be fast, not multiplatform capable.

You are the one without a clue. The server isn't what needs to be multiplatform capable. The client is. The server needs to be in Java for a TOTALLY different reason... which I hope to have explained above.

- Gurm

Link to comment
Share on other sites

  • 0

LMAO :D Sorry that was uncalled for...

Very well said Gurm, and very correct. While I am not a fan of Java and know very little about programming in it, I am a programmer and a systems admin, so I can definately validate what you are saying. Java is not the "best" language in my mind, but it has its place, and it is probably more than adept at handling the task that this project entails and demands.

I would also like to say that making the server multiplatform has advantages in and of itself, beyond the ability to do dynamic updates.

And to Tom Servo, why criticize the project and the intended development tools/goals at all? Does it further the thread any or contribute to it? No, it simply lets you run your mouth (or in this case your fingers) about something that need not have been said to begin with. Gurm is trying to get people together to develop a game in a particular fashion, what is wrong with that?

In addition you really show your ignorance in stating that no developers/programmers found on the Internet are any good. What is that? Do you not think that all the developers are companies use the Internet and involve themselves in side projects such as this? I for one do, and I have developed three applications the company I work for (commercial applications for the wastewater treatment industry if you're interested). What about all the Open Source developers? A large majority of them work for other companies. If you want I can also point you to a large number of sites run by individual developers who offer some excellent applications. AnalogX would be one such site.

Back to you Gurm, glad to see you are as dedicated to this project as it looks, and I am looking forward to helping out with the project in any way I can.

Link to comment
Share on other sites

  • 0
But suffice it to say that if I have a class called "weapon", that all weapons are a subclass of, and I want to change something about weapons... maybe add a new type of magic that can be associated with them (although I probably wouldn't do that QUITE that way, but this is just an example after all), it is VERY easy to do that if you can dynamically modify classes. Just make the change, update the class, and the next time that everyone's weapons refresh they'll have the new property.

Is changing classes a good way to do things? For example, changing base classes can be pretty painful in terms of backwards compatibility. You'd have to make sure all derived stuff works as intended. And if you change something as broad-based as "weapons", that would require A LOT of testing if there were a lot of different weapons derived from it.

Wouldn't it be better to create new classes instead of changing old ones? A new base class "weapons_v2" can easily add more functionality as well as encapsulate the old functionality of "weapons".

If you do this, code for old weapons wouldn't need to be changed to access the new weapon class; and new weapons wouldn't need to access the old stuff because the new version encapsulates the old. This should save a lot of time on testing and backwards compatibility.

Link to comment
Share on other sites

  • 0

If you play on the Linux kernel, check how much people work on it and how large the net is.

And anyway, I told my point, you do not seem to have a grasp about all that. Esp regarding the size of the project. If you think you could create such a project with a few internet junkies in the same time like a company that works at least 8 hours a day hardcore for years on a project, then you need a brainwash or at least you should visit them for 2 weeks and see their work.

Also the use of C or C++ doesn't mean anything hardcoded at all. I wrote once a modular application environment which is similar to COM, just simpler. I can load and unload modules on runtime on that. Data structures are stored on a seperate heap, so I can safely unload a module and load an updated version which continues to work on that data on a heap. Every module announces his functions and version information to the management code, which hands the entrypoints to the other modules who request it. Also every module has to implement a callback which gets called on module (un)loads. Add a few mutexes to it and your set. My rudimentary audioplayer which I wrote to test it consisted out of a simple GUI, a simple output module and a simple MP3 decoder. I could reload the MP3 module on the fly without having it pause for a min (well, due to the buffer in the output module), also could I reload the output module on the fly (which did a pause tho), also it worked for the GUI. And there was almost no overhead. Worked flawlessly. So I told you a way for not using Java.

--edit--

And oh, why I'm critizising this instead of giving positive input: Many people underestimate what they see and think they can copy it easily. Even if you critizise them like I do right now, they won't listen. And afterwards they fail. I took part on a couple of Internet projects (which were mainly related to CGI, but were almost same scale). They never work out. You should even wonder if it lasts for more than 1.5 months.

Also since it's a freelancer project, it will break up due to the different opinions. Since there is no real boss, there will just be friction.

Link to comment
Share on other sites

  • 0

Oogle,

No, actually it's a terrible way to do things. I was just making an example. You're right, it'd be a nightmare of dependence. ;) Now if we were sure that weapon_v2 worked, then next time everything refreshed you could merge it in...

Tom Servo seems to think that not only are we all terrible programmers, but that his lacking language skills might make us fearful.

The fact that you found a way to force modular loading and unloading in C++ is beside the point. You can't count on that always working, now can you? Especially on a large scale. You can't always just pull a new class into memory, set up pointers to it, and hand it off to other code. Or rather you can, but only if the system allows it. Sooner or later you'll run into a system strict enough that it won't allow that.

Add to that the fact that the language isn't intended to do that in the first place and you have something of a recipe for disaster.

- Gurm

Link to comment
Share on other sites

  • 0

Calm down people, it's only a game... :D

Tom Servo:

Your main objection seems to be that this project is too large; maybe it is, likely this project will go nowhere. But there's a possibility that this could turn into something big - would you ruin it for everyone?

Attempts to build a fusion reactor have failed in the past; does that mean no more attempts should be made?

I think Gurm truly does realize the magnitude of the task (after all, in his first post he asks: Am I crazy? :D), and if he doesn't, well it's a good learning exercise... :p

Your other objections aren't really valid. Choice of language and platform is important - but nowhere near as important as a good team. Platform and language deficiencies can be overcome (as you demonstrate by doing dynamic class loading in C++). And this project already has a leader: Gurm, by virtue of being the driving force.

Link to comment
Share on other sites

  • 0
Originally posted by Gumboot

Yes it can. For example, Terrarium is a P2P app which moves creatures (implemented entirely in code) from computer to computer. It then dynamically loads and runs them in a protected manner.

As to class unloading, I haven't the faintest :knocked:

This brings up an interesting point. If .NET were to be able to handle the dynamic loading/unloading necessary for this project, adopting the .NET platform would greatly expand your programmer base!

Just think about all of the different langues available for .NET. J# (a Java like language), C#, C++, Visual Basic, Fortran, Cobol, Pascal, PERL, Python, and the list goes on (partial list compiled from asp.net). Limiting yourself to one language such as Java limits the number of creative minds that might be willing to pitch in on this effort.

Further, it looks like we are moving towards having working implmentations of the .NET framework on multiple platforms. Before this game is completed .NET is likely to be running on Linux (see: project mono), and perhaps even BSD (see: The Microsoft Shared Source CLI Implementation and OSX (I'm assuming by targeting BSD Microsoft is also targeting OSX... although this is my own wild guess :ponder: ). So, conceivbly (in my ideal dream world) a .NET application could run on any of the three major consumer platforms (Windows, Linux, and Macintosh).

One other idea. Since this game shouldn't terribly resource intensive. Could you make use of the client's spare resource in a P2P fashion? My inexperianced guess is this could potentially take some of the strain off of the central servers. Especially if you expect your most hard core players to leave the game running in the background when they go to get a bite to eat.

Just some thoughts to kick around. I am not sure if there is much I could contribute to a project such as this... I haven't even ever played a MPOG or MUD game, although I have a vague idea of what they are (I think :cheeky: ).

Anyway, good luck in your quest! This sounds like a very nobel project... and I wish you well.

Link to comment
Share on other sites

  • 0

I never said anyone is lacking of programming skills here. You'Re just a lil' overzealous and underestimating it IMO.

And you can make a class loading system in C++ scalable. And it will work w/o problems if you follow some simple rules during the implementation of the classes.

BeeJay: Loading an assembly on runtime in .NET is a pain in the ass. And I truly learned to hate System.Reflection. I have an abstraction class for that on my schedule somewhere, to ease the creation of a plugin system in .NET. I dunno when I will start with it. If it's API looks clean I might post the DLL.

Link to comment
Share on other sites

  • 0

Tom Servo,

Thanks for toning down the cynicism a touch. ;)

I'd love to hear more details about your class loader, if you feel it is both clean and scalable.

J

Link to comment
Share on other sites

  • 0

I'd be curious to see a dynamic class loader in C++. I thought a program would have to know the size of the class at compile time. Wouldn't the class have to remain the same size? You can't even add private members without breaking the client. If you use interfaces, you still couldn't change anything, like adding new properties, without updating the client as well. It seems to me that reflection, as I understand it, is the only way to really get a flexible solution.

BTW, I'm not critiquing. I'm just making sure I'm on the same page. I really would be interested in seeing a dynamic class loader.

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.