Project Isle of Polm

Posted By: Garrettwademan

Project Isle of Polm - 06/05/09 04:52

I have been at this project for a good 5 or 6 years now. The project is The Isle of Polm. The goal is to have this game be a mmorpg. I have been around when we only had the built in server/client structure, and it only supported 4 players, but it was still terrible and I could not do what I wanted it to do.

Recently I have purchased ANet and am now using this instead. It works great. As of now there are 64 zones of terrain, and when the clients enter a new zone, they as the client request information for the zones around them. The request system is seamless to the client because they don't see objects load (only when they first log in). The server has all the information and properties for every object, and using ANet the server packs them into an array and sends it to the client so they can't tamper with it. It is not perfected yet, but I was able to test about 8 players with this system and it worked great. At about 8 players the server dataIN was about 18 Kbps and about 10 Kbps out. This was a bit high because I was sending useless data at the time, but I have now fixed that and hoping it will be about half if not 1/4 of that. This project has come a long way, and I REFUSE to accept defeat in this project. I hear a lot of people here saying it can't be done with 3D Game Studio, or done period. I won't give up on this one.

As of now, I am the main programmer, modeler, designer, graphics guy and I have my one friend supporting some ideas and models. I think in one way or another this shows the true power of this 3D Game Studio engine.

You will see current pictures below using some trees I bought off another 3d artist here for testing. The terrain was created using PNP Terrain Creator.

You can find some of the work in the prior years as I got better with this. I have had MANY MANY downfalls, but always saw a path around them. Here is the archive (some pics are from Realm Crafter when I found out multiplayer was not an option in 3D Game Studio, then ANet came around and I came back)

http://www.garrettwademan.com/gallery.html









You can find more information and screenshots at our forum too if you are interested in going back in time on this project.

IOP Forum http://garrettwademan.com/forum/index.php

I also have saved every version I ever released for testing since the beginning of time so I can personally see my progress. It is pretty crazy when you go back and look at some of that stuff.
Posted By: KiwiBoy

Re: Project Isle of Polm - 06/05/09 06:44

Very mystical loooking to me and quite nice to see so many lovelry spots of jungle in the screens.

For a 5 year project and still going strong says a lot about your dedication and perserverence, good one matey....keep it up, its very inspiring to read and see....
Posted By: Cowabanga

Re: Project Isle of Polm - 06/05/09 07:22

Nice project so far. smile
Looks like Sims 2 Castaway! laugh
Posted By: Garrettwademan

Re: Project Isle of Polm - 06/05/09 13:05

80% of all the work done to this project is server/client communication and trying to find the best way of doing this. Thanks for the comments.
Posted By: ratchet

Re: Project Isle of Polm - 06/05/09 13:40

Are the model woman from you (is well done) ?

Try to find some code to adjust the lightening on the character,your level is at night and the characters shines a lot in the dark laugh
I saw your gallery , and even you simple levels lokks really cool and good smile
Very inspiring ...


Keep it up smile





Posted By: bart_the_13th

Re: Project Isle of Polm - 06/05/09 13:41

Woow, Nice scenery... Still, my eyes are locked to the girl... What's the genre anyway?
Posted By: Garrettwademan

Re: Project Isle of Polm - 06/08/09 06:22

I actually just applied a diffuse shader on the girl just before taking screen shots there, I am still looking for a good player shader. I also am looking to find a good shadow shader for the terrain as the trees cast a terrible shadow.

The character model was a mixture of me and a pro character modeler as I am still fine tuning my character modeling. The model went back and fourth a few times between me and him on touching her up.

This is all focused on server/client programming, as I was testing the limits of gamestudio's built in engine before, and now I am testing ANet to see how well it works. I have not done too much to this version about looks, I need to know this ANet is stable, and so far it is exactly what everyone needs for multi-player games.

The genre hmm, not sure I guess. I am aiming for crafting, terraforming, player made towns, player made tools/weapons/armour, fighting of kingdoms. Basically the character starts out with little to nothing as a peasant that was sent to an island, not sure how they got there yet. The player has to use basic materials such as rocks and debri to make better tools, fire bla bla bla and build their skill using my skill system.
Posted By: mpdeveloper_B

