# How to create a virtual world and manage it over a LAN?



## gdebojyoti (Nov 1, 2012)

Does anyone know how "virtual worlds" (like Second Life and GoJiyo) are created?

I would like to create a (much) shorter version for mine. I would host it in my computer and access it via LAN. May be a total of 4-5 users.

I would like to start with a single room, and low-res characters. Then I'll gradually upgrade.

I have some experience in 3D modelling and animation. But I have no idea how to make the characters (controlled by different users) interact.

I'll probably have to use an engine/ platform. I heard of OpenSim (OpenSim), but have zero experience with it. Anybody used it here?


I abandoned the previous thread because one of the main objectives has changed - I now want to host the whole thing in my own computer, mainly to overcome the cost factor. I want to do this for fun. In the process, I'll get to know many new things.


----------



## pratyush997 (Nov 1, 2012)

I think Hamachi or Tunngle will do


----------



## gdebojyoti (Nov 1, 2012)

pratyush997 said:


> I think Hamachi or Tunngle will do



You don't understand my question. I have access to quite a number of computers. So operating via LAN (without Tunngle) is easily manageable.
My question is - _how?_


So far I have come to know this -

In a virtual world, some server has to keep track of the map and what is happening, and communicate with players . When one avatar moves around, it has to send the new position to all the other players. It also has to store the asset database (3D models, textures, etc.) so they can be sent to new players as needed for display.
What distinguishes a "game" from a "virtual world" is persistent state. A game always starts in the same place with the same conditions for everyone who plays. A world remembers past changes. So a new player sees the world as it is _now_ - not in the default starting point.


----------



## Hrishi (Nov 1, 2012)

YOu should look about this info on "GameDev community" . Thee are some good posts about controlling and managing the "MMO engine".


----------



## pratyush997 (Nov 1, 2012)

Just create the server and let the players join on that server by sharing IP out else it should be in LAN server list


----------



## gdebojyoti (Nov 2, 2012)

pratyush997 said:


> Just create the server and let the players join



First I have to make the whole thing. And that's what I don't know.



Rishi. said:


> YOu should look about this info on "GameDev community" . Thee are some good posts about controlling and managing the "MMO engine".



Okay, I'll have a look at that. Thanks.


----------



## Anorion (Nov 2, 2012)

even for fun, it is cheaper to host the game in the cloud. people have bought out mmo engines for this reason... like owned the codebase so they could develop it as their own pet project. HeroEngine, is the closest to what you want to do, Unity second best, please flesh out details.


----------



## gdebojyoti (Nov 2, 2012)

Anorion said:


> even for fun, it is cheaper to host the game in the cloud.


I can't afford that at the moment. I am just a college student.



Anorion said:


> Unity second best


Is it really possible to create an entire virtual world using a game engine? How do I handle the client-server communication part?
I also need to somehow connect to a database (like MySQL) to store the details (position, state, activities, messages, etc), right?



Anorion said:


> please flesh out details.


I think I have said everything that I want to start with. Is there anything else that I should say or something that I missed? Then do let me know.

Thanks.


----------



## Anorion (Nov 3, 2012)

describe the project, what kind of virtual room, how big will that one room be... are you talking of an actual room sized room, or say a city block sized room, or even larger rooms... what the avatars in that room will be doing... what kind of changes do you want to track, how will these people interact with the environment and each other
maybe, just maybe you don't need a real virtual world
you can host an instanced version of a room, and get people to join and play in that instance, this would not need any of the laborious work on implementing a server, so you can probably make this as a quake 3 mod
maybe even the Creation Kit will suit your requirements, with the creation engine, 
making second life will take a monumental effort, pref by a big team, there are hobbyist virtual worlds out there, and all of them rent server space, or come with a cloud component that needs configuring, but not worked on... so basically something like HeroEngine or Esenthel come with these components built in
you can also use some other game engines to do this, such as the Torque engine, and yes, Unity, or maybe Source, not sure  
now for the networking stuff... there are networking engines, which can be used as middleware, unity uses raknet but there are other options
so unity is overall the soundest option, because they have an active community of users who respond to queries 
database bits... depends on the engine, but guess SQLlite or mono will be supported 


approaching the limits to how much I can answer these qs, doing a bit of this same thing with some friends, we are using HeroEngine, my involvement is only in making the 3D assets for it, license + server costs less than rs 5k a year, think that includes cost of the engine. lifetime subscription was available at one time for rs 10k, and this included the server costs. this is the easy way out, really, because the engine has already done most of the things for you.


----------



## gdebojyoti (Nov 6, 2012)

Anorion said:


> describe the project, what kind of virtual room, how big will that one room be... are you talking of an actual room sized room, or say a city block sized room, or even larger rooms... what the avatars in that room will be doing... what kind of changes do you want to track, how will these people interact with the environment and each other



By room, I mean an empty rectangular box - an actual small to medium sized one.
Avatars in the room can move about (2 speeds - walking and running; no flying).
The players can chat with each other. Initially, a public chat will be available (something like the one in SL). Later I would like to incorporate private messaging.

As said earlier, I need to know how to host such a room, and how to allow other players to join it.



Anorion said:


> maybe, just maybe you don't need a real virtual world
> you can host an instanced version of a room, and get people to join and play in that instance, this would not need any of the laborious work on implementing a server, so you can probably make this as a quake 3 mod



I didn't get this part. Will you please explain?



Anorion said:


> making second life will take a monumental effort, pref by a big team, there are hobbyist virtual worlds out there, and all of them rent server space, or come with a cloud component that needs configuring, but not worked on... so basically something like HeroEngine or Esenthel come with these components built in



As I've said earlier, I do not intend to replicate SL. I just want to create something similar, but on a much much smaller scale. Not just for fun, but also to learn how the whole thing operates. This, and the fact that I am a college student who can't afford the 10K right now, is the reason behind my decision to build it myself and host in locally.



Anorion said:


> you can also use some other game engines to do this, such as the Torque engine, and yes, Unity, or maybe Source, not sure
> now for the networking stuff... there are networking engines, which can be used as middleware, unity uses raknet but there are other options
> so unity is overall the soundest option, because they have an active community of users who respond to queries
> database bits... depends on the engine, but guess SQLlite or mono will be supported



I'll have a look at those.


----------



## Anorion (Nov 6, 2012)

^its great that you want to try to make it yourself
SL is made using a modified version of unity. there are two parts of the software, one is the server. this is the bit that is hosted on rented space, or in this case, your machine. This software connects to all the players, keeps track of everything. The second part of the software is the client. This is the software installed with individual users, and the one they will use to interface with the server. this is against say counter strike, where anyone can host a match and anyone can join. 
this is how a true virtual world works, that persistent virtual world... then there instances... they exist for a short time, people can come and go, but after a while, they are no longer there... this is a slightly less daunting task... but you wont end up learning how second life is made, if you want to do this only, still think unity is best suited based on your replies
there are many game engines that come with mod friendly tools. If all you want is people to spawn in a room and talk to each other, you can do this as a quake mod, HL2 mod, Skyrim mod (using the creation engine) - try this, or a Crysis mod using the CryEngine 3...


----------



## gdebojyoti (Nov 7, 2012)

Okay. Thanks.


----------



## gdebojyoti (Nov 10, 2012)

My exams are drawing near. So I cannot spend as much time on this as I would like to. Still, I'll try to use whatever free time I can get.
Will post here if I find something of use...


----------

