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.

DarkBASIC Professional Discussion / World of OMEN (Frost) SVN

Author
Message
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 25th Feb 2011 21:42 Edited at: 25th Feb 2011 21:49
@Wilderbeast

Change the blocking status in the mnConnect command in the netClientConnectStart to 0 instead of 1. mnPollConnect will always fail when mnConnect is set to block until connected.

I also have committed an Hour 6 to the DarkNet20 branch of the SVN that includes all these changes that's fully functional (these changes are technically r35, but it's for the darknet20 branch so it's really only the second commit on that branch:

http://code.google.com/p/worldofomen/source/browse/#svn%2Fbranches%2Fdarknet20

Hope that helps

The Wilderbeast
18
Years of Service
User Offline
Joined: 14th Nov 2005
Location: UK
Posted: 25th Feb 2011 21:56
Brilliant, it works perfectly!

Where appropriate you're using #constants, obviously so we don't have to remember the values and what we're typing makes a lot more sense. But I've noticed for most of the keyboard/input setup you're just using capitalised globals, is this because you are planning to alter the values dynamically later on, perhaps loading from an ini for example?

Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 25th Feb 2011 22:03
The early hours of the tutorials are a little less standardized than the later hours. Things will get more standardized as I go along

Glad everything's working for you!

The Wilderbeast
18
Years of Service
User Offline
Joined: 14th Nov 2005
Location: UK
Posted: 25th Feb 2011 22:13
It's a harrowing experience, a week ago I thought I was pretty good at framework coding - this has made me think again! I must praise your ability to get a concise and efficient framework set up from the start, it really does help the rest of the project exponentially.

I've noticed you use len() sometimes, and fastLen() others. Is there a particular reason for this or is it just inconsistency? Also, will every single TCP/UDP packet get logged on the server? After about a minute of play I had a log file which was several hundred KB in size, and that's just for one player.

Sorry about all the questions, I find it helps me understand things better if I raise potential issues I think could occur.

Cheers,
Mike

Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 25th Feb 2011 22:25 Edited at: 25th Feb 2011 22:36
@Wilderbeast,

Actually, the use of IanM's versions of functions over the DBPro built-ins is being done very selectively. In some cases, Ian's versions (at the time) had some odd bugs for strange conditions, so I couldn't use them in situations where these conditions could arise. As long as you're using Ian's most current DLLs, then you're probably safe using his versions of functions over DBPros wherever you want.

As the tutorials progress I switch over to faster versions as possible with either (a) a confirmed and tested fix of the bug from Ian or (b) with additional input variable checking to pre-catch odd conditions. And right now, I can't actually think of any major bugs in any of Ian's functions (at least, none of the functions that I use). So again, you're probably safe using his versions if you want to.

All logging on both the client and server goes through a lifecycle. When a feature is initially introduced, the logging level is relatively high so that people can see what's going on and to make debugging easier for people who are coding along. In subsequent hours, you'll see that I comment out debugging code as the code it supports gets better established. And of course, if you are coding along, you can always comment out any debugging code you don't need any more.

Of course, then you have newer debugging code for even newer features

The Wilderbeast
18
Years of Service
User Offline
Joined: 14th Nov 2005
Location: UK
Posted: 25th Feb 2011 22:40
Ah ok, that makes sense.

In Hour 7 keyboardClientShowChat() you have forgotten the i:


Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 25th Feb 2011 22:47
next doesn't need it in DarkBASIC
for and next always know who their partners are.

The Wilderbeast
18
Years of Service
User Offline
Joined: 14th Nov 2005
Location: UK
Posted: 25th Feb 2011 22:56
Wow, I've learnt quite a bit about what the DBPro compiler will accept these past two days!

The Wilderbeast
18
Years of Service
User Offline
Joined: 14th Nov 2005
Location: UK
Posted: 25th Feb 2011 23:39 Edited at: 25th Feb 2011 23:52
Hmm just stumbled across a bit of a major issue. In netServer there is a mnSendTCPAll call. The compiler does not recognize this as a command, despite it being in the Dark NET help, and refuses to compile.