Re: Project Isle of Polm - 06/08/09 14:58

erm....just one thing. I don't want to be posted as a "nay-sayer" but...3DGS can't pull off a huge world MMO. Not being a jerk, but seriously, at the moment it can't. It says you have virtually unlimited players, but that's not true.

Either way, Good Luck on this project. I hope it goes well.

edit: I noticed on your site you couldn't find documentation for TGEA. It can be found here. All you need is your login to the torque website and you can look at the docs. There's a full reference guide and all.
Posted By: lostclimate

Re: Project Isle of Polm - 06/08/09 17:52

Quote:
erm....just one thing. I don't want to be posted as a "nay-sayer" but...3DGS can't pull off a huge world MMO. Not being a jerk, but seriously, at the moment it can't. It says you have virtually unlimited players, but that's not true.


Not true. it can be pulled of with one of the many third party plugins, but no one around here has the skill for it or the budget.
Posted By: Quad

Re: Project Isle of Polm - 06/08/09 18:22

actually most engines cant pull of a multizone unlimited player mmo environment, unless it spesifically created for mmos.
Posted By: lostclimate

Re: Project Isle of Polm - 06/09/09 00:51

its not possible to pull off an unlimited mmo no matter what, but a experienced veteran in mp programming could pull off the networking using a third party tool.
Posted By: Garrettwademan

Re: Project Isle of Polm - 07/31/09 00:52

I beg to differ. I am using zoned terrains stitched together using third party tools. The way I do it is a bit complicated, but I have not had an issue yet, I spent about a year figuring this out. With my current map I have 64 zones. This is only for testing purposes for me to write my code and do my tests. As the players walk around the world the terrain far off loads (a hard coded limit I set). This is the only way to pull this off. I am certainly not saying that it takes 1 hour to cross my world at all, I am saying I have a highly detailed terrain that may take as of now around 5-6 minutes to cross by walking. This is small really, but I have allowed my code to expand later. This map I am making is only for testing.
Posted By: Garrettwademan

Re: Project Isle of Polm - 07/31/09 00:53

By the way, my forum is down, I have been redoing my site a bit.
Posted By: EvilSOB

Re: Project Isle of Polm - 07/31/09 04:46

Quote:
I am certainly not saying that it takes 1 hour to cross my world at all, I am saying I have a highly detailed terrain that may take as of now around 5-6 minutes to cross by walking.
That 5-6 minutes... how far is that in QUANTS?
Do you have any ideas/solutions about what to do if you hit the edge of 3DGS space. (-1,000,000 ot + 1,000,000 quants)

What third-party tools do the stitching? And do you just mean vertex-stiching or something more?

PS Looking very impressive for a "1.5 man" team, and Im glad someone has tested Anet for MMORPG "type" networking.
Keep up the excellent work.
Posted By: Garrettwademan

Re: Project Isle of Polm - 08/01/09 18:13

Quants, what a wonderful scale. The limit now on my map for the 5-6 minutes is about 8x8 zones, each zone consists of 100x100 faces with 50x50 quants, so max is 39,600 quants by 39,600 quants. I am using somewhat of a cheat for terrain. I am using PNP Terrain Creator. I make a huge map, then take 1 zone in the corner and render the height map in 256x256 pieces, so I get 64 pieces of height map. I export each of them with a "+1" scale as .bmp height files. I then open it up in MED and create the actual .HMP file. I do this will the 64 sectors and save them in a folder. Since I know my terrain is made up of 100X100 faces, and each face is 50X50 quants in MED, I know each terrain zone is 4950 quants. I then import all 64 sections using coding, fixing their Z axis so they line up perfectly. I have a function I use the up and down keys to lift it up or push it down easily. Since I know the X and Y axis pretty good, I can hard code that in by saying ZONE1.X = 0; ZONE2.X = 4950, and so on.

ANet is AWESOME, I highly recommend it, not a problem yet and it works flawlessly for what I am doing. Even testing it sending an array for the foilage in my world, it didn't skip any line in the array, it easily sent an array with 30,000 sectors within 1-2 seconds. Each player uses 0KBPS transfer when idle, but when they move they use less than 2KBPS.

