MMORPG Mapping?

Hey, I'm making an MMORPG with some of my friends from highschool. We're using jMonkeyEngine until we can develop our own engine and transfer it to that (which will probably take effing forever and/or never happen).



I don't want to hear "don't start out with an MMORPG" because even though it has a high chance of failure among other people, I'm confident that we'll be able to figure it out eventually.



So, having said that, does anybody have advice on how to map an MMORPG? Obviously using a randomly generated MidPointHeightMap won't work, since the terrain needs to be the same for everbody. I want to start off with having a map that takes about 5 minutes to run all the way across or all the way down, and I  just want to have a single small island in the middle. What programs should I use to map this kind of environment, and is it easy enough to where I can just load a single file into my program, attach to it a Bounding Box, and then load it into the root node?

One way I was exploring at some point is to initialize the random number generator to a particular seed (sent by the server), that will ensure your clients are all looking at the same thing regardless… Another one is to use a height map image (like a PNG with elevation being pixel data).

I was under the impression, in the beginning, that MW3D had some sort of level editor (like Blizzard's StarEdit for Starcraft) that would allow me to create heightmaps and texture them with built in textures and add built in objects and other OBJ files and create a level and export it as a single obejct. Am I completely wrong in this?

MW3D is mostly a model editor now, versions before 4.0 had a terrain editing facility but it got removed for some reason. Either way the best thing is to make your own editor, that way you can directly interface with your game format(s) without having to write exporters/converters and the like.

Momoko_Fan said:

MW3D is mostly a model editor now, versions before 4.0 had a terrain editing facility but it got removed for some reason. Either way the best thing is to make your own editor, that way you can directly interface with your game format(s) without having to write exporters/converters and the like.


:-o any advice on how to start writing my own editor? And you mention making my own format for my game, but wouldn't it be required for me to use a format that jME can read?

If you're up for it, you can use blender (http://www.blender.org) to model your terrain and then export it as a heightmap – and then import into jME as an image based heightmap.  I experimented with this technique and it works relatively well.  Here's the blender tutorial:



http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Landscape_Modeling_III:_Exporting_as_a_Heightmap



The Landscape modeling tutorials that preceed the above tutorial are also very much worth your while if you decide to go the blender route.  Of course, if you don't want to use blender to do your modeling, you can model in something else and then import into blender and jump directly to the export tutorial.


ashtonv said:

If you're up for it, you can use blender (http://www.blender.org) to model your terrain and then export it as a heightmap -- and then import into jME as an image based heightmap.  I experimented with this technique and it works relatively well.  Here's the blender tutorial:

http://en.wikibooks.org/wiki/Blender_3D:_Noob_to_Pro/Landscape_Modeling_III:_Exporting_as_a_Heightmap

The Landscape modeling tutorials that preceed the above tutorial are also very much worth your while if you decide to go the blender route.  Of course, if you don't want to use blender to do your modeling, you can model in something else and then import into blender and jump directly to the export tutorial.


Alright! Awesome. Could I also do something similar with Terragen? And what code to I write into my program to import an image-based heightmap. Is the water, grass, snow, mountains, etc. generated along with the import of an Image-based heightmap?

:D

The image used in the image-based height map is greyscale.  The texturing in this case is applied via the usual texturing methods and/or texture splatting – the latter for height based textures (such as grass on the lowlands and snows on the highlands of the map).  You should be able to search the forums,  tutorials (Flag Rush), or jME tests for the code you'll need to texture your terrain.

Any idea how big companies like Blizz do it in World of Warcraft? Isn't there also an option to have a BMP image and "drop" it on top of a heightmap?

Created a .raw in Terragen and loaded it. It worked well, but it will be hard to expand the game to having anything the size of a regular MMORPG map, or anything even close. I’m still looking for any ideas, if anybody has some.



Still also wondering how to make my own mapping system… What would that entail?

:mrgreen:





EDIT: Found this mapping software online. If I make a world in that program, would it be possible to export it to one of it’s many formats (.3ds, .ase, .ac, .b3d, .obj, .x, .ms3d, milkshape ascii .txt, .md2, or .mesh) and then simply load that as the world using some awesome method in jMonkeyEngine?

Seems to me there is little need of having the entire world loaded at the same time. Just compile it of tiles or regions… the tiles or regions can be made themselves in the same ways you experimented with already.



Your own mapping system would then load/destroy the areas that you pass through, dynamically.

Have you looked at jmeterra yet?

Mindgamer said:

Seems to me there is little need of having the entire world loaded at the same time. Just compile it of tiles or regions.. the tiles or regions can be made themselves in the same ways you experimented with already.

Your own mapping system would then load/destroy the areas that you pass through, dynamically.


That would be fine with me--now how do I do that? I also want to put in permanent GameObjects into my landscape (like a capital city for players to start near, NPC's, and the like). How do I do that, exactly? I'd like to have more control over the landscape than those methods offer, anyway. I'd like to be able to arbitrarily put in ponds/lakes, rocks, roads, dirt paths, etc. I guess that would be more of a texturing issue, though.

hevee said:

Have you looked at jmeterra yet?


Yes, I've seen jmeterra. I downloaded it and it's a jar file that creates a world, but I have no idea what to do with that world or how to implement it into my game, haha.

:D

I'm just kind of curious to know how big your team is and if you have an idea of the scope you are wanting to achieve? Also, are you planning to create the project in any type of open format?

thaspius said:

I'm just kind of curious to know how big your team is and if you have an idea of the scope you are wanting to achieve? Also, are you planning to create the project in any type of open format?


We have a core team of 3 people, for the main programming. I've already done most of the server, and now I'm focusing on the client so we can make the stuff renderable and test the server.

We do have an idea of what our scope is--by June of 2009 we're hoping to have a basic MMORPG that utilizes player accounts (each with up to X characters), 2 factions, 1 capital city for each faction, 2 races per faction, MAYBE 4 classes, probably just 2 or 3, and enough content to level characters from 1 to 50, with a level cap of 50.

We're hoping we can finish up the client and expand the engine to allow us to expand content by adding into the SQL servers (we'll have tables for each of the following: creature templates, actual creatures located in game, accounts, characters, items, weapons, and spells). When the game engine starts up, it will load all of the content from the SQL server into arraylists and begin transmitting data to the client.

In addition to our 3 core programmers, we have two (maybe three) people helping out on the modeling front, 2 people for sound effects, 1 person who is amazing with animations, and all of the above people are going to assist with BETA testing and lore development.

Although our goal is content for 1-50, we would be satisfied with 1-40 or even 1-30 with a good amount of expandability.

:mrgreen:

bump

I think creating my map in a 3D program (like Blender or another) would be most suited for my MMO, since I want to control the landscape a lot. Do you have any recommendations as to which program I should use?



Also, I read something about it needing to be cut up into tinier pieces for the culling–how do I do that? < 2000 triangles is good, according to the other post, but I'm not sure how I would cut it up into several different pieces like that.



and most importantly… HOW DO I LOAD A 3D MODEL OF TERRAIN INTO THE GAME?



What classes do I need, do I put it into a TerrainBlock object? Exactly how do I do it, I'm a newb with jME so just telling me with words won't help, I need to see some code :smiley:

Trussell said:

Also, I read something about it needing to be cut up into tinier pieces for the culling--how do I do that? < 2000 triangles is good, according to the other post, but I'm not sure how I would cut it up into several different pieces like that.

When the whole BoundingBox of a model is outside the Viewing frustum, it gets culled.
Now if your Terrain is one big block, it obviously never gets culled as long as you move around and look at a small part of the terrain.
So your terrain needs to be somehow made out of parts with its own BoundingBoxes.
I'm sure the terrain classes in jme takes care of that, but i didn't use it yet.
If you import your terrain as a model, this would need to be done in the modeller i think.

Trussell said:

and most importantly.. HOW DO I LOAD A 3D MODEL OF TERRAIN INTO THE GAME?

just like any other 3d model:
jmetest.TutorialGuide.HelloModelLoading

If I cut up my terrain into little pieces, how do I make sure the little pieces are all going to be arranged in the same way they were designed?

i'm afraid i have no experience with this stuff, i'm sure someone else can give more in depth information :slight_smile: