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.

Dark GDK / Commercial MMO?

Author
Message
tehg00n
15
Years of Service
User Offline
Joined: 4th Jan 2009
Location: Ohio
Posted: 4th Jan 2009 16:42
In collaboration with the Directx 9 SDK, and DarkGDK. To be 100% honest, is it powerful enough to code a commercial MMORPG in? This is SushiBox by the way, idk if anyone remembers me.

But I got a commercial deal to start developing a 3D MMORPG and was wondering am I going to screw my boss over by choosing DarkGDK in the long run?

I do plan on using Directx 9 SDK for more advances rendering techniques and RakNet for a sophisticated networking library. Don't try to sell me DarkGDK in this post, I need your 100% honest opinion. Only post if you are 100% sure what your saying is correct. This is really important.
Cyborg ART
17
Years of Service
User Offline
Joined: 14th Jan 2007
Location: Sweden - Sthlm
Posted: 4th Jan 2009 18:54
I think its possible to combine C++ and Dark GDK, wich I guess makes it a powerfull choice, but to be honest I dont know

AndrewT
17
Years of Service
User Offline
Joined: 11th Feb 2007
Location: MI, USA
Posted: 4th Jan 2009 19:02
Well...it's possible...

But if you have the skill and determination to make an MMO then you should probably be using a much more advanced engine. First off DGDK does not natively support OOP of any kind, so you'll have to get a wrapper such as jason's. DGDK also is not cross-platform, and if you're really planning to develop a commercial game cross-platform compatibility is important. Furthermore DGDK is not nearly as fast as most other C++ game engines, and once you add in networking, several dozen players and some decent art it'll barely run on a typical PC.

Anyways from the sounds of things, by the fact that you've signed some kind of commercial deal you are probably skilled to the point where you're going to benefit a LOT more with a different engine.


sydbod
16
Years of Service
User Offline
Joined: 14th Jun 2008
Location: Just look at the picture
Posted: 5th Jan 2009 00:39
I see no reason why it would not be totally possible.

The problem is not one of "Will it play on a players machine".
What is known:
1) a current bottom end CPU can support over 200 players active in the one area.
2) you do NOT require AI, since the players control their own characters.
3)since it is a MMORPG, you only have a very small area of your game visible at the one time (so a medium capable Video card is enough .... eg: HD 4850)
4) from one of the podcasts, it was demonstrated that it is easily possible to download terrain (and I believe objects) on an as-required basis, as the game is running.
5) Although there are faster rendering libraries out there, does you team have the resources to create so much high detail material, that a faster engine is required?

Your challenge will be the networking on the multiple-server side. This side has nothing to do with DarkGDK.

In most cases it is the ingenuity of the programmer that is more important than the game library.
tehg00n
15
Years of Service
User Offline
Joined: 4th Jan 2009
Location: Ohio
Posted: 5th Jan 2009 02:01
What do you suggest? The skill and resources or even money is not an issue. However I dont wanna use like unreal engine.
jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 5th Jan 2009 03:27
Yeah - DarkGDK can do a MMO... So Can DarkBasic, So Can Blitz Basic, BlitzMax, LeadWerks, and a bunch of others.

I think DarkGDK is one of the better choices for a low-budget game engine because of the forums, the dx9 support, the fact that you're in C++ (or .net) which makes other technologies and libraries readily available... DarkBasic Pro is pretty slamming too - but writing plugins to get things to jive is harder IMHO than just including a header from a C++ lib and calling the functions you need. However when you have the plugins you need in DarkBasic that extend it how you need - its fine too.

I recommend windowed mode for lost-device-context considerations, full screen takes special considerations for ability to ALT-TAB to windows desktop and then go back to game.

The closest one I've seen so far is the Geisha project that is on the WIP... but I haven't checked in on it lately... Port Royale is pretty close too.. But don't let other's screen shots limit ya - because media is media - game is game - and LOL DarkGDK Got Game!



--Jason

pirogoth
16
Years of Service
User Offline
Joined: 6th Apr 2008
Location: Good Old California
Posted: 5th Jan 2009 06:20
Is the DarkGDK capable enough of a framework to write an MMO? Yes. Would you really want to? Probably not.

I'd have to ask what your budget is really. Depending on your budget, there are a few engines around already that WILL save you both time and money. If you have a small budget, look into the Torque Game Engine as there is an MMO conversion already written. You'll have to heavily modify it, depending on your concept and needs, but it'll make your life a lot easier. It's roughly $150 (USD) per developer.

The other cheap option to look into is the Planeshift game/engine. Be aware, the engine and game are under the GPL, so any changes to the code would have to be released to the public (but not your content). This could potentially be a legal and maintenance nightmare. This isn't a recommendation, so much as an option.

Now if you have a fairly large budget, look into both the HeroEngine and Multiverse engine. These are fairly expensive. While the costs are undisclosed, I'd venture they cost more than a years worth of pay (likely over one hundred thousand dollars). While expensive, keep in mind this will likely save you two years of development at MINIMUM. Of the two, I'd recommend the HeroEngine purely due to personal preference.

