(MMOSRPG) 2 Years in concepting looking for advice on actual implementation
#1
Posted 24 July 2008 - 06:35 PM
I've been in a planning/design stage for the last 2 years, mostly with free time and as a hobby, and reading as many articles about the industry as I can. I have a pretty decent understanding that I'm lighting the fuse to my own human cannon pointed directly at a brick wall. I do have about intermediate experience with a few OO languages, such as Java and C#, with a bit of delving into C++ and vague scratching-of-the-surface when it comes to memory management.
The plan is an MMOSRPG, which I think simplifies some aspects of the development process. Namely, an online tactical RPG that plays much like some old classic tacticals, i.e. Final Fantasy Tactics, Ogre Battle, etc. Just for reference sake, since typically an MMO is free-range in 360 degrees, real-time, etc.
Anyway moving on to the questions:
Graphics: I've messed around with a few engines and I think I'm going with (M)OGRE [MOGRE is the C#/.NET wrapper for OGRE, of course] as my graphics engine. Given a 2d (sprites) / 3d landscapes graphical structure, do you think this would be adequate, and using C# no less? Would it be overkill, or just fine given OGRE's beautiful integration and capabilities?
Language: C# mainly for the client, I'm thinking, anyone really have a solid conclusion that C# in today's 2039582035GB computing world is acceptable for such a project?
Networking: Here is where the cannon fires and I plunge headfirst into the wall. I really do not have any real experience programming server-client relationships, though I do have a basic understanding of networking in general (packets, TCP, UDP). How difficult will it be to break into writing just a simple server-client, and eventually graduating to a level that I can implement for the purpose of a larger scale game?
Networking 2: Given the nature of the game (turn-based combat), would this greatly simplify the workload of the server, and on writing the server's code? Or would it still be about as intense a project as I'm lead on to believe? :)
(Also note that for things like writing server/client and all that I am very patient and willing to learn from the ground up if necessary)
Networking 3: I hate to ask this but, is it absolutely necessary I do the server code in C++? Some people swear by it and already have the garlic and crosses out when I mention C#, I bet, or is it acceptably capable of doing what I need done? Also, what kind of libraries for networking type stuff would you suggest for the final product? For learning? I keep hearing about IOCP but I'm not finding many resources relating it to C# or .NET in particular.
Database: I am pretty fluent with SQL and managing databases, I was just curious if there is any caveat to using say, MySQL vs. MSSQL Server vs. Oracle, etc. If anyone knows of course.
That's about all I can think of that I'm not 100% on just yet. Again, this is a 2 year in-design project that I'm really just now starting to actually work on writing the code for, starting with the client side and an offline workable graphics demo =). Any and all help/suggestions is greatly appreciated. I'm not going to tout things I can't show for yet, so I'm not about to go into any more detail about the project, or try to hype it until I have something that's actually functional :P
Lastly, and this is optional and more of a Marketting question: If you ever did play games like FFT, Disgaea, OB and all those, would you play an online based game in the same style?
#2
Posted 24 July 2008 - 07:16 PM
What does the S stand for btw?
Obviously, MSSQL Server and Oracle are in a different league than MySQL. I wouldn't feel comfortable making a Massive multiplayer game using MySQL, but for a non-massive one, it would be ideal.
One thing I can say though: You're not in a position to make an MMO yet. You need to at least make a simpler multiplayer game first, to get a feel of what's involved in network games. It is usually an eye-opener for people, especielly the bit about how much your game design needs to be adapted to work in a networked environment...
I don't know how helpful any advice would be, when you say so little about your game.. .But I'd say that no matter how determined you are, the chance of you pulling off a massive multiplayer game is close to nil. So I think you should ask yourself: do you really need thousands of simultaneous players, or would it be enough with just dozens (as in, just a multiplayer game)?
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#3
Posted 24 July 2008 - 07:29 PM
Mattias Gustavsson said:
The S stands for Strategy.
In all honesty I think aiming for just getting a game that can use a network protocol would be a better start, like you said. Think getting maybe 3-4 players connected at a time would be a reasonable starting goal and working from there? At this time I'm not 100% sure I want it to end up as massive, maybe more like an offline game with transferrable characters to lobby-style Multiplayer (though this leaves way too much possibility to "hacked" characters from the client side, doesn't it?) but it would be something to gauge and assess as I work more on the project, I suppose.
The C# thing seems to get tossed around a lot though. Some say it's great for development some will write 50 page essays about what C++ does better. I'm mainly looking to cut down on actual production time if possible, while walking away with as much performance as possible. Where I could probably learn C++ inside and out given about 3 years, by then I think we'll be driving flying cars and using way more advanced things.
#4
Posted 24 July 2008 - 07:40 PM
C# is a nicer language than C++, by far (some will claim that it's not, but they're probably just being irrational :D)
But when it comes to releasing stuff done using C#, it's not very nice. Your players need to download and install the .NET runtime, and I've heard lots of people struggling to get that to work properly. Better to use something like Java then...
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#5
Posted 24 July 2008 - 08:06 PM
Mattias Gustavsson said:
C# is a nicer language than C++, by far (some will claim that it's not, but they're probably just being irrational :D)
But when it comes to releasing stuff done using C#, it's not very nice. Your players need to download and install the .NET runtime, and I've heard lots of people struggling to get that to work properly. Better to use something like Java then...
On the topic of .NET runtime, that's both a concern but I'm not sure. A lot of people use Vista which comes with the runtime packaged in, doesn't it? I can see it becoming an issue from an end user standpoint and for people still using XP that doesn't come with it part of the OS, but also I've rarely heard of .NET being excessively cumbersome to deal with.
When talking Java the only thing I dislike about it is lack of an open source graphics library to the scale of something like OGRE that exists. I believe there is a Java port of it, or a wrapper or something but it's not publically available AFAIK. Also wouldn't it be less likely people will have the Java runtime over .NET?
#6
Posted 24 July 2008 - 08:10 PM
I don't know if Java runtime is more or less widespread than .NET, but I've rarely heard people struggle to install it.
But if you're not too worried about compatibility, go ahead with C# if that's what you feel comfortable with. Sometimes productivity wins over compatibility.
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#7
Posted 24 July 2008 - 08:18 PM
Mattias Gustavsson said:
MOGRE actually, C# wrapper. Works pretty nice so far.
Which brings me back to my biggest question: What would be a solid library to use for a first time network programmer? :S, I hear a lot about IOCP, is this learnable from the ground up for someone that knows a little bit about packets and TCP/UDP?
#8
Posted 24 July 2008 - 08:27 PM
Mephs said:
Wrappers are all well and good, if you're just playing around or prototyping. But to finish off a game to a level where it's good enough to sell (or get a large user base if it's a freeware title) you'll be modifying the engine and you will need in-depth knowledge of its inner working. That is regardless of what engine you use.
Mephs said:
The actual transfer of data is the easy bit. You can get raw sockets working in a couple of days (but I guess there's libraries which wraps it up nicely). The tricky bit is to get your game to work over the network, and that's very much dependant on your game, its design, and what you need the overall player experience to be. There's no clear answer here; it's usually based on the developers experience, and there's not much a library could do to help...
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#9
Posted 24 July 2008 - 09:18 PM
Mattias Gustavsson said:
As you said earlier given the nature (turn-based) I'm imagining this would greatly simplify the server code, as it only really needs to accept some basic signals
Client 1->Sends Command [Player moved Unit A to 32,35]
->Server [Update Unit A's X,Y position in memory]->[Notify Client 2 of the position change]
->Client 2 [Updates Unit A's position on Screen]
Client 1->Sends Command [Unit A is performing Action("Attack") on Unit B]
->Server [Calculates the result and updates Unit B's status in memory]
->Client 1 [Receives a relay from server that the command was OK and is sent the damage or calcs from the server, plays animation]
->Client 2 [Plays an animation of Unit A attacking Unit B and updating it's status]
Things like damage calculation would have to use attributes taken from the SQL Database on the server side to prevent "cheating" from the clients of course, some security things like buffer overflow checks I'm aware of and already kind of put into the "plan", making sure everything checks as synched (to prevent players from attacking far beyond the unit's range, and all that).
Something like that sound about right, at the most basic level?
I think after poking about for a bit TCP would be fine, if it comes down to it in the long run though, if there's multiple "instances" of these kinds of battles going on would I want to use asynchronous and non-blocking...or that kind of thing? (Sorry, not very clear on the terms, just the concepts :D)
#11
Posted 25 July 2008 - 06:50 AM
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#12
Posted 26 July 2008 - 01:56 PM
I also would like to try to answer your questions about programming of your MMO game. As advanced proffessional programmer and also experienced player of MMOs(L2, WoW, Ragnarok, Age of Conan, Ultima Online etc...), I think I can answer some of the questions.
Language: Well, I think it is possible to make MMO using C#, some of advanced game engines like Ogre3D have C# trunk or at least port to C#. But to say truth, I would rather use C++ language. First point is, that it is a bit faster than C#. Second is that C# is just Microsoft's derivation of C++, so it means, you cannot port the game to other OS like MacOS, Linux/Unix ... and you cannot use as much functions like with C++. Third you do not need any other additional packages for programming or executing(.Net framework), sure except OpenGL or DirectX SDK, network libraries etc. There could be lot of other reasons why to use C++ instead of C#, but it always depends on the way, how you want to make the game.
Database: Choice of database always depends on the data load and transfer rate. MySQL is database mostly for small or medium data load. It is easy to install and maintenance, thats why its so popular for amateurs, web creators and beginning programmers. But I think, it would not be very good choice for MMOs, where there are transfers of huge amount of datas, multiple tasks and transactions at the same time etc. I would use Oracle or Sybase database, MSSQL is not very good at all and also not supported on other operation systems(most of worldwide MMO game servers are using Unix system, not Windows). It also depends on the amount of money, you want to spend on your project. When do you want some freeware database, then you can use in example PostgreSQL, which is a bit more advanced than MySQL.
#13
Posted 28 July 2008 - 08:03 PM
Zvejkus said:
I also would like to try to answer your questions about programming of your MMO game. As advanced proffessional programmer and also experienced player of MMOs(L2, WoW, Ragnarok, Age of Conan, Ultima Online etc...), I think I can answer some of the questions.
Language: Well, I think it is possible to make MMO using C#, some of advanced game engines like Ogre3D have C# trunk or at least port to C#. But to say truth, I would rather use C++ language. First point is, that it is a bit faster than C#. Second is that C# is just Microsoft's derivation of C++, so it means, you cannot port the game to other OS like MacOS, Linux/Unix ... and you cannot use as much functions like with C++. Third you do not need any other additional packages for programming or executing(.Net framework), sure except OpenGL or DirectX SDK, network libraries etc. There could be lot of other reasons why to use C++ instead of C#, but it always depends on the way, how you want to make the game.
Database: Choice of database always depends on the data load and transfer rate. MySQL is database mostly for small or medium data load. It is easy to install and maintenance, thats why its so popular for amateurs, web creators and beginning programmers. But I think, it would not be very good choice for MMOs, where there are transfers of huge amount of datas, multiple tasks and transactions at the same time etc. I would use Oracle or Sybase database, MSSQL is not very good at all and also not supported on other operation systems(most of worldwide MMO game servers are using Unix system, not Windows). It also depends on the amount of money, you want to spend on your project. When do you want some freeware database, then you can use in example PostgreSQL, which is a bit more advanced than MySQL.
Funny you mention PostgreSQL, I was JUST looking up information on it when I saw your response about 30 minutes later.
ATM I'm really just designing the offline components, namely the rendering and all that. Here's a brief camera/sprite facing demo, was mostly just getting my feet wet with MOGRE and integrating Managed DirectX components in C#
http://www.sjfweb.net/Iso2.avi
#14
Posted 29 July 2008 - 02:27 AM
Your expectations are very reasonable, and you seem to have a good footing
best of luck,
onyx
#include <arcade>
#include <computer>
#include <drinks>
#include <hardware/high_end>
#include <snacks>
#pragma <responisiblities>
...........
#15
Posted 30 July 2008 - 05:21 AM
Mephs said:
ATM I'm really just designing the offline components, namely the rendering and all that. Here's a brief camera/sprite facing demo, was mostly just getting my feet wet with MOGRE and integrating Managed DirectX components in C#
Well I was working in Postgre on some smaller projects, so I can say it is not bad database system, just I think it is slower than Oracle and Sybase when using big amounts of data.
To your avi, it is very good for beginning.
When I saw that video, my first idea was, that you should think out how do you will solve the area transferring. Some of games like ragnarok use small areas with ports on sides and level based dungeons. Modern MMOs like Age of Conan or World of Warcraft use limitless terrain using some kind of paged geometry and ports are use only when you enter dungeons, houses, travel to islands etc.
Ogre framework itself is pretty advanced and complex engine with lot of add-ons, so you chose very good. I didnt tryed MOGRE, just the regular C++ one, so I cannot say the quality of the MOGRE, but I think the community is quite big, so you will be comfortable with that.
#16
Posted 30 July 2008 - 08:12 AM
Zvejkus said:
One thing that concerns me about OGRE is that it's difficult to find finished commercial games done with it. Anyone know of a game which is done in OGRE and is out for sale? That would be cool to hear about.
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#17
Posted 30 July 2008 - 01:35 PM
Mattias Gustavsson said:
Well, when I was shopping, I saw Ankh in example. It is animated adventure game situated in Egypt. If I remember, authors used something like 2D/3D combination. But there is one fact, I am sure of, it was made using Ogre. You can also see this game in Ogre's gallery -> Featured projects.
Well as I said before, it all depends on how much money the person or team wants to spend on the project. Sure most of current successfull games does not use Ogre, Blender or in example Torque(commercial engine), they use Unreal engine 2.5-3, Gamebryo or other commercial hi-end engine + Speedtree for nature and foliage. But they are very expensive for most people, their price is about $100k-500k. So if you do not want to spend money till you are sure how your game will look like, what features will you implement etc. or out of money, i recommend you the Ogre, it is the best freeware engine. Or you can buy in example Torque or TV3D, both look not very bad, there is some support and the price is about $200-300.
#18
Posted 30 July 2008 - 02:06 PM
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
#19
Posted 30 July 2008 - 07:20 PM
Mattias Gustavsson said:
You probably won't see large commercial titles using Ogre because there -are- better engines, and in today's cutting-edge world usually only the best will do. The ones that are revered usually have people who write the engine from scratch too.
That being said, OGRE is an incredible engine, for the price (FREE!), so if you're just a hobbyist game developer then it's got the power to produce a commercial quality product, but as said, there's way more powerful engines that do a lot of the work for you, whereas OGRE requires a bit of mumbling around in it to get the same results. And to a large commercial game company what's a few hundred thousands for top notch quality in a competitive industry? :)
Anyway OGRE can do some amazing things (if you've ever seen the PagedGeometry demo, this is a good example of just what it can do), rendering thousands upon thousands of trees, foilage elements, etc and still running at 3 digit FPS consistently is pretty hot. I've seen quite a few amazing looking projects in there myself.
Quote
Travel would be very static, I'm not sure how to handle it just yet, maybe make a distinguishing factor between "Traversable" maps and "Combat" maps which use the tile layout:
Here's some new stuff I'm working on in the actual game engine:


Basically takes any 3d map you want and maps a tile system to it for obvious purposes later down the line. That includes calculating height of each tile for use in things like combat (height advantages), It's not fully implemented but I just wanted to put out a tech demo: http://www.sjfweb.net/Iso3.avi shows the tile selection and path calculation from a selected tile. I think next I'm going to see if I can get the Pathfinding algorithm that figures out movement through certain terrain types, and around other objects. Determining whether a unit can move to a tile (too high, it's untraversible terrain, like quicksand, etc).
It's taking a while mainly because I'm still getting my feet wet and haven't really written code for about 5 years (since college) so I'm slowly getting faster at it. Would like to put out a full working tech demo (playable game) before I start looking for other people like artists or other programmers.
#20
Posted 30 July 2008 - 07:58 PM
Mephs said:
Oh, I was just referring to small commercial titles, as in smaller indie games. There doesn't seem to be many of them using OGRE, while there's a bunch of them using Torque. Which makes me wonder if OGRE is up to the job?
It's a huge difference between getting a playable version running and finishing something to a sellable level...
- www.mattiasgustavsson.com - My blog and current projects
- www.rivtind.com - My Fantasy world and isometric RPG engine
- www.pixieuniversity.com - My Software 2D Game Engine
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users












