New to JME, looking for a basic MMO starting point

Hello,



I’m a huge MMOG fan, since before my first “real” MMO, EverQuest, back in the days of Yserbius, TSN and The Realm. Anyway, for years now I’ve had ideas for systems that I think would make MMOGs more immersive and fun, and I’ve always wanted to try them out. I haven’t found any good MMO emulators with code. I came across JME about a year ago, and recently got the bug again.



I don’t think most of what I’m thinking of is huge. Things like adaptive faction systems, dynamic questing, etc… Yeah, terrain modification and weather systems and other things are interesting and I’ve written down notes for those, too. To start out with however, I just want a basic 3D “world” in which I can assign behaviors to NPCs and interact with them as a PC. It doesn’t have to be massive, or multiplayer (though that would help) to start with. One small “zone” a little larger than the JME3 test apps is fine, and the ability to pop in NPCs. Just a framework so I don’t have to start from scratch. I know this type of system isn’t trivial.



I can’t spend the entire work day doing this; I have to do some dev (Java) for my normal job at some point, so I’m wondering if anyone knows of sample code or open projects or docs that I could use to start from? :slight_smile: I’m just wondering if there is anything more complete for this purpose than the test apps. Any pointers/help/interest would be cool.



Thanks!

There most likely isn’t a framework for what you’re looking for, yet. There is however, quite alot of things both in the wiki and on the forums.

If you break up what you need into bullet points i’m sure people will fill you in on where to find things, or give you hints on how to solve them.

Examples? Yes, there are some.


  • @Momoko_Fan's "simple" Java 2D MMO. This is an example of what can be accomplished in relatively short time by a single, fairly experienced (3-4 years) Java developer."

  • Planeshift, an open source MMO. Check out its source code to get an idea of the kind of scope you are working with.

  • Ryzom, another open source MMO.



No matter how you put it, MMO(RPG) projects are as complex as it gets, there's no way around that. Especially in terms of your average "similar to X game but with more/other features" concept. But go ahead, give it a try and have a great learning experience. Let me just suggest this one thing: Log your work. Blog your progress, make random post-its (preferably in digital format though), post progress shots with descriptions, make many prototype videos; whatever kind of "logging" you're comfortable with. Then, should development take a turn for the worse and there's no end in sight, you can cut your losses and still have a good deal of progress to look and refer back to.

This comes in handy for your own "reflective learning" and for giving other projects an idea of your experience.

Good luck.

The way I would look at it would be to break down what you want.

What type of game is it?

what will be required for development?



For example, perhaps you could build a little chat system and begin learning networking.

Then maybe program some test GUI for your game.

Then perhaps make a simple account system to get a website and game hooked into one.



Of course, there are a million ways to approach it. It all depends on what you feel like doing/learning at the time :slight_smile:



Good luck!

:slight_smile: MMO genre can be a lot of fun with friends / acquaintances, I wish you good luck in your venture. Although jME can probably handle a lot of the features of such a game. There is also a ton of work to be considered on the design front as-well.

Hi,



As a person who develops an mmo, I give you an advice: do not start it alone. Get others to help you or join another project. My mmo plans seem to be similar to yours so contact me if you’re interested, I’d be happy to talk about my project - although my code is not open-source.



Gaba

Well as another person with a mmo I give you a oposite opinion



While you are alone you can first build up your skill to a level decent enough to understand at least how complex the problem is.



As soon as you have other people you need to spend much time with sharing Ideas, and make compromises, don’t get me wrng here working in a team can help greatly, but first you should know what you are doing before you involve others.

As you are probably responsible for managing the team then you need to understand at least the basics of network, standart algorithms, asset creation, and shaders , because else you are unable to realistically weight if a certain feature worth the price to develop.



I also suggest to start working with a smaller game for the beginnen, a singleplayer game like a small towerdefence tetris3d ect will do fine for this.

I made the mistake of not doing this and had to restart 2 times from scratch again, because I realized that the design for my project was just not good enough. (sideeffects, hard to follow code, bad networking Entity concept) Even though I learned much that way, I had no visible process, wich can be really demotivating.



So no matter wich way you go, if you are not already expirienced with game developing you will probably spend 1-2 years with basics untill you have a good working framework for your needs, but you will learn a lot not only about jm3 but about game design in general.

MMO development tools are basically non-existent in the Open Source world. Especially compared commercial MMO engines. Even with the commercial ones, building a world of any decent size is a big project for a team.