When the player reaches the limits of the program....I will be adding another server for them to be loaded into. Using this along with a MySQL database it should not be any issue.
Posted By: Garrettwademan

Re: Project Isle of Polm - 09/07/09 00:13

Here is an update of what I am working with on this project.

Here is my basic inventory system as of now, I still have a lot of work to do on it.


I have also coded in terraforming. The players are able to terraform the land even when connected with everyone else. I coded in the Server and Client portion of this and it works fantastic. I coded it in such a way to have the least amount of latency, or stress on the server so as far as I know, there have not been any bugs or glitches yet with our testing.


Last week I was able to code the Server/Client portion of my weather system. I have your basic rain, lightning bolts (which leave huge terraform marks to show its presence), floods, droughts, funnel clouds and snow.




The only thing I will have to work on later is dead reckoning for the movement, to make it look sexy to the eye.

I was able to upload a video this morning to YouTube if you were interested in seeing it. You can find it here...

http://www.youtube.com/watch?v=gpk1Nq87BXo

The other part of setting up player accounts I also have. I made a php script to run on my Apache server where you can sign up a new player account. That account is then saved onto MySQL database, so when the player requests it at run time, it will find it.
Posted By: Germanunkol

Re: Project Isle of Polm - 09/07/09 10:45

looking very good!!

I miss shadows though...
Posted By: Garrettwademan

Re: Project Isle of Polm - 09/07/09 13:06

Yea, I am having a problem with shadows. With regular models without alpha texture I have no problem, but I can't seem to get the trees to display shadows correctly on the terrain (hmp). I may of already solved my problem though as players are able to terraform and cut trees down and plant new ones, so baking shadows is out. The only shadow that worked looked terrible. If anyone has any ideas on this, please post your knowledge. Thanks.
Posted By: Dark_samurai

Re: Project Isle of Polm - 09/07/09 13:13

Looks very promising!

You could try using the shadows of Slin or the shadow plugin of Chris3D.
Posted By: Garrettwademan

Re: Project Isle of Polm - 09/07/09 13:27

I will certainly take a look at those, thanks!
Posted By: Dark_samurai

Re: Project Isle of Polm - 09/07/09 18:44

Oh I forgot the Shade-C shadows.
Posted By: Blink

Re: Project Isle of Polm - 09/07/09 19:08

looks awesome!
Posted By: Garrettwademan

Re: Project Isle of Polm - 10/08/09 04:23

Update on the project:



- Stage 1 of dead reckoning coded
- Inventory moving, deleting, repairing, creation of new items
- Login screen all working great with server and database
- All player variables including skills, attributes, equipped items, bans, account status, positions, etc all save great into the database on the server
- Speed hacking detection
- website account creation linked to server database
Posted By: PigHunter

Re: Project Isle of Polm - 10/08/09 04:49

Nice!
Posted By: Germanunkol

Re: Project Isle of Polm - 10/08/09 05:39

Whenever you have the time, I'd really like to see your dead reckoning in action, a movie of you playing with a friend, maybe? That would rock.
Good and big update, keep it up! laugh
Posted By: botu

Re: Project Isle of Polm - 10/08/09 14:44

Great Job! I like the idea of terraforming with mmo. A nice idea would be to give the possibility to find rare seeds. Player can plant and take care of them. Some rare seed will gives specials plants for crafting.
Maybe do you need some help for modeling? You can see what I do here :
http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Number=274005#Post274005



Posted By: Garrettwademan

Re: Project Isle of Polm - 10/09/09 19:32

It isn't perfected yet...I am calling it stage 1. I will get a vid this weekend and post it.

As for the seeds and planting, this is already planned. I plan on having farming and harvesting with trees, plants, and the alike. The reason behind it was to create a game that has things that other mmo games don't have I guess...or at least not a lot of them.

Thanks for the comments.
Posted By: Garrettwademan

Re: Project Isle of Polm - 10/11/09 00:55

Here is the video of before and after. I am sending the player positions once every 30 frames, but can easily send once every 100 frames and still get away with murder. Sorry about my speech, after watching it I noticed I repeated a bunch of words haha. Let me know what you think, or let me know if you have any ideas of how I can improve this. Thanks.