There are plenty of others, but these seem to be the more common engines around. I'd personally recommend the Torque Game Engine if your team has significant experience but a low budget. I would not recommend using the GDK. It has some rather serious bottlenecks in the rendering code. Also due to it's object indexing system it's going to make paging terrain and other objects very difficult to manage.

-Piro
sydbod
16
Years of Service
User Offline
Joined: 14th Jun 2008
Location: Just look at the picture
Posted: 5th Jan 2009 06:36
I can not speak from personal experience but there appear to be enough negative comments floating about the net dealing with the Torque Game Engine that one would want to do a bit of pre-testing with it before committing a development team to use this engine.

I suppose the first important questions are:
What is the proposed budget
What is the proposed time line
What is the proposed quality of the graphics resources to be used.

Sometimes it is better to stay with the devil you know, if you know it will do the job.
I would also suggest looking at the "Leadwerks" engine if you can afford the time and effort to look at it because of the great support one gets from the development team.(no I have not personally tried it, although i dearly would like to try it, but the AU$250 odd cost is too much for me)
Although I detest working in OOP, and it is significantly slower, you may also seriously look at XNA.
Zuka
16
Years of Service
User Offline
Joined: 21st Apr 2008
Location: They locked me in the insane asylum.
Posted: 5th Jan 2009 06:42
No! Multiverse is horrid! It's in Java, and all the tools suck!
pirogoth
16
Years of Service
User Offline
Joined: 6th Apr 2008
Location: Good Old California
Posted: 5th Jan 2009 10:21
@sydbod: First let me say that I do own a license for the Torque Game Engine. I agree, there are a lot of negative comments about the TGE. Some of them are legitimate. For example, if you do not purchase the book along with the engine you'll find that the documentation is horribly lacking (though, honestly it's far better than the DarkGDK's documentation). Another example is some of the starter kits for TGE (the RTS starter kit for example) are still for sale, even though they were for a previous version of the TGE. While they can be made to work, the marketing is incredibly misleading and hardly a show of good faith.

However having used the engine for two years now, there are a few trends I've noticed about most of the negative comments. A lot of people, not having a clue what they are talking about, recommend the engine when it's a Bad Idea(TM). There are certain requirements to use the engine. You have to be fairly proficient in C++ despite what the website says. It also is not designed to do everything under the sun. And no, it's not a drag and drop game maker. I receive at least one e-mail a week with people complaining that the engine is too hard to use. The kicker? When I ask if they have any programming experience the answer is almost always "no" (for the record, I do not work for, nor am I affiliated with, Garage Games).

I have several gripes with TGE as well, all of them have either been corrected, or easily fixed. It's a general engine with a default configuration designed for FPS games. The engine is very modular and to be honest, has some of the best networking code I've ever seen.

If you have a reasonable level of experience, Torque is a viable option. Just make sure it has the feature set you need. If you have any questions about it, feel free to ask me on the forum or e-mail me at btaylor@fuzzylogicstudios.com.

@zuka: Why is Multiverse horrid? The tools may suck, as I've not used them. However they seem fairly straight forward. It requires programming knowledge.

As for Java being an issue...I think you might be slightly misinformed. Java excels with server code. It's one of it's biggest intended uses, and for good reason. The JVM is JIT'd and runs incredibly quickly (provided you stay away from the SWING library's...but that's another issue.) And yes, I hate Java but it's usage in this context makes a lot of sense.

-Piro
jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 5th Jan 2009 13:50
@Pirogoth-
Quote: " I would not recommend using the GDK. It has some rather serious bottlenecks in the rendering code"