With that said, I have the same goals of eventually building an MMO. Actually, I intend to develop the tools to make building an MMO as simple for the Open Source community as building a MUD, assuming that Open licensed art becomes more available in the coming years. Now, if you’ve ever worked with the text based MUDs, they are still an extensive project to build. But every good MMO has a certain set of requirements:



  • You have to have a big, expansive, zoneless terrain these days. See my thread in the TerraMonkey forum entitiled Low-memory modifications for TerraMonkey. It's designed to use low memory per patch, and expanding patches as you get farther away from the camera, to render a much larger world. I'm running an 8000 km^2 world, able to see the whole thing at once, in a pre-alpha test. Vegetation is another huge problem. There are millions of trees and bushes in most MMOs. You can't store even the locations of every tree, bush, and blade of grass. I'll be experimenting with using noise functions to create density maps. In fact, the current invocation of the terrain system seeks to build the whole world from noise functions. I'll add in artistic overrides later, though.

  • You need a good interior system (caves, buildings) that can interface with the terrain, without loading. It's basically a scene within a scene, that's only loaded when you enter the building or cave. This will have to be integrated into my Terrain engine somehow, but I'm not quite there yet.

  • LOD takes on a whole new meaning when you can at see 1000+ km in each direction. You can't store every static object in the scene due to memory constraints. Maybe you can store references to assets, and treat the scene graph as a hierarchical bounding volume. As you enter the bounding box of a scene, that scene is loaded, which may contain references to other scenes in smaller areas, and so on. Very large objects like skyscrapers would show up in higher scenes, while small objects like lamp posts and fire hydrants would show up in lower scenes.

  • You need a system of generating customizable characters. Interchangeable clothing. Tintable clothing. In specific, you need a way to either swap entire models or parts and pieces of models, and everything still fit together, and it not kill the graphics card when you have 400 of these on screen. I'm not sure if there is any system for this yet.

  • You need an efficient server. I'm not sure how well tuned SpiderMonkey is for MMO style traffic.

  • You need a powerful GUI system. jMonkeyEngine has one, though I still haven't delved into how well it supports common MMO features like drag and drop from GUI to world, xml customization, etc.



This is of course just a basic list, and it's just the common stuff between all MMOs. Also to be developed would be a gameplay system - including combat, world rules, etc. that govern how the game plays out. Things as simple as targeting change from MMO to MMO, though they do fall into a few categories. Either way, any MMO tool will require a plugin system for these design decisions. jMonkeyPlatform seems well suited to the task. So, my eventual goal is to have a suite of plugins for jMonkeyPlatform, in combination with a set of libraries for jME3, which can be used to generate a world-class MMO in a fraction of the time it now requires. The eventual answer to "I want to build an MMO with features X and Y from game A, and Z from game B, and a few cool ideas of my own" should be: well, X, Y, and Z are all plugins to jMonkeyEngine, so now all you have to do is write your cool new feature.

@dpwhittaker: I’m drooling :smiley: Thats exactly what jMP was made for. And the concept of “game type plugins” is something that we have on the plan for jMP since the beginning. Happy to see more and more people jump on the train.

Thanks for all the replies! I have my last final tomorrow (Friday) afternoon and will read through them all after that. Just wanted to say thanks.

By the way, about that simple MMO game that I made, reason I made is because I wanted to see how hard it is to make an MMO.

From a code perspective, it isn’t that much different than making any other game.

The biggest challanges with MMO I think would be making all the content (models, items, quests, worlds, etc), you need thousands of everything to make the game immersive enough for a long time. You also need to maintain it over time and constantly add new features and content.

Depends on the mmo, since I need a realistic sized space I have some more stuff to do, also I plan for a cluster solution, (aka eve everyone on one server) so depending on what you want coding can be quite heavy as well.

Great, thanks for the responses. I’m not looking to make a full-fledged game, really, just an environment in which I can try out some ideas. I figured most of them were far enough from art and geography that I would need to jump into the code. I’ve only used Java for a year but used C++ for years before that (including for my degree), and I currently work on maintaining (by myself, now) a large scale data repository, so I have a little experience in scaling and working with tons of data. No direct game experience, however, but I digress… It looks like PlaneShift or Ryzom would be a good first step at least. Ryzom’s “Ring” stuff looks like it would cover a lot of the things I’m thinking about. Now I just have to decide what to start with.



Generally, I think current MMOs are all too static and repetitive and boring. I was wowed (no pun intended) with EQ back in the day but haven’t seen much improvement in gameplay since then. Scripted events and predetermined pathing are so 90s. Public quests are probably the only interesting thing I’ve seen since then. I’m interested in making MMOGs more dynamic and immersive, so that every time I log in (being a casual player), the world is a little different somehow. No drastic changes, necessarily, just different. I loved the GM events back when EQ had server GMs, and want to bake that into the game by making the world reactive to itself, PCs and the players.



My latest (unbaked) idea is based on an Information Retrieval class I took (and failed, ironically) this past semester. We did some MapReduce work and I have an idea of using those methodologies to deal with dynamic terrain modification: creating paths/ruts where [N]PCs walk often, swapping textures, growing grass, invasive flora, etc. in an easily scalable way.



Cheers

What would be really cool is a full artificial life simulation… creatures move to where the food is, consider players food, have babies, protect their babies, etc. The world is constantly changing as the predators move to follow their prey.