Also, is it supposed to be possible to compile at the end of Hour 7?

Lagunajam
13
Years of Service
User Offline
Joined: 22nd Feb 2011
Location:
Posted: 26th Feb 2011 00:59
Yeah the "mn Send TCP All Instance" does not recognize, but in hour 9, will be deleted from the code.

Then dont worry about that.
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 26th Feb 2011 03:17 Edited at: 8th Mar 2011 05:51
Wilderbeast,

Hour 7 is not supposed to compile -- there is a challenge at the end where you are supposed to figure out from the error message you receive when you attempt to compile. Namely, there is a function that didn't get defined tonight and you should be able to figure out what it should be and what should be in it just from the error itself. If you get REALLY stumped, though, you can always look ahead in the source code repository

The mnSendTCPAll function can be commented out - you don't really need it at this point, and it's replaced in Hour 9 in any case. I added a note to the tutorial that explains this. I haven't had a chance yet to re-compile every hour between Hour 6 and Hour 29 yet (well until now). Hour 7 of the DarkNet20 branch has been committed to the CVS - so if you get really stuck, you can check there.

If you want to zip up your "modules" folder and send it to me again via e-mail, I'd be more than happy to take a look at it -- I can usually spot the issue pretty quickly

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 28th Feb 2011 07:23
@Omen
Because of the recent discovery that nobody is currently supporting eXtends, I must change my vote on XGui to NO.
As there is little to no hope of the bugs ever getting fixed, I would rather a system that could be sold. Especially after all of the hard work you've been putting in to it.
Oneka
19
Years of Service
User Offline
Joined: 24th Apr 2004
Location: Hampton,VA
Posted: 28th Feb 2011 19:26
Been looking good, keep up the good work~!


Making dreams possible, one line at a time...
Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 6th Mar 2011 06:59
First TGC mention you in the newsletter, and now tweets.
Congrats!

Quote: "From the DBPro forum board, "...how to build a large-scale multiplayer online game in DarkBASIC" by Omen:... http://fb.me/GKwQRvJH"


Have you decided how you're going to handle the GUI yet? With so many different ways that can be done, I'm curious to see how you decide to do it. (That's usually the part that gets me tangled up)
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 8th Mar 2011 05:51 Edited at: 8th Mar 2011 05:52
@Wyld,

hehe yeah, I think they're just trying to give me a nice friendly kick to publish more often (j/k TGC!)

<<gets back to coding in any case>>

For the GUI system, I'm going to stick with the DemonGUI (that's the existing one) until I find something better. No eXtends for now.

@Oneka,

Thanks!

Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 16th Mar 2011 06:04 Edited at: 16th Mar 2011 06:04
Whew! Finally finished up Hour 30

Tonight we added an area loading system and discussed ID management for instantiated assets.



Tutorial Snippet:

...as soon as those World Builders slide that throne just a few feet to the left (where it should be of course), you will WANT them to say something like "I would like to move Object ID 894752 to position x,y,z". They should send this request in to the server, the server should validate that the connection belongs to a GM who has World Builder rights (also known as "Drive the Build Team Crazy" authority), and send back either a "that is fine" message or the more often suitable "go jump in a lake" message.

Devonps
14
Years of Service
User Offline
Joined: 5th Nov 2009
Location: Nottingham
Posted: 16th Mar 2011 12:16
Another really good article - keep up the good - even though I'm not producing an mmo I find your articles really interesting and well worth the read.

Steve.

Marriage is a circle of rings....
Engagement ring, Wedding ring, Suffering!
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 17th Mar 2011 03:26
hehe thanks Steve, they're a lot of fun to write

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 24th Mar 2011 02:51 Edited at: 24th Mar 2011 03:53
I just got a new computer and downloaded the newest World of Omen code off the SVN. It compiles fine, but when I try to run the server exe, I get an error

