Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

Work in Progress / Designing an MMOG (StarCorporations)

Author
Message
AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 15th Jan 2009 12:07 Edited at: 15th Jan 2009 18:55
Before I go to the work itself I will take my time to answer an other posting "How To Know if Your Games Ready For A W.I.P Post" in here.

In my oppinion work starts a lot earlyer. In this stage there are no screenshots neither a demo aviable. The work starts even not with programming one line of code. It starts with thinking over what you want to do, a game idee, collecting all neccerary tools, thinking about if the project can be done or not and what hardwareresources and manpower there mybe will be needed to run it finaly.

I myself thought over it about 5 years without doing much code. I try several tools and finaly I come to DarkBasic as a 3D Engine that's worth working with. (Because it is royality free and allows extensions.) I collect player thougts about how should a game be. To fullfill players wishes is very important for a MMOG to succed on market. And I thought about if it should be free or commercial and about pricing and marketing. After that "wast" of time I took a look at the neccasary work of programming a MMOG. That took a lot of time also. To understand the different ways to do an MMOG form hardware up to code and management.

Now the work starts to write code. But when you think of code in DarkBasic as 3D Engine then you are wrong. First of all you need to define the databases and tables to store all the neccercary data. An administratin interface to fill that tables with content and to watch over what player are doing in the final game. A lot of logging player actions is neccesary to see how they spent there time in game. A balancing posibility of abilitys have to be written and logs about development of prices must be done.

All to code in DarkBasic is tremendious amount of code and work.

So I will not go this direction. A lot of code is better places outside of DarkBasic. Each task will be made in a seperate module. This modules can run on each server or client. This will guarantee better performance, error seeking, expandibility and so on. But why spend time on writing (let us say) a invertory module before work on the game is starting. Because first we need a plan what and how to store objects. The most part here is MySql handling. Preparation of data like the wight of all carried stuff. All this will be done in the module and only the result will be passed to DarkBasic. An example: The player found a chest and he like to take it into his invertary. We only have to pass the acctual wight of the chest to the module (with the player id) and the modul gave us back if the player has to much to carry or store the chest into his invertary. Or the player is in front of a closed door. He has lockpicks that will increase his ability to open the door by several persentage. We just transfer the needed persentage to open the lock to a module. The module itself will ceck the player stats and if he has a lockpick and so on. Finally you get back a simple TRUE or FALSE for the action.

If you see a new part that you want to be aviable in game (mybe a stock-trade-system) you just write a new module and implement it with a view lines in the main engine.

The goal is to be as flexibel as possibly and to easily bring new features into the game.

Next: Let us see the technical aspects of running modules.

Here you can visit my FTP server: ftp://ntse.de/ftp-main/DarkBasic/
I will put all tools and source into directories.
TechLord
23
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 15th Jan 2009 13:56 Edited at: 16th Jan 2009 03:20
Hey AlfJan,

I see you have finally taken the plunge and posted the risky `I'm making a MMO` Thread. I've been coding on mine for a over year, and I still don't have a cool screenshot to boast. The best your gonna get out of me are illustrations and title screens - lol.

StarCorps - sounds like a cool working title. IMHO, titles are extremely critical to the game design. Its like asking yourself what came first? The Chicken or the Egg? Better yet, `what came first? The Game or the Title?`. I believe I've finally settled on a title that befits my masterpiece: META-Lore.

Quote: "Now the work starts to write code. But when you think of code in DarkBasic as 3D Engine then you are wrong. First of all you need to define the databases and tables to store all the neccercary data. An administratin interface to fill that tables with content and to watch over what player are doing in the final game. A lot of logging player actions is neccesary to see how they spent there time in game. A balancing posibility of abilitys have to be written and logs about development of prices must be done."
I find this statement interesting because, I'm writing all my Admin Tools to run in a Web-browser (PHP/HMTL), not the Game Client.

StevetS
22
Years of Service
User Offline
Joined: 19th May 2004
Location:
Posted: 15th Jan 2009 14:16
O.O.Ps! I don't think this is comes under the agreed forum definition of a WIP, nor an answer to the post 'How to know if your game is ready for a WIP posting'