Yeah - stays at 60fps? But with a little work, you prevent this from being a bottle neck currently, AND they are about done with a merge to the same code base core as DarkBasic (So I'd expect this "CAP" to be exceeded. I got 1300fps yesterday from DBPro making a two object gravity demo)

Quote: " Also due to it's object indexing system..."

I'm having trouble understanding this statement. I'm not necessarily disagreeing here BTW - just need clarification.

My reason for bothering to say anything is that I made what is often called an "Object Factory" in my JGC library wrapper for DarkGDK, and the way it works is you hand it a "StartingID" and "EndingID" as the range of valid ID's it will use - so you can mix my JGC stuff with existing code and not have ObjectID issues due to "your system" and "JGC" system getting in each other's way. I've done some pretty crazy benchmarks and frankly - my FPS have always been a direct result of the scene and how efficient the rendering optimizations I code are. In short, I usually get decent results... though capped around 60-70 FPS like the first quote above.

Additionally, like the "use the devil" comment - there are more pro's to DarkGDK than con's... I'm the first to complain that softshadows are an issue - but then DarkCoder told me that I just need to find the right shader and I'll get something decent... with a little work he emphasized. (thanx DC - gonna try soon)

The other complaint I have is how the lost device context is handled. This can be remedied to some extent by coding your objects so they "know" their own textures filenames, mesh file names etc.. and if the display gets trashed (Fullscreen game -> ALT-TAB to desktop -> ALT-TAB back to game) you can force your objects to go through their loading sequences again to rebuild the content. I also will say, after having done the equivalent in DirectX9 directly... that this is still WHACK because in DirectX you can choose WHERE object info goes - in PC RAM, Shared Video Ram or Video RAM... If you elect the first two... you just "Tell DirectX" where they are again like when you start your directX APP and no reloading... only objects kept 100% in video ram need a reload - DarkGDK needs it all reloaded... so this is a valid sore spot.

On the flipside - I've seen DBPRo SORTA handle this - where 8 out of 10 times - no issue - and if they (TGC) is bringing the code base for dbpro and darkgdk together - that this "better" behavior will hopefully make it's way to DarkGDK - along with the uncapped FPS

I'm NOT saying DarkGDK is the Best tool for an MMO - and I think its definately not the worst... I'll be the first to say what ROCKS and what stinks - sometimes too liberally forgetting people have feelings like me - and are developers like me - but I'm pretty blunt usually - my point is I'm not a fan boy in a blind faith sorta way - but more a: It works, its intuitive, you can do many directx things directly while working with it, shader support is pretty neat and improving (some fancy stuff for rendering targets sounds like its getting beefed up)... Um... I wouldn't kick this puppy to the curb myself.

@SysBod -
Quote: "Although I detest working in OOP, and it is significantly slower, you may also seriously look at XNA. "


LOL - I SO understand how you feel! My only comment is I get a feeling of "DUH" when I look at XNA... I think Microsoft has a way of making this MORE DIFFICULT when they try to dumb it down!!! (Or I'm daft... a very real possibility)

Example:

1: DirectX 9 RAW - Hard? Yeah - once I started slamming it - it kept making more and more sense like DBPro and DarkGDK did. All the DirectX 9 demos though - AREN'T written using DIRECT 9 directly!!!! They all use ... (icky) DXUT (Direct Utility)

2: DXUT (DirectX 9 Utility) - This "Wrapper" has a feature list to druel over - buried in there though is such an abstraction that now media is done differently, the devices you can control in directx 9 like multivideo cards = one display or one card = multidisplay? GONE... all the stuff you do for DirectX mesh manipulation? Wrapped... By the time you understand what they did (not like they gave a choice - see point 1) you realize they coded ya into a BOX before you even started!

3: XNA - They tried - they tried - their goal was their hardware I think - but this thing is peculiar too - and the more I looked at this the more I got vertigo - the hardware is limited to a fixed "spec" and although I see the value in this sort of idea - I can not digest adopting such follow for regular PC development. If your goal is PC + XBox - I suppose its the only way to fly.... but back to DarkGDK...

4: Managed Direct X - YEAH!!!! Microsoft did it! They wrapped DX in a way everyone from advanced to newb can get some results!!!! Then they dropped it - never to support it again... They seem bent on sticking with the convoluted junk.


It's worked pretty much the same way for awhile - same with DBPRO - sure changes and improvements along the way - but you really can master something when every 6 months its not gone through a 100% change to commands, support, etc etc.


Well - I'll hush now.

--Jason

AlexI
19
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 5th Jan 2009 14:19
Intrestings posts

Quote: "Yeah - stays at 60fps? But with a little work, you prevent this from being a bottle neck"


How did you get round it?

pirogoth
16
Years of Service
User Offline
Joined: 6th Apr 2008
Location: Good Old California
Posted: 5th Jan 2009 15:49 Edited at: 5th Jan 2009 15:52
@Jason: I'm actually not talking about the sync rate issue. The rendering code in the GDK itself is incredibly slow in comparison to even XNA. The testing I've used to verify this is taking high poly models (current gen polycounts around 15k) and loading three or four into the GDK along with their corresponding shaders. The SPF* (seconds per frame) is roughly four times that of the exact same scene and setup in XNA, Irrlicht, Ogre, etc. Keep in mind I also have a physics engine and such in my non GDK pipeline so it's doing roughly the same amount of non rendering processing as the GDK.

Don't get me wrong, I like the GDK and use it for prototyping and such. That's why I bought it. If you're looking for quality (in terms of polycounts and shaders) around the level of WoW, I think the GDK would work for an MMO (again, add two years of development time). However if you're looking for polycounts and shader use on the same level of Crysis, UT3, Warhammer Online or Tabula Rasa, I'd look elsewhere as the GDK isn't currently capable of processing that much data at once. At least not in a reasonable time frame.

---

As for the object indexing system, a lot of what I know is merely guesswork as I don't have the source code to the GDK. However, if they are smart (and I have every reason to believe they are), there are a few logical assumptions that I think are safe to make.

Since you've made an object factory very similar to my own I won't go over how objects are used as you obviously already know. Since all objects (camera's, sprites, images, mesh data, etc) are all indexed they are obviously held in some sort of look up table. Obviously it's not an array, as that would have to be recreated and all items copied over each time an item is added or removed. I'd also venture they are not using an std::vector as that, according to the standard, uses an array internally and gives the same issues.

Obviously they are using some sort of tree to hold the data. Now, I doubt they are using a scene graph*, as it's fairly obvious to me they are using the default culling methods built into DirectX. We do know they have support for BSP tree's, but that is treated as a single node in whatever larger tree structure they are using. It's possible they are using some sort of hash table, but with the way the system works and with the large number of possible indexes I'd think this approach would have a lot of clumping issues.

Now that leaves two logical tree structures they'd use. A linked list, which is a long, linear seek time. I'd bet they are using a BST (Binary Search Tree) as that's the quickest way to search for items. The only issue with this is if the developer starts adding objects and increments the index by 1, all nodes created will be added on the right side of each child node. What does this create in practice? A linked list giving you a linear search time. While this will theoretically be sorted out as items are created and destroyed, in practice once a level or scene is loaded, items are not loaded and deleted too often. While this may still be slightly better than a linked list...the difference is going to be largely insignificant as the seek time will be almost completely linear.

As a developer using the GDK, there's not much you can do about this. This is where the GDK's biggest bottleneck is. It's the big trade off TGC made when creating the GDK. It's easy to use as the consumers don't have to deal with all the object management and rendering code. It does however significantly slow the rendering and processing code, at least in comparison to other techniques that could be used if the consumer were able to manage the data themselves.

Add that the GDK is not a thread safe library, making paging terrain impossible without lag as loading a new section or area would halt the rendering and processing routines until each object in each area is loaded. The same issue occurring when an area needs to be unloaded. With this in mind, the GDK suddenly becomes a poor candidate for an MMO project with few or no loading screens.

If my assumptions and deductions are correct, I have to say TGC's decisions in regards to the GDK's implementation are reasonable ones. It is in fact an easy API to work with and most game ideas can be implemented reasonably with the API.

I know I talk badly about the GDK now and then, but that's usually when it's being used in a way that might not be appropriate. Afterall, I use the GDK myself so I obviously do like the API.

-Piro

*SPF: I personally find the FPS benchmark rather pointless as that's rather video card dependent. SPF takes into account how long it takes to send the data to the video card as that's far more important.

*Scene Graph: Broad term as I'm sure you know. For the sake of deduction, I'm specifically talking about a tree with each node having any number of leaf nodes.
tehg00n
15
Years of Service
User Offline
Joined: 4th Jan 2009
Location: Ohio
Posted: 5th Jan 2009 16:22
Thank you very much for all of the information. But another one of my questions was that if I used DarkGDK, and lets say I needed a different way to render something, could I directly use the Directx 9 SDK in collaboration with DarkGDK? Are there any known capatibilty issues with linking?

How much could the framework be improved?

This is going to be a major project with major funding. Although most will go into paying developers/artists on a salary base. We are currently located out of an office and I am leading development.

As for graphics and etc, we are planning a WoW style game, similar poly counts and shader usage. Im not saying the game will be the same at all, just to use as an example.
sydbod
16
Years of Service
User Offline
Joined: 14th Jun 2008
Location: Just look at the picture
Posted: 5th Jan 2009 16:47
This has all been very interesting reading, but maybe we are getting a bit off topic here.

It is not just the game engine and the used code that can significantly impact on game speed. Things like the order position of a mesh with regard to the other meshes inside of an *.X object determines the rendering order of the parts of an object.
So far I have not seen a model buildup that I would consider to be "speed rendering" optimized.

It all comes back to the question of the specification of the proposed project. What graphical complexity is required. What expertise exists within the development team is the key questions (not just the programmer).
Basically almost any one can make a Ferrari drive slower than it is capable of, but very few people can make a standard car perform at its peak capability ........... you should see how slow I can make that Ferrari go
jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 5th Jan 2009 19:05
@Piro - Wow - Good Stuff

@tehg00n - It's your call. The most FRUSTRATING thing in making a new project is selecting technology IMHO. Sometimes I think writing Raw directX 9 is the way to go... honestly - you get 100% render control, you can draw on whatever surface you want, full control of pipeline pretty much, speed not an issue... but you got to make your media management smart - with ability to dispose/reload/reinit as necessary when the device gets trashed. It's not so bad. For me the TRANSFORMS are THE ISSUE... I need some more study there and bought some major books on these matters... Quaternions are the other thing... but I digress...

@sydbod - Your point is well founded for perhaps drifting off the main focus here - but its all a good read - and I think good that tehg00n sees the good the bad and the ugly.. all systems have good bad and ugly.

@AlexI - with regards to things I CAN'T CHANGE like Piro has brought up for bottle necks - what I CAN do is ONLY render 60 FPS ... so if my GAME CODE comes around, and 1/60th of a second hasn't elapsed - I spin through my game code again.... This is so my game runs (hopefully) smoother, using whatever CPU it can without "WAITING" for the next render to "go". I will be forced to do some benchmarks on this technique though - as I need to make sure (after reading Piro's post) its still doing what I think... and that is "Throttling" the game loop... I haven't been under the impresseion the render is so slow as much as the fact it seems to "STOP" things until "It likes the timing" but I could be way off.

@Piro - I'm curious how you measured the SPS or whatever ... and I think the linked lists are generally slower than straight up arrays (from tests) and the b-tree style of things only seems to make sense if you don't have a good array system in place... I mean NOTHING is faster than an array - but SEARCHING a contiguous array can be a problem. Making an index system like a database (indexed/indirect) addressing in memory - you can't get much faster... and in my directx experiments - this is FAST as HECK ... but Searching through a mile long array is not cool - and deleting objects - Well - I won't go into it - but there is a method to optimizae that sort of thing, and opportune times to "clean up" the "Holes" if you know what I mean... Ok... Onward - I'm busy working on a physics engine...

jezza
16
Years of Service
User Offline
Joined: 8th Mar 2008
Location: Bham, UK
Posted: 5th Jan 2009 20:20
I don't think the real problem here is rendering API, and why not OGL, ppl? In an MMO its all about the client/server work. IMO GDK is good enough if you don't mind the graphics and want it easy, but i'd do it in DX raw or DXUT if it was my job.
pirogoth
16
Years of Service
User Offline
Joined: 6th Apr 2008
Location: Good Old California
Posted: 6th Jan 2009 08:17 Edited at: 6th Jan 2009 08:18
@Jason: Seconds Per Frame is a better benchmark. It tells you how long it takes to render a frame, rather than how many frames you can render in a second. Gives you a general idea of how quickly your code is running, or in a minimal example in regards to the GDK, how quickly the GDK's internal event loop executes. This is one of those things that has been discussed to death on gamedev.net, and I highly recommend looking on their forums for information regarding SPF vs. FPS as there is a lot of in depth analysis that has been done and I'm sure you'd find very interesting. I know I found it interesting.

----

As for arrays and speed, keep in mind that speed is relative. Arrays don't have a speed. Arrays are nothing more than a pointer to a contiguous set of data that you can access via an index that's used as an offset. It's what you do with it that determines it's speed.

Arrays and (singly/doubly) linked lists have relatively the same search speeds. Each node or index has to be accessed in order or sequentially and checked. For small data sets of a couple hundred simple objects, this is fine. Anything larger and you are far better off using different methods.

BST's are an excellent option when searching for something with a key that happens to be an integer. Start at the root node in the BST. If it's the key you're looking for, return it and you're done. If the key your looking for is larger, move to the right node and repeat the process. If it's smaller, move to the left node and repeat the process. On a data set of a million elements, it brings your search down to a mere 20 comparisons.

Now you can use an array for a BST, however every time you do a search, you have to sort the array. On a million elements on an ideal data set (which never happens in practice), this is a minimum of a million comparison checks on the array, before you even start searching for your element. You can keep the array sorted to begin with, but every time you add or remove an item, all items in the array are going to need to be shifted up or down to accommodate for the new or removed data. Worse, as the array grows you're going to have to resize it. That means creating a new array (likely twice as long to minimize how often you resize the array) and copying all the data from the old array, to the new one. On a million elements? That's not a short amount of time. That is if you even have a free contiguous memory block to store a million elements. Memory allocations can and DO fail.

All that said, and considering the possible number of GDK objects that can be allocated, an array would be a very poor choice due to search times and memory constraints.

But there's another way. What if you were to create a BST structure.



Same concept as a linked list, just with two possible children instead of one. Searching is identical to what I mentioned earlier. Start at the root node in the BST_Node structure. If it's the key you're looking for, return the data and you're done. If the key your looking for is larger, move to the right BST_Node and repeat the process. If it's smaller, move to the left BST_Node and repeat the process. You can add and remove nodes, using the same searching routines, keeping the BST_Node structure sorted at all times with minimum overhead and at a superior speed over a standard BST style array.

The problem with this approach in regards to the GDK is that most people will add items to the BST list sequentially starting at a low index. If you add items with a key/index of 10-20, in order, you'll end up with a BST with nothing but right nodes, all left nodes pointing to NULL. What does this create? A standard linked list in practice. In effect the only two benefits to this is far less overhead when adding or removing data, and that as items are added and removed the BST structure will even out over time. As the structure evens out, your search times can only improve over time. In the end, there isn't a whole lot of trade off. In this particular case you'll get faster inserts, deletions and seek times over a traditional array as your data doesn't have to be constantly copied around, merely the pointers need to be changed. Pointer manipulation is incredibly fast.

It's very possible the GDK does use an array for object storage (be it an array of pointers, or an array of the data itself. An array of pointers to objects removes the seek time issue, but still has the issue of a dynamic array. Data needs to be copied into a larger array. As the array grows, the slower this is. In truth this would explain some of the lag issues when loading content in the GDK. It's still not a very good implementation. I'd put my vote on some sort of tree structure, BST's being only one potential example they could use.

The truth is, unless we get our hands on the source code, or run the assembly through OllyDBG or IDA this is all guesswork (which in most cases is illegal depending on where you live). But I have to say, guesswork or not, I love puzzles. This makes excellent grounds for discussion of current methods and a great testbed for new ideas. Contemplation, discussion, dissection and brainstorming like this should be encouraged and I'd love to see it more on this forum!

-Piro
jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 6th Jan 2009 13:27
Thanx for sharing your sorting know how - I'm sure it will spark some curious developers after speed.

Speed drives me alot. I'm personally pretty enthusiastic about these sort of things and am pretty knowledgable in this area. Iterating through arrays is faster than linked list overhead (which still is slight). Now being able to optimize searching with various search/sorting algorythms is a very interesting topic - and there are some pretty crazy algorithms out there. All favor a certain "best case" and "worst case" and the puzzle of it all is a real (often fun) Mind teaser.

The first one I learned was the bubble sort - though I didn't know it was a bubble sort. I was still a young'n and when I was showing this old timer what I did - he enlightened me to a few different algorithms - one where you (same as bst sort of) halve your data set and keep splitting/halving your results and deciding greater than or less than.

When I saw that a bubble sort N * N iterations went to hardly any - my interest was peaked.

After years of working with databases and making many "memory based" data systems... I really am a fan of indexes for this kind of thing... because you can apply all these kinds of sorting algorythms, on various search fields and combinations of them - while leaving the core data storage mechanism intact and tailored for what is best for that. Example... Linked lists are AWESOME - and if you use them for the main data set - while using smart lists (like BST) on the various indexes - than I find that makes the system and experimentation very modular.

It's a bit more work - making actions that happen on the main data set cascade to "maintain" the index(es) you are using for the the quick search technique(s) you're using but - I find this approach has treated me well in the commercial sector.. I'm basically employing techniques used in most relational databases - with a twist or two here and there.

I admit I have to be pretty motivated to sit down and write these kinds of systems - but EVERYTIME I have, the speed gain in the end was WELL WORTH IT!

I too enjoy these kinds of discussions and can sometimes geek out quite a whlie on it (some days I run LOL)

--Jason

entomophobiac
22
Years of Service
User Offline
Joined: 1st Nov 2002
Location: United States
Posted: 6th Jan 2009 16:48
Furthermore DGDK is not nearly as fast as most other C++ game engines, and once you add in networking, several dozen players and some decent art it'll barely run on a typical PC.

This isn't a statement I'm inclined to agree with. Not that I've personally done that much 3D with any TGC product, I know that speed and capacity comes down to the individual developer more than the software framework.

And the "cap" on 60 FPS isn't much of a "bottleneck," as someone phrased it. There's a difference between real FPS and actual FPS. And a huge amount of difference between 59 and 60 compared to 1200 and 1300. Besides, the focus should always be on whether a game is FUN or not -- the faster, prettier and more expensive games will always be made by studios of 100+ people out of boring practical reasons.

And as to the question whether DGDK is up to the task, I prefer the usual answer to the ever-returning "can this/that make an MMO:" NO it most definitely can't. But you may be able to make one, using it.
Michael P
18
Years of Service
User Offline
Joined: 6th Mar 2006
Location: London (UK)
Posted: 6th Jan 2009 21:35
When answering this question the graphical capabilities of DarkGDK are not really relevant. The real issue is networking which you will have to do without DarkGDK.

DarkGDK is capable of dealing with the graphics on the client side. I will say however that I believe DarkGDK to be very slow compared with other options available; it makes up for this in ease of use.
AndrewT
17
Years of Service
User Offline
Joined: 11th Feb 2007
Location: MI, USA
Posted: 7th Jan 2009 00:24 Edited at: 7th Jan 2009 00:24
Quote: "This isn't a statement I'm inclined to agree with. Not that I've personally done that much 3D with any TGC product, I know that speed and capacity comes down to the individual developer more than the software framework.

And the "cap" on 60 FPS isn't much of a "bottleneck," as someone phrased it. There's a difference between real FPS and actual FPS. And a huge amount of difference between 59 and 60 compared to 1200 and 1300. Besides, the focus should always be on whether a game is FUN or not -- the faster, prettier and more expensive games will always be made by studios of 100+ people out of boring practical reasons."


Well speed might not be that important at first, but I was just saying if your really going for a commercial MMO rather than just a little freeware indie game or something, speed is going to become pretty important. Sure DGDK will offer playable framerates for a smaller online game but when it comes to commercial MMOs I think most would really benefit if a more suitable engine was chosen.


entomophobiac
22
Years of Service
User Offline
Joined: 1st Nov 2002
Location: United States
Posted: 7th Jan 2009 12:31
MMO in the sense most people mean it are by no means "massive." Handling 30-40 players in a single instance in what essentially comes down to a turn-based number cruncher isn't as hard on the hardware as on the Internet connection and server software.

Admittedly, you'd have to be very good at handling servers, databases and Internet traffic in general, not to mention security, but it has little to do with what engine you're using to wrap DirectX. Because when it comes down to it, that's all the DGDK is -- a DX9 wrapper. And a free one, at that!
AlexI
19
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 7th Jan 2009 15:30
Quote: "that's all the DGDK is -- a DX9 wrapper"


True, but its not really a fast one. But its still good I use it....

bkinsman
17
Years of Service
User Offline
Joined: 30th Jan 2007
Location:
Posted: 7th Jan 2009 18:04
Em...just to point out here, DarkGDK i would have thought would be able to create a brilliant MMORPG seening it uses Microsoft Visual C++ to compile, which apparently is better at compiling than a lot of others,(don't hold my word on that though cos i don't know a huge amount. )

Have you thought about looking into Realm Crafter Pro? The entire engine is there for you and everything is set up already, you have a terrain editor, script editor etc. most of the basic stuff is included with it. TGC sell it so have a look as it is dedicated to making MMORPG/MMO's it doesn't have to be mmorpg because if you get hold of the source code you can edit it and modify to how you want. Good luck with your project.

BJKDAW
AlexI
19
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 7th Jan 2009 18:14
Quote: "DarkGDK i would have thought would be able to create a brilliant MMORPG seening it uses Microsoft Visual C++ to compile,"


C++ is fast, DarkGDK is a library of functions. The speed of library is depended upon its creators. TGC

Xsnip3rX
17
Years of Service
User Offline
Joined: 20th Feb 2007
Location: Washington State
Posted: 8th Jan 2009 09:14
I hate everyone single person in this thread that had to make a bookpage post, im trying to read a thread before i go to bed, i scroll down and jesus, it's like the freaking DBP Bible in here. Good night, good luck with the MMO, yes it's possible.

dark coder
22
Years of Service
User Offline
Joined: 6th Oct 2002
Location: Japan
Posted: 8th Jan 2009 09:55
Quote: "it's like the freaking DBP Bible in here."


Except these claims can be empirically verified.

Quote: "Besides, the focus should always be on whether a game is FUN or not"


A game cannot be fun if it's running abysmally, not to imply GDK's speed is abysmal as it isn't... at most things. The issue about the forced V-Sync is that you cannot see how long it took to draw the scene, if you don't consider this important knowledge then lol.

I don't see why this question keep cropping up, of course an MMORPG can be made in GDK. Maybe not using solely GDK, as its networking support is bad; but excluding that you do have the ability to. The real question is: 'what kind of MMORPG can you make?', as GDK is quite a high level DX wrapper there are many aspects of the rendering pipeline you have limited or no access to(through the documented GDK functions at least).

You're best off just looking at the feature set/function list, seeing other people's projects and your own small tests to see if it's viable for your needs. If not, then look at OGRE, Irrlicht, XNA or using D3D directly or whatever.

jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 8th Jan 2009 14:08
LOL - (@DarkCoder - Awesome)

@Xsnip3rX - Um... That is so funny I don't even know HOW to respond - pick on you? Laugh? Tell you its a forum so people can discuss things... LOL

--Jason

Niels Henriksen
20
Years of Service
User Offline
Joined: 27th Sep 2004
Location: Behind you breathing heavely
Posted: 8th Jan 2009 14:13
Well... Im just sitting here with my popcorn and cola and waiting for the next chapter in the "GDK MMO Saga"

Niels Henriksen
www.tales-of-the-realms.com
if Microsoft can sell software with bugs, so can I.
Matty H
16
Years of Service
User Offline
Joined: 7th Oct 2008
Location: England
Posted: 8th Jan 2009 15:12
Reading this thread is better than living my life, lol!!!
jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 8th Jan 2009 15:50
Have you guys seen that sig someone has... "Worlds Best MMO - Up to One Players" ... LOL

AlexI
19
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
entomophobiac
22
Years of Service
User Offline
Joined: 1st Nov 2002
Location: United States
Posted: 8th Jan 2009 16:04
The issue about the forced V-Sync is that you cannot see how long it took to draw the scene, if you don't consider this important knowledge then lol.

In that case it's "lol" all the way, actually.

I use the DGDK as a showcase framework to test general ideas and concepts. Also an occasional minor game project. None of it has ever had frame-rate issues as there hasn't been much to render in the first place.

However, I can perfectly understand that you worry in a commercial project, where memory optimization is important. But my simple few-man projects have little need for such things. It's why I use a system like the DGDK in the first place -- so I don't have to bother about render pipelines, fill rates or anything of the sort. I can just toss a few lines of code into the compiler and find out if my game ideas are fun or not!
sydbod
16
Years of Service
User Offline
Joined: 14th Jun 2008
Location: Just look at the picture
Posted: 10th Jan 2009 15:52
UGGGG!!!! I am starting to worry a bit about this.

Have just run some simple tests to get a feel for the suitability of this engine for complex projects.
Ran my simple flight sim with 200 medium quality (5000 polygon each) aircraft visible.
Somewhere around 1,000,000 polygons visible.
When looking at the aircraft, one core (clock 3.6GHz) of the C2D CPU runs at close to 100% utilization (single thread) when the video card (HD 4850) is only running at around 60% utilization.
By just hiding the aircraft models with the "dbHideObject ( int iObject )" command and all the normal processing is still going on, the CPU load drops down to around 40% for that one active CPU core.

It is looking like Dark GDK is using a huge amount of CPU processing power just for the object rendering or frustum culling work.
Is this normal in other game libraries also????
Benjamin
22
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 10th Jan 2009 15:56
I'm not sure how v-sync is handled by default in DBP but it may use busy waiting to provide the necessary pause between each frame, which eats CPU (after all, the application will use as much CPU time as it wants unless it relinquishes some of this time with Sleep() calls or whatever).

jason p sage
17
Years of Service
User Offline
Joined: 10th Jun 2007
Location: Ellington, CT USA
Posted: 10th Jan 2009 17:40
Also - to be fair - the frustrum culling that's "built it" seems to only work on primitives. HideObject can help - but the TRUE boost is using the Exclude command. The Frame Rates dip unless you manage your own optimizations from what I've run into. shaders cause another hit depending on the video card.. Setting dbShadowShadingOn is actually a built in shader - so sometimes you might be running stuff you're not aware.

I'm not sure if you're using DarkGDK.Net or DarkGDK - but my DarkGDK oop wrapper has alot of "Demos" in it - and the frame rates are respectable - even the huge terrain one....

Take it for a spin if you like - there is source code... and frustrum culling is in there, and basic LOD, and even a partial (though commented out) Alpha Fade LOD transiation like the recent newsletter - but I never finished that - but there is quite a bit to examine rather than you spinning your wheels trying to write benchmarks - you can at least see how some stuff performs... and then examine code you think is bottlenecking or not or whatever.

You are not going to get the SAME FPS as DirectX. I rendered a Point cloud in DirectX with millions of vertex without optimization - it wasn't a FAST - but I'd say even attempting that kind of render in MOST game engines would be fool hardy unless they had a very "clean" un obstructed render loop.

Just shoot from the hip - hope it sparks an idea or two - I wouldn't throw in the towel just yet. Also, depending on game - though that TESTED as hard as DarkGDK yet - (no finished games to my knowledge but has ALOT of goodies too)... is the Leadwerks Engine sold here. I bought it... it's cool... My ONLY issue with that one is my modeling workflow - but if you're making your own models from scratch (to a given scale) then its cake to make your models match the physics engine

--Jason

Zuka
16
Years of Service
User Offline
Joined: 21st Apr 2008
Location: They locked me in the insane asylum.
Posted: 10th Jan 2009 20:09
DirectX is really, really easy if you don't teach yourself into thinking it's going to be really hard and complex. Intellisense is your best friend when it comes to DirectX. I wish mine didn't crap out every 5 minutes...
AlexI
19
Years of Service
User Offline
Joined: 31st Dec 2004
Location: UK
Posted: 10th Jan 2009 23:06 Edited at: 10th Jan 2009 23:06
I think if DarkGDK was up to date with dbpro it would be loads better. Look at these new features of dbpro i just saw
http://forum.thegamecreators.com/?m=forum_view&t=138663&b=1

We are missing out on these, there's even a function called fastsync which may fix our problems

Zuka
16
Years of Service
User Offline
Joined: 21st Apr 2008
Location: They locked me in the insane asylum.
Posted: 10th Jan 2009 23:14
Quote: "dbFastsync
This command will perform a regular dbSync command, and will skip processing a mandatory check for windows messages. You can use this command to squeeze a few extra clock cycles out of your main loop and make your applications faster.

Syntax
void dbFastsync ( void )"


Quote: "
We are missing out on these, there's even a function called fastsync which may fix our problems
"


Um.
sydbod
16
Years of Service
User Offline
Joined: 14th Jun 2008
Location: Just look at the picture
Posted: 11th Jan 2009 00:48
Quote: "Also - to be fair - the frustrum culling that's "built it" seems to only work on primitives."


All my tests were done with the DarkGDK Beta.

The games inbuilt Frustum culling does work very effectively on ordinary *.X objects.
Having 200 aircraft in view I see around 70 to 72 FPS and by swinging the camera away from them the FPS goes up to around 300FPS.

I am finding that no matter how crappy or how optimized my code happens to be, it is actually the rendering of the objects to the screen that is using the huge majority of the CPU power. This is something I was not expecting.
Niels Henriksen
20
Years of Service
User Offline
Joined: 27th Sep 2004
Location: Behind you breathing heavely
Posted: 11th Jan 2009 01:01
They (TGC) will come with an update for both GDK and .NET and then they will keep all 3 (DBP,GDK,.NET) updated at the same time...

Thats what I have heard...

Niels Henriksen
www.tales-of-the-realms.com
if Microsoft can sell software with bugs, so can I.

Login to post a reply

Server time is: 2024-11-25 11:17:43
Your offset time is: 2024-11-25 11:17:43