Quote: "Runtime Error - Unknown Exception Occured At Line 2071"


It's a fresh install, so I may be missing random plugins or ini's...
I'm having issues. Any ideas?

I doubt the actual World of Omen exe runs without the server, so I haven't tried it yet. It's all freshly downloaded from the SVN. No changes. I'm fairly sure that I grabbed all of the plugins needed(And it compiles fine).

EDIT: I tried the World of Omen code. It does the same:
Quote: "Runtime Error - Unknown Exception Occured At Line 1159"


Re-Edit: Looks like both of those are pointing to dataShared.dba line 145ish:


Edited-Edit:
I attached my World of Omen log. Missing a few ini's, maybe?

Attachments

Login to view attachments
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 24th Mar 2011 05:46 Edited at: 24th Mar 2011 05:48
@Wyldhunt,

Make sure that you have IanM's Matrix Utils. The complete list of plugins you need are on the Build Instructions page. Those files should get created for you automatically, make sure that both of the executables have administrative privileges to be able to create new files (or turn off UAC). The /data/tables.ini and /server/data/tables.ini are the only ones that must exist before running. If you run the server and wait for it to completely load, then run the client, it should all sync up.

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 24th Mar 2011 06:58 Edited at: 24th Mar 2011 06:59
Hmm...
The very first thing I did was disable UAC.
I installed everything from the Build Instructions page, and it probably wouldn't compile if I'd missed anything. I'm at work now, but when I get home I'll take another look. It's possible that one of my other plugins is conflicting with the World of Omen plugins. I have a plethora of plugins that I've used in various programs.
I'm using the newest U77 RC6 version of DBP on Win7 Pro X64 SP1.

Out of curiosity, have you tested it to make sure that it compiles and runs okay with only the SVN content on your machine?
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 24th Mar 2011 07:18 Edited at: 11th Apr 2011 15:30
@Wildhunt,

Yes, I have all the following environments that I perform testing on before I publish a commit: WindowsXP, Windows Vista, Windows 7 32-bit. If it didn't work, I wouldn't be able to post the screenshots

However... I owe you a beverage of your choice, you found a very odd bug that I hadn't tested for until now. I was able to simulate your current environment by deleting all my *.ini files in a new checkout. Here's what's going on...

When lookup files exist, but are completely empty (which can be replicated by creating one of the associated *.ini files but not editing it), then the while loop still gets executed at least once even though the file is empty - so the FILE END test doesn't seem to be able to return true until a READ is executed at least once. If you think about it a bit, it has to be this way because only the READ can set the flag telling DBPRO that the end-of-file has been reached (it can't know until it looks):



Since the file is empty, the dat$ is empty, so the name$ and value$ are also empty, which means that the SET LOOKUP is getting something like this sent to it:



...and it looks like Ian's Matrix Utils don't like null keys Which makes sense too - but I didn't expect the big "Unexpected Error" hard crash. I suppose it's better than silently ignoring it, though - and really, I would vote to keep it this way.

In any case, here's the fix for now - I'll add this to the next commit to better support people who are new to the project:



Then recompile the server and recompile the client. Run the server, and then run the client and you should be all set. These are the steps I did and it worked for me with all *.ini files deleted. It also works when all *.ini files exist, but are completely empty (except tables.ini - that one has to be correct, which is why it's versioned and the other ones are not)

Oneka
19
Years of Service
User Offline
Joined: 24th Apr 2004
Location: Hampton,VA
Posted: 3rd Apr 2011 18:58
@Omen,

So have you done anything so far about media packing?


Making dreams possible, one line at a time...
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 10th Apr 2011 20:12 Edited at: 10th Apr 2011 20:45
@Oneka,

In the original OMEN, I used Molebox for my packaging -- and that worked extremely well. The only trick was that you actually had to include the primary executable twice -- once in a "pak" file, and once at the root of the installation. But it worked beautifully, I highly recommend the product.

The whole distribution process went like this:

1) Remove all temp files and local files from DEV area (wrote a script to do this).
2) Used Molebox to pack everything up to my distribution point.
3) Rebuilt the CAB file and the MSI using Microsoft's tools so that "first time" installers would get the most current codebase -- this REALLY helped keep the FTP traffic down.
4) FTP'd the packed files up to FTP server for current users.