VIDEO ON YOUTUBE
Posted By: lostclimate

Re: Project Isle of Polm - 10/11/09 01:28

I got a question, because I am playing around with anet as well trying to design "mini" mmo. now this wont be very ambitious but just a small (3 player + amin) demo to get some practice because some time in the future I'd like to start working on an actual mmo. now I am not using much of anet's automated features beacuse I'd like to have total control of entity and level management, but a question that's been bugging me is when I go to make a chat box. I send as much info in a packet as possible (info related to the packet) so for instance I send position and rotation all in 1 packet with the info delimited by comma's but when I go to start working on the text box im going to have to figure out something else since I want my players to be able to send a comma without killing my server, their client or finding a way to hack the info being sent grin I've contemplated making an escape character (like / for c ) but that will require a ton of string manipulation, and I'm already doing enough if you know what I mean. (building and then seperating packets) so I was wondering how you go about it.
Posted By: Garrettwademan

Re: Project Isle of Polm - 10/11/09 03:03

I don't know the correct way to answer that question, but if it helps ANet offers encryption. If you use a program such as Cheat Engine, you can speed hack and actually change variables in the 3D Game Studio engine, along with tampering with packets.

With my project the chat is sent as a separate string apart from everything else. The only thing I have to have in sync is the clients data to the server when it come to inventory, stats, skills, etc. Since I am using a mysql database, I can't have 2 clients sending their inventory information at the same time, so first I have the clients request to send to server, if the server says okay, it sends an okay back and locks on to that client ID and waits..if another client sends a request at this time, the server sends, wait (1) back basically. When the server gets the info, it saves to database and readies for the next set of information pieces.

If it makes you feel any better, I have tested sending an array which has 26,000 valid indexes...this took maybe 2 seconds, if that. I would not limit yourself to compacting everything all into one packet, array or string with dilimeters. I have not had an issue yet, and seeing you are working with maybe 4 players...that should be cake. Also, remember what and when the server should do certain functions. If you were using the 3d Game Studio multiplayer commands, I would suggest you keep doing what your doing. With each client they are maybe using up to 2 kbps max...this is average for a game like this. I hope this helps.
Posted By: lostclimate

Re: Project Isle of Polm - 10/11/09 06:48

yes but what if i need to send different information with the text in the chat (font changes, links to other things, special information abuot the text) from the client. as far as the players go, I am only going 4 players because of the anet demo max. once I get that done I will probably buy pro and start working on a more ambitious project so I want it to have the same efficiency with 4 players as if I were expecting 100 players or more.

Its nice talking to someone who is working on a mp game to get ideas from (well a similar style, Scion is looking pretty interesting too but its not rpg based).
Posted By: Dark_samurai

Re: Project Isle of Polm - 10/11/09 08:42

@lostclimate: You don't have to "merge" all data into one packet. This is done by ENet automatically.

ontopic: As you mentioned in the video, 30 frames can pass faster or slower depending on the current framerate. You shouldn't make anything in a game framerate dependent. Use a time period that is the same on every machine, no matter how fast it is.

You can use wait(-...) or time_step for that:
Code:
//....
var time = 0;
while(1)
{
time += time_step;
if(time >= deadreck_time)
{
time = 0;
//Send position updates
}
wait(1);
}



Your project looks really prommising. I'm really looking forward to a beta laugh
Posted By: lostclimate

Re: Project Isle of Polm - 10/11/09 16:26

It'll be great advertising for anet, huh? grin Thanks for the heads up, and like I think I said before but if not, great work so far. Very encouraging to see someone a little farther than me.
Posted By: Garrettwademan

Re: Project Isle of Polm - 10/12/09 04:55

Originally Posted By: Dark_samurai
@lostclimate: You don't have to "merge" all data into one packet. This is done by ENet automatically.

ontopic: As you mentioned in the video, 30 frames can pass faster or slower depending on the current framerate. You shouldn't make anything in a game framerate dependent. Use a time period that is the same on every machine, no matter how fast it is.