Maybe a post for the 'Game Design Theory' forum.

That aside I agree with what you're saying about modular program design, though I normally write the modules in Dark Basic functions externally from the main program itself then add them in at a later date - makes everything a lot more manageable, structured and therefore easier to debug/correct.

AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 15th Jan 2009 14:21
Hey TechLord,

I know that it is risky to post that but I will share my knlowledge on this subject. It takes me years to get into it and about 5 good books and many webarticle. The fact is there are a lot information out but most of them are useless. You find mostly just a bit code but no information how to start development and to succed it. A lot articles spare out the basics without you cant run an MMOG and the worst most articles implement it's easy to write it. In fact we know that you need years when you are doing alone. Plus an aditional amount of time to design the 3D World itself.

I think most pros do her admin tool with php when they are using MySql as database. Additionaly programms can generate "dynamic" content too. As I explain lertar on, I will move a lot of the normaly ingame GUI to http/php peges too. In 3D games about 70% of the screen is used to be GUI. It's hard to read and difficulty to implement. Most players want to ALT TAB out of the game for web because of tipps, Foren etc. That's why I come to the point to do a lot of player GUI outside the game.
AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 15th Jan 2009 14:27
@ StevetS

I think here is the right place. It will not be theory a long time I will come very fast to code.

What you talk about, splitting the source in modules is not the same I think of. (But I will do also. It's a normal and a good way to do that.) Because the source of you have to run on the same hardware. But modules as I think of can run on different hardware. On both LINUX and Windows. They can run more than onces to speed up if needed. That's in my next post I prepare to be post here.
AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 15th Jan 2009 16:00 Edited at: 15th Jan 2009 16:24


Here we are in the development stage. We do all work on a single windows PC.



When all is running properly and we can start a closed beta (with max 100 players) we switch to a more powerfull setup. We need a great network bandwith. That's the point to search a provider to place two server there. A Windows Server to run DarkBasic and a LINUX (LAMP installation) that is used for MySql, http, php , ftp, smtp and of curse aditional modules.

This brings up a second requirement for our modules. They have to run on both OS Windows and Linux without havily changes.

If the closed beta comes to an open beta, we need more server. Maybe just a few more Windowsserver or possibly aditional MySql server.

At this point you can figure out that there will pop up hugh cost per month. (You cant place servers for free by a provider.)

That's the theory about. Now we should work on the first modul implementation of a modul in DarkBasic. Of course we must find a programming language that runs under Windows and LINUX.

We will use Tcl/Tk for this task. There are several reasons to do:

1. It's free and you can use a ton of addons.
2. You can write your own dll to expand it.
3. It's a rapid prototypeing Language (script) that is executable on both OS without changes. Only the MySql dll must compiled into an so under LINUX.
4. We can easyly make exe files out of it (runnable on both OS) and this exe are crypted too.
5. Tcl/Tk has implemented network, http, ftp and smtp commands we need to do all the work.
6. It's well documented in books and the web.

Next we will focus on tools we need for our development. Because this is a bit to hugh to publish here on the board I will open a FTP server to get this down.
AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 15th Jan 2009 16:36 Edited at: 16th Jan 2009 07:10
Here is the source of a little server written in Tcl/Tk.
It's just a simple module that gives back the word "hello" to the caling DarcBasicPro programm. It's hard coded for localhost on port 9999 in synchronious mode.



Here is the calling DarkBasicPro programm that only sends to the Tcl/Tk module a string and puts out the backwards "hello" on screen. For doing we use the addon Matrix1Util_28.



Here is an example of an simple Mysql server made in Tcl. You have to start the USB webserver first (a litte database is included). ftp://ntse.de/ftp-main/DarkBasic/examples/
Simply download the simple module exabmle.zip and unzip it. Run first the mysql_server.exe and start after this the mysql.dba. (NOTE: Windows firewall will ask of permition to use the port.)
TechLord
23
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 16th Jan 2009 05:06 Edited at: 16th Jan 2009 06:56
AlfJan ,

I'm a visual person and I like illustrations. The more the better.

I'm inspired. Fun with Powerpnt and Photoshop.


Click to Enlarge

I'm also designing with `modular` in mind. For big projects and complicated systems, I dont see anyway around it. What `Moduls` are you planning to use?

I'm essentially developing two engines simultaneously. I've separated the server and client with intention of operating 1 Server per 512 Clients. I'm current running them both on the same PC but will be setting up another in a separate location to operate as the Game Server.

AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 16th Jan 2009 08:00 Edited at: 16th Jan 2009 08:08
Techlord,

I'm very visual too. But you do more glamorous design. I reduce it mostly to the required parts and do not so good design. I work with an Aiptech Notpad also to draw down directly and later to transfer it onto my computer.

Our ideas are very similar. I also use one hostserver (the LINUX server) and multible gameserver. In my design I can double the hostserver too. Specialy to have an additional MySql server if needed. You wrote that you plan to let 512 clients run by one gameserver. How you come to that number?

I worked with Lawmaker, Crysal Space and a few other Engines until now. (I try them out!) I always found forum entrys like "can that engine do mmog?". In all cases the answer was "yes". The next question was "how many players can be done by a server" and there is mostly no answer on that point. You know why?

It's not a thing of the engine to limit that. It's the network bandwith that limits the players per server. After understandig that you must think over the conditions of you server hardware and provider. The network cards (today) allow 1 Gigabit bandwith but the most providers limit you at 100 Megabit. So let me calculate: About 20% - 30% of the traffic is network protocol. 100 Megabit - 30 Megabit = 70 Megabit. Now transform it in Byte. 70 Megabit / 8 = 8,75 Megabyte per second transfer rate. Now we come to the point! How many byte per client you have to transfer per second? If you do 100 kbyte = 0,1 Mbyte you can do 87 clients. What only 87? Yes that's the fact. Now we see how we can increase that number. 100 kbyte is a lot amount you must not transfer. When we reduce it (and that must be planed) to about 10 kbyte and maybe we can comprimice that to 8 kbyte before sending to the client we come up to 1093 clients. That sounds a lot better.

The fact is not the engine will define the client numbers but your networkdesign will do!

In the above calculation we spare out that we will have additional traffic by the update system for all that clients. That's why I think of an addittionel ftp server just to have full bandwith on both sides.

You can reduce the bandwith usage by using two network cards. By splitting outer network (clients) and inner network (gameserver to host server). The inner network will be (using an aditional 1 Gigabit hub) much faster and don't reduce the bandwith to the clients.

So we see planing is very importand before writing code. The code must fit to the planed harware configuration.

To answer your question about what modules I plan to bring up. It's not clear finaly but a few I know now:

1. Generaly MySql module.
2. Update module.
3. Trading module (for both player and NPC in one module.) Using MySql too but is fixed to the duty.
4. Guild/Clan management modul. Using MySql too but is fixed to the duty.
5. A module that will handle all dynamicly placed 3D Objects. Using MySql too but is fixed to the duty.
6. A module that will calculate if the player succed doing things. Using MySql too but is fixed to the duty. Like open a close door. Hitting an enemy and so on.
7. A module for chat and EMail in game. That module should also handle Mails from outside and forward it into the game and in the other direction. Using MySql too but is fixed to the duty.
8. A module to generate http files. For automatic entrys in player depended info pools but alo to let players see what is going on in game. Using MySql too but is fixed to the duty.
9. The invertory system is build as a module. Using MySql too but is fixed to the duty.

In future I will found more modules to do or to bring new posibilitys inside the game. Most players left a game when they came to be boring of the content because it is always the same things they can do. So I plan to do a lot of dynamicly content.

The great amenity by using modules is that the will fit into each game you may think of. At the end you have "only" to do the 3D-side and changes prefaps and objects to change to a new genre of game.
AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 16th Jan 2009 08:36 Edited at: 16th Jan 2009 08:40
Theory! Why lags appear!

If you play sometime an mmog you know that a lag is. You are running around a bunch of monster and then you are suddenly inside the enemy group. Player called that a lag. Most tell you the server is to slow and that's why a lag appeare.

That is not true in 100% the cases!

The server has to reduce bandwith as we know now. But the server data are set the game because here the sync is done. A lag appears when the client is asynchron with the game-server. What do I mean by asynchron?

An example: The server will not give any position to the client when you run in your world. That will increase the traffic and reduce the number of players per server. If the client works to fast the estimated position (the actual position on the client) does not mach the calculated position on the server and (as we know the server is right) your character jumps back or to the side. Even if the ping is to high (we have a delay in transfering the position to the client) we get lags.

Knowing this we can figure out that there are three posibilitys that lead to a lag. The server is to slow, the client is to fast or the network has a hugh delay and miss some network packages.
TechLord
23
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 16th Jan 2009 09:49 Edited at: 16th Jan 2009 11:40
AlfJan,

I can understand what you mean by players leaving a mmo due to stale game mechanics. IMO, Players need a tangible stake in the game. This is why I'm so hot and heavy on Player-Creation and that is the focus of my game design.

I've seen many other Devs speak on Dynamic Content, but with foggy descriptions on implementation. Are we talking about adding or modifying art for the game? More Story, both? In Persisent World, technically the content is dynamic by default.

My approach to providing Dynamic Content is to provide set of basic game mechanics that can be combined to create more complex mechanics. In fact, I tried to start a topic about it in The Nuts & Bolts of Game Mechanics by TechLord Thread.



My game uses twitch-based combat so I'm addressing Lag with every known technique to include Compression, Dead Reckoning Prediction, others. There is nothing magical about 512 Players per Server other than MMORPG.com's Game List requirement stating `The game should have the capability to support at least 500 congruent users on a single server.`

AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 16th Jan 2009 11:14 Edited at: 16th Jan 2009 11:24
TechLord,

Until now I dont consider of player designable content. But I change my mind. I plan to do 3D handling in my invertory from the beginning of planing. I like to have for example a gun that in a special window can be deconstructed and if necessary parts to be replaced or repaired by the player. (I plan an open skill management.) If you have the skill to repair guns you can do. Now the idea to let the player even build a completly new gun is just a conclusion. Thanks to you changing my mind on that.

By dynamic content I think not of more static Quests. I want to have a timeline. A quest that is done by a player or playergroup is (possibly) never more aviable by others. An example: If a player comes to a mage and this mage offers him to learn a spell. After leaving this mage the player tells an NPC of this mage and it's position the mage can leave to a new place or fade out completly. This will make it impossible for others to gain access to that spell easily. The world should change with the timeline. If a bridge is start building in the world you should see the phases until it finish. If a player moves a object or just throw it away it should be there for the next player. Player themself should be possible to offer skill to others to earn money or to hire a bodyguard etc. The main income should not be done by killing enemies. Players can "craft" or repair stuff of others that have not the abillty to do for earning money. Also building new stuff should be possible. They can sell information as well (thinking about a virtuel trading object). Players can play even they are offline, by defining what there characters should do in the offline periode. Lea.rning, building amunation, teaching others, making "non 3D Quests", exploring lot to gather knolledge and skillpoints. Truly here I'm not as far as I wish to be. This are just ideas in some aspects I want to have in game but until now I dont know if it can be done.

Experiend Players can become "Playmasters" and set new Questlines (combined with timeline or not) for the player comunity. I have tons of ideas but I have to work on it a bit longer to make a concept for programming it.

As you see I have a gameconcept for "Starcorp's" too. But I do not want to bring it out public because I am not sure if I will possibly run it commercial. If the idea goes around a producer (with more manpower) can bring it out before I can finish my work.
TechLord
23
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 16th Jan 2009 12:15 Edited at: 16th Jan 2009 12:18
My last post demonstrates basic dynamic content. I changed it, adding a pic. As simple as it may be, it had a tangible effect on this thread by not only adding a totally cool visual to gaze upon, but, it also changed the physical length of this thread, etc. My point is Players should be able to effect the game world and others should be able to experience this effect.

Quote: "A quest that is done by a player or playergroup is (possibly) never more aviable by others. An example: If a player comes to a mage and this mage offers him to learn a spell. After leaving this mage the player tells an NPC of this mage and it's position the mage can leave to a new place or fade out completly. This will make it impossible for others to gain access to that spell easily. The world should change with the timeline."
So you want a player or a `party` to have unique quest to participate in? You mention NPCs giving out quest, which leads me to believe Quest generation is automated. I think its very feasible to automate quest generation with unique goals and objectives. But, its going to take some serious designing if you want to go beyond `Goto Point b, Kill n Rats` Task Generation. I hate to admit it, but, I'm too lazy to program such a elaborate Quest Generation Computer, thats why I'm going to simply give the Players tools to create their own Quest.

Take it from me, ideas are a dime-a-dozen and game developers have a gazillion ideas. I use to worry about folks stealing my ideas, but, not any more. I realized most Devs are too busy trying to bring their own ideas to life. I would be honored if one of my ideas were good enough for someone else to take and run with. Oh well.

AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 16th Jan 2009 12:47
TechLord,

you wrote:

Quote: "My last post demonstrates basic dynamic content. I changed it, adding a pic. As simple as it may be, it had a tangible effect on this thread by not only adding a totally cool visual to gaze upon, but, it also changed the physical length of this thread, etc. My point is Players should be able to effect the game world and others should be able to experience this effect.
"


I know the consequence out of dynamic is more work and it will alter the game itself. But I think thats the only way to go. ANet (Guildwars) anounces also to bring up dynamical content.

Maybe I tell it to complicated. My goal is to get Players as Playmasters in my boat to do dynamical quests. Additionaly some quests has to set up by admins. Generators are just random quest disigners or placement of stuff to get by player but not realydynamic. Starcorp's will be a futuristic game. Not an traditional high fantasy. More like shodowrun if you know the paper & pen game. A world a few years in the future from now on.

I will excuse myself for my bad english. It's not my native language and even if I read my textes three times I found spelling errors when I read it once again.
tha_rami
20
Years of Service
User Offline
Joined: 25th Mar 2006
Location: Netherlands
Posted: 16th Jan 2009 22:54
This really is Game Design Theory. Interesting theory, that for sure.

When you get to the point this adheres to WIP rules, you should definitely repost here, though - should be extremely interesting to see your theories work out in reality.


A mod has been erased by your signature because it was larger than 600x120
AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 17th Jan 2009 19:53
I still work on parts!

I will excuse myself for my bad english. It's not my native language and even if I read my textes three times I found spelling errors when I read it once again.
TechLord
23
Years of Service
User Offline
Joined: 19th Dec 2002
Location: TheGameDevStore.com
Posted: 19th Jan 2009 22:58
Theory, Smeory, as long as your working on your StarCorps its WIP.

We kinda skipped over how the game will play in our earlier threads. I'm curious as to how combat will work. Is it point n' click? Real-time/Turn-based? First-Person, 3rd, Top-Down Perspective?

AlfJan
17
Years of Service
User Offline
Joined: 5th Dec 2008
Location: Germany
Posted: 22nd Jan 2009 16:36 Edited at: 22nd Jan 2009 16:39
Combat will be a combination of point and click and skills to hit him. Even if you aim good there will be a chance to miss if your abilitys are not good. For using a gun the distance will be calculated too. It's more difficulty to hit when you are far away. If you stand in front of and fire a gun, you will hit without having a high skill or even have that skill.

The perspective is planed to be both 3rd and first Person. Like in GuildWars. But the characters can use vehicles too then they will be forced to a 3rd "person" view of the vehicle. I plan to bring a lot of into game. Cars, Motorcycle, Planes ...

The players also can direct a bot to explore hostile inviroments. This will be forced to a first person view inside a smaler window. Like they are seeing through a camera of the bot. The bots can obtain a little autonomic tasks, depending an an ingame ability of robotic and programming.

I will excuse myself for my bad english. It's not my native language and even if I read my textes three times I found spelling errors when I read it once again.

Login to post a reply

Server time is: 2026-07-01 09:29:00
Your offset time is: 2026-07-01 09:29:00