OMENUpdate took care of the rest

Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 10th Apr 2011 20:42
I hope everyone has been enjoying these tutorials as much as I've enjoyed writing them. We've made it through 30 tutorials, with (I hope) lots of interesting approaches and insights along the way.

I'm writing this to let people know that I won't be able to add too many more tutorials to this series. I've only been able to publish one tutorial a month for the past couple months due to real life commitments, and I don't see that changing anytime soon.

However, I'll be able to provide the following for people who have enjoyed following this series:

1) A cleanup hour that "ties together" some of the loose ends of the code base and generally just makes things a bit more robust for further development.

2) One more tutorial on whatever topic people are most interested in (vote by replying to this thread!). The current code base gives you a basic "walk and talk" client -- additional game features can be easily added onto the foundation we've already built.

3) The full original World of OMEN code including ALL client code, all server code, and all the code for all the tools that I used. The original code for World of OMEN (Ares Release) wasn't as mature as the current code (Frost Release), so it won't be a one-for-one merge by any means. However, even back then I tried to make all the code as modular as possible, so you should be able to pretty much "pick and choose" the functions you want to use. I will post this to a new branch in the repository once I have everything ready. The only part I would have to leave out is my BlueGUI registration code from OMENUpdate -- but everything else should be "postable".

I should note, however, that the original OMEN code used a MySQL database for the backend -- so it may be a bit more challenging to do development on that code (if you're not familiar with MySQL).

In addition, one nice thing about hosting my website and repository on Google is that it should never go away. As long as Google Code and Google Sites are still running, you should always be able to find them at these "naked" URLs:

Website: http://sites.google.com/a/lakehomegames.com/omen/

Repository:
http://code.google.com/p/worldofomen/source/checkout


Again, I've really enjoyed writing these tutorials - and have enjoyed working with everyone who has left comments, suggestions and questions along the way -- it's been a great journey!

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 10th Apr 2011 23:12
@Omen
Cheers You've done an amazing job with this.

Here's where I'm at right now, insofar as what could help me...
I only have Darknet 2.0, so all of the code pre Darknet 2.0 conversion will never compile for me (Although I learned a ton reading all of your tutorials).
The Hour 20 download .exe won't run on Win7 SP1. I assume that it was compiled with the pre-fix patch for SP1. Since I can't re-compile it (No compatible DarkNet), I can't run any previous download version.

I can't get the hour 30 SVN to run. It compiles, but it still crashes to the desktop at runtime. I've narrowed it down to the exact line that it crashes on, but I can't figure out why or how to fix it. I've re-installed DBP and made sure that I was only using the required addons that you use. It didn't help.
I can send you another e-mail explaining exactly what my problem is if you're interested in trying to figure it out. It crashes when the client tries to access the checklist. The server works fine.

Anyway, I could make good use of a downloadable and fully functioning version so that I have something to work from. I must be missing something, but I don't know what that would be.
My plan is to convert it all to use DarkData databases. I think that would greatly simplify things.

As far as final requests to the code additions, I'd have to vote for some more GUI stuff. Perhaps a basic GUI interface that we can expand, even if you don't have time to write a tutorial for it, we can dig through it and figure it out.

Thanks again for all of the awesome amounts of work that you've put in to this. It's an amazing system.
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 11th Apr 2011 06:39 Edited at: 11th Apr 2011 06:42
@Wyldhunt,

The Hour 20 was compiled on Vista, and I didn't have Win7 in my dev kit back then -- so, you may want to try setting the compatibility mode and see if that helps.

Hour 30 doesn't include a few fixes that I was planning to add to help out people who are just getting started out late with the project. You're not missing anything most likely, I just didn't want to overwhelm the tutorial with so many code changes. Trying to commit early and commit often is generally a Good Thing -- but sometimes it bites you

Instead of posting the Hour 30 binaries, I'm actually going to tie up a lot of "loose ends" and post the Hour 31 binaries instead. I'll be testing these on XP, Vista, and Win7 - so, they should be just fine.

Hmmm, a basic GUI interface, eh? That's an interesting request. Most of the gadgets you'd need are already there (albeit a bit buried in the code). How about I document all the functions with example how to use them all? There's actually a wealth of functionality in that code already - barely scratched the surface really. Some good documentation on it might provide more useful than a wrapper

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 11th Apr 2011 10:52
That would be great.
Thanks again for this huge gift to the community. I seriously doubt that anyone else will ever donate such huge amounts of code.
Devonps
14
Years of Service
User Offline
Joined: 5th Nov 2009
Location: Nottingham
Posted: 11th Apr 2011 12:42
@Omen,

Thanks for all the hard work, love, sweat and probably tears you've put into this project...It's been a fantastic journey and I for one have taken ideas and adapted them to my work.

I wish you well in real life

Steve

Marriage is a circle of rings....
Engagement ring, Wedding ring, Suffering!
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 11th Apr 2011 15:36 Edited at: 11th Apr 2011 15:37
@Steve,

Thanks! It's been a pure joy - all my future development work is going to follow this formula

@Wyldhunt,

Check the last Code Snippet 8 posts up. I added an additional check that I think is going to resolve things for you. Also let me know which version of Windows and Tortoise SVN you are using -- I have a hunch on why you are still getting an error, so if you can send me your versions numbers (including if Tortoise is 32 or 64 bit) that would help.

It looks like some versions of Tortoise will add an extra carriage return to the end of plain text files (even when empty), so I need to compensate for that. Just ran into the problem myself

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 11th Apr 2011 17:16 Edited at: 11th Apr 2011 17:33
I made the changes that you recommended and it fixed the first problem with the missing ini files.

I use:
Win7 64 bit SP1
i7 950 CPU
6 gigs ram
GeForce GTX 460 graphics
DBP U7.7 RC6
Tortoise SVN 1.6.15 64 bit

Here is my exact issue:
The server runs perfect.
When I run the client, it detects the connection fine.
The client crashes to the desktop when it executes mediaClientRegisterNew().

My server log looks like this:


My client log looks like this
(I added more log messages to find exactly where it fails):


It may be worth noting that the data/materials/ folder is empty except for the hidden .svn file.
I tried deleting the .svn file, but it didn't make any difference.

Here is the exact code snippet that I have. All I've changed from the SVN Download are the changes you advised above, and the new log messages here:


As you can see from that code snippet and the log file it writes before it crashes, the following line is responsible:

Quote: "perform checklist for files"


The confusing part for me is that I can run test scripts that use the checklist commands just fine and everything else seems to work.
It is something specific about the mediaClient script that crashes when it tries to access the checklist.
I tried adding in a command to empty the checklist first, but it crashed on the empty checklist command instead.

If it is an SVN issue, that would go a long way toward saving my sanity.

Edited for clarity
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 12th Apr 2011 16:11 Edited at: 12th Apr 2011 16:12
@WyldHunt,

I'm assuming that the path shown that it is trying to check does actually exist, correct? (Stupid question, I know, but just covering the basics):

Path is now data/materials/

I did find that the 64-bit version of Tortoise SVN adds an extra line break to the end of plain text files from either uploading or downloading the file (haven't tested which process is the culprit yet), so I needed to add an extra check for empty lines.

However, from the code you are posting, I don't see anything wrong. It does run flawlessly for me so if you want to zip up your modules folder and e-mail it to me, I'd be more than happy to take a look at it.

On Win7, I'm keeping my DBPro projects under my User folder -- so, that might explain why I'm not having any problems. I think you should try creating a new folder under the User area, do a checkout, make the Hour 31 changes above, and see if that helps. If not, go ahead and zip up your modules folder and send to me and I should be able to figure out what's going on pretty quickly

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 12th Apr 2011 16:52
e-mail sent. A rar of my OMEN is attached.
I also attached a copy to this message in case anyone else wants to take a look.
data/materials does exist. It is empty except for the hidden svn file. I think the rar unhides all of the svn files, so they may be a bit more noticeable in the compressed version that I sent you.
I tried deleting all of the svn related stuff, but it didn't seem to help.

And, like I mentioned above, I can make other test scripts that use that code and they work. For some reason, my checklist appears to be corrupting only when I run World of OMEN.exe. Server.exe works fine. Every other program that I make works fine even if they use similar code.
If I get time, I'll try copy pasting all of the dba's in to new dba's in case something corrupted. It's the only thing I can think of that I haven't tried yet.

Failing that, I'll just wait for you to post your final download version. That would probably solve it if anything would.

I know you're busy, so don't worry about wasting a ton of time on this. Really, if you only have limited time left to invest in this, I'd rather you spend it on OMEN than my odd bug.

Attachments

Login to view attachments
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 13th Apr 2011 02:23
@WyldHunt,

Yep, it's as I expected - it's a blank line issue introduced by TortoiseSVN. In this case, it's the file /data/templates/template_player.ini

If you remove the last blank line from this file, you should be fine. I downloaded your rar file, extracted, removed the blank line from this file and your copy ran flawlessly. For Hour 31, I'll be adding lots of little "gotcha" checks like these

When it's hitting MediaRegisterNew(), it's getting pretty far until it hits the avatar mesh, which specifically inherits attributes from the player template. So, it's not actually the PERFORM CHECKLIST FOR FILES that's causing the problem -- it's a blank line

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 13th Apr 2011 03:11
Aha!
Excellent to hear. I'll give it a shot as soon as I get home from work. Thanks for taking a look at it.
Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 14th Apr 2011 19:07
It is working now and all is good.
Thanks again for the help.

I had to manually change the ip in the ini files before it worked.
I tried deleting the ini files to see if it would re-build them but it didn't. I remember you mentioning that you were going to add that back in. When you delete the ini files for the client, it crashes in the exact same way as if it finds a blank line.
I tried deleting the contents of the ini files to see if it would re-populate them with the correct info, but the client just crashed again in the same way.
So, I think that getting the client to be able to re-create ini files is probably important. From a customers perspective, the entire game will break the moment their IP changes. I know that my IP changes all the time from resetting the modem/router when they throw fits. Having to go in and manually update an ini every time would not be a major selling point.
Once I got it working, I noticed a few other bugs. Mostly minor and stuff I can probably fix myself. I'm just listing them here for the sake of completeness.
When creating a character, I chose a short name. It popped up the message telling me that the name had to be 8 characters long. When I clicked OK, the entire GUI ran away and never came back. I had to re-load the game and start over.
Every time I try to use the chat box in the client, the server crashes with a Darknet error.
I'm not sure if there's anything else in the ini files other than my IP that may change between computers. If there is, then I haven't updated it and it's probably causing bugs.

Overall, it seems to be a very solid system and I can't wait to start expanding on it now that I got it working.
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 22nd Apr 2011 07:42 Edited at: 18th Jun 2011 06:19
@Wyldhunt,

OK, I've got all those error fixed now and a few other little "gotchas" that I found. Running through the final testing, should have the code done soon and the tutorial post soon after that

Spritzen
14
Years of Service
User Offline
Joined: 12th Aug 2009
Location:
Posted: 22nd Apr 2011 17:00
Just wanted to say I've been following this and it's excellent! Would be great to see more, you defiantly have some followers
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 26th Apr 2011 04:53 Edited at: 26th Apr 2011 04:54
@Spitzen

Thanks! Glad you like it.

OK, Hour 31 has been posted to the repository.

All project file (including Win32 compiled binaries) at Hour 31 have been zipped up and posted to the downloads section.

I'll be posting the original ARES release soon, I'm hoping I can also include the following with the ARES release (time permitting):

(1) The SQL code necessary to re-create the MySQL database it used to use
(2) A pretty comprehensive guide to using the GUI system OMEN uses.

...we'll see how it goes

Wyldhunt
14
Years of Service
User Offline
Joined: 27th Sep 2009
Location: The Dark Side
Posted: 29th Apr 2011 09:32 Edited at: 29th Apr 2011 09:55
Awesome.
Once I got it working, it seemed to be very stable.
However, I still had to re-compile the code with DBP7.7rc6 and copy all of the ini files over before it would work.
I assume the re-compiling is just because you're not using the newest beta, so it fails on Win7 SP1. That's not a huge issue.
Needing to move over the ini's wasn't a huge issue either, since I had them. However, you may want to upload a copy of the ini files somewhere for those people who find that World of Omen will not create the ini's for them. I assume that it creates inis for you, or at least doesn't crash. But, it appears to not work for everyone. Not sure why. I'm curious if maybe it's some new bug that popped up with DBP7.7rc6, since you don't appear to be using it.

Anyway, awesome work as always. I'll post any progress I make if you're interested.

EDIT:
The above bug wasn't mentioned in the hopes that you would fix it for me. In fact, I'm planning on replacing the way the ini system works with one of my own that uses a combo of the Matrix1 ini commands with DarkData. The bug will be replaced in my version.
I just wanted to post a fyi in case you wanted to upload the inis for others who may have issues.
MikeR 28601
17
Years of Service
User Offline
Joined: 30th May 2006
Location:
Posted: 25th May 2011 20:23
Too bad you are closing this project.. i just found it recently and have been going through it. Would have liked to see the full remake of the tut with the new darknet from start to end but i will muddle through. Would have liked to see the part on the MUSE also. It has so much great information so thank you for the time you put into for other people.
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 4th Jun 2011 23:17
@Wyldhunt,

Thanks for the bug-hunting - always appreciated. I haven't been able to figure out what's causing that ini file bug for you. If you ever do figure it out, feel free to post the fix here, or e-mail me and I can make the necessary changes to the source. Glad to hear you're expanding and customizing it, that's fantastic!

@MikeR,

Thanks so much! It was a lot of fun - I'd highly recommend iterative blogging and coding for any programming project, it works even better when you're in a small team

The MUSE system is (at its heart) pretty simple, it's a duplicate of the movement broadcast system with the following exceptions: (1) the data being sent is the object ID, the change type ID, and then the change attributes (for example, for moving an object the message looks like this: objectid, CHANGETYPEMOVE, newx#, newy#, newz#); and (2) this message is sent to all users EXCEPT the sender. On the client, these message are received and the changes are made. That's pretty much it. The server makes the change to its in-memory area data, and then persists this on a regular basis. Area loading, then, becomes a process of requesting ALL area data from the server (to keep the server authoritative). That's the extreme end of the spectrum, though -- most MMOs use some kind of versioning system instead where they send down whole area dat files when they are newer than what's on the client (but then still use a MUSE-like system for live editing in the Sandbox).

Mudbud Productions
12
Years of Service
User Offline
Joined: 1st May 2011
Location: Cloud 9
Posted: 5th Jun 2011 00:27
wow... This is amazing! You have really put alot of effert and time into this just to help others. Cool Beans, but I gotta get DARK Net first... Thanks again for all the tuts

Silence is golden but duck tape is silver - Anonymous
MikeR 28601
17
Years of Service
User Offline
Joined: 30th May 2006
Location:
Posted: 16th Jun 2011 18:18
Thanks for the concept update on the MUSE concepts. Were you still going to post the original code for your last version of the game you had running? I am also curious since you had a live version running as to what kind of user capacity and bandwidth usage you may have figured out.
Omen
17
Years of Service
User Offline
Joined: 7th Nov 2006
Location: Maple Grove, MN US
Posted: 17th Jun 2011 07:31
@MikeR,

I spent some time cleaning up the Ares codebase (had to delete player account information and things like that) and uploaded it to Google Code. In addition, I was able to get a complete database dump from the original MySQL database, so that's included too.

The last version of the Ares Release is now available here:

http://code.google.com/p/worldofomen/downloads/list
..or if it hasn't updated yet, direct link is here...

http://code.google.com/p/worldofomen/downloads/detail?name=omen_ares.zip

A couple of Notes/Warnings/Points of Interest:

This was the last commit to the Ares Release of World of OMEN - prior to the re-write (Frost) version. This download does NOT include the compiled binaries because they no longer run under current Windows Service Packs.

Here are some additional limitations you should consider carefully before using any of this:

1. The code is ugly. Very ugly. You've been warned.

2. The Ares release of World of OMEN used a MySQL database on the server. I've included the full SQL BACKUP in this archive "omen_db_backup 20110616 2250.sql" (stripping out account data of course). If you are unsure how to setup a MySQL database or how to restore a sqldump file, then this code probably isn't for you

3. I would NOT recommend building anything on top of this code - the FROST release is a much better foundation. Think of this code as a resource of ideas, examples, and code snippets.

4. The Ares Release used MikeNet 1.0 (or thereabouts), so it won't compile using DarkNet 2.0+. In theory, you could make the necessary changes (like adding a network profile) and get it to compile - but it would be a grueling excercise. I went through the conversion process for Frost and it was mostly painless -- but for Ares... <<shudder>>

5. The server contains the Very Beginnings of a finite state machine for the enemy AI. It's pretty rudimentary, but at the time it did result in some interesting enemy behaviors

6. I hadn't devised the unstructured data management system (UDMS) yet - so, it used a few monolithic arrays for EVERYTHING. ObjectShared is the keystone to most everything. It also included the beginnings of a template ("factions") system, but I could never get it working right. I later figured why that was and the UDMS was born.

7. Because the factions system never worked right, I could never get the GiveTake system off the ground either. Frost solved both problems, but at the expense of a complete re-write for how data was managed.

8. The Ares Release had all the same dependencies as the Frost release (for external DLLs) PLUS a dependeny on Barnski's LUA plugin and of course CattleRustler's MySQL DLL.

9. There is an Old Code file in the docs folder. What you'll find in that Old Code file will either leave you in shock, in awe, or possibly a little of both - none of which can I take any responsibility for.

10. Most important... have fun!!!

MikeR 28601
17
Years of Service
User Offline
Joined: 30th May 2006
Location:
Posted: 21st Jun 2011 05:19
Thank you for the code upload. I am enjoying learning about how you went about your mmo programming and regardless if you want to call some of the code ugly or not.. the fact that you accomplished a complicated task such as this in and of itself makes it worthy of some awe. Actually the only real shocking part is that you shared such indepth code with the community.. although i am sure quite a few will be appreciating the gesture for a long time.

As far as the SQL is concerned.. you would be right.. i am not familiar with SQL and dont have the time for doing everything i would like to as it is, so if i was to do a code revamp for proof of concept toying around then i would probably try doing a version using dark data (on an ssd would be sweet). I also have TGC Unity (LUA) Addon. It will make for a slightly different setup but i like trying to do things in my own style. Biggest thing is usually just getting a firm grasp of the concepts at work in order to design more personal solutions and your work helps tremendously.

Login to post a reply

Server time is: 2024-03-29 12:07:19
Your offset time is: 2024-03-29 12:07:19