You can use wait(-...) or time_step for that:
Code:
//....
var time = 0;
while(1)
{
time += time_step;
if(time >= deadreck_time)
{
time = 0;
//Send position updates
}
wait(1);
}



Your project looks really prommising. I'm really looking forward to a beta laugh


I may of said it wrong. In my script I have exactly what you have in the function...

while(){
if(counter >= 30){
send data;
counter = 0;
}
counter +=1;
}

I always thought framerate determined how fast functions run...I may be way off though haha. This kind makes sense...I am the new guy...ahem.

Yea ANet rocks. I have not run into any limitations yet with it and by far it is the most reliable. I rely on ANet to get the info out there to my clients with world data and item data and so far I have not seen any information lost.

Thanks for all the feedback guys.
Posted By: Germanunkol

Re: Project Isle of Polm - 10/12/09 10:38

watched it yesterday, but didn't find the time to respond...

two things I noticed:
1) you send the position every 30 frames. That doesn't sound good to me. as you yourself state in the video (if I remember correctly), not every client will run at the same fps. That means you get more updates on some pcs and less on others. That's not good, i think. Instead, you should update every 8 ticks or so:
var timePassed = 0;
while(1)
{
timePassed += time_frame;
if(timePassed >= 8)
{
timePassed -= 8;
update();
}
wait(1);
}

Second thing I noticed: The animations look weird. What I would recommend is to not send the animations over the net at all (it's an mmo game, after all), instead see the distance that the entity has covered in the past frame, and animate accordingly, depending also on the direction whether you show a strafing animation, or walking forward or standing still etc.

The overall surrounding/setup of the game seems nice and solid, I like it! Especially the way the tools get put into the characters hands is very nice laugh
Sometimes the other player seemed to hover... you should prevent that, it doesn't look very nice.
Posted By: Dark_samurai

Re: Project Isle of Polm - 10/12/09 15:17

@Garrettwademan: The difference between my script/the one of Germanunkol and yours is, that you add 1 instead of time_step. Adding 1 all the time only counts the frames passed. With adding time_step you can see how much ticks (1 tick = 1/16 second) passed.

Got it? laugh
Posted By: Garrettwademan

Re: Project Isle of Polm - 10/12/09 15:31

Thanks Germanunkol. I will take a look at that and see if I can use time_frame and time_step. I only put the one night into coding the structure so it is very preliminary. Earlier when I coded player movement I made sure all clients go the same speed by using the time_step, time_smooth and time_frame in a calculation that had fps for the clients...so even the slowest fps clients move the same speed as the fastest.

I was working with the animations to have them auto animation rather than having the clients send the actions. When a client walks it sends a 1, running sends a 2, jumping 3, etc. When I was coding the animation to be only on the local machines I ran into an issue with jumping, crawling, squat walking, attacking because the local machines have no idea what the client is doing (ex: walking forward while squating or jumping forward). No matter what I need to send the data to all clients to update animations for situations like this. The only issue I have now is the sliding effect because all clients see other clients as approx 30 frames or approx 1 second behind.

I will work on this though trying to perfect it the best I can and find the best way of doing this.

Your right, I do have a hovering problem. I will need to fix that soon. If your a client running 4-10 fps you seem to float to the ground and if your running 25fps+ it looks natural. One of the issues I had with updating clients was the local clients were getting stuck in the terrain when moving, so I had to make the terrain passable for them. This isn't a big deal because the client controlling his own character determines collision...but this is good and bad in many ways.

I will post updates on this system as it advances. Thanks for the comments, it helps because sometimes I either don't think of it or try to hide it and hope that no one catches it.
Posted By: Garrettwademan

Re: Project Isle of Polm - 10/12/09 15:34

Originally Posted By: Dark_samurai
@Garrettwademan: The difference between my script/the one of Germanunkol and yours is, that you add 1 instead of time_step. Adding 1 all the time only counts the frames passed. With adding time_step you can see how much ticks (1 tick = 1/16 second) passed.

Got it? laugh


Yea, thanks again. I will add this later and see how it works out.
Posted By: RedHak

Re: Project Isle of Polm - 01/16/10 15:19

brilliantly crafted game.
Please share with us the source of?
© 2024 lite-C Forums