Some question from a beginner
Therein lies your problem. An MMO isn't a very good medium to learn 3D game programming as shogun said, because they are mostly just tons of content and really simple (and stupid IMHO) gameplay.Kalash wrote:Ok, thank you for your reply rogerborg, I'll try to do something with all these elements. I don't really want to create a real game and publish it, I just want to start with 3D
You seem motivated and excited so why not put that energy into something more productive? If your aiming on learning and not making a game then an MMO is NOT the right idea.
I think, in the end you want to create a game that's fun and you can't make an MMO fun without resources that are out of your hands. This probably seems negative but do yourself a favor, don't "start" learning on a "massive" project.
Please... I said small mmorpg wow-like because everybody can understand the idea of what I want but it's only for the map and the character/NPC controler, don't talk about content, it's not my aim!Taymo wrote:Therein lies your problem. An MMO isn't a very good medium to learn 3D game programming as shogun said, because they are mostly just tons of content and really simple (and stupid IMHO) gameplay.Kalash wrote:Ok, thank you for your reply rogerborg, I'll try to do something with all these elements. I don't really want to create a real game and publish it, I just want to start with 3D
You seem motivated and excited so why not put that energy into something more productive? If your aiming on learning and not making a game then an MMO is NOT the right idea.
I think, in the end you want to create a game that's fun and you can't make an MMO fun without resources that are out of your hands. This probably seems negative but do yourself a favor, don't "start" learning on a "massive" project.
Not at all.Taymo wrote:I think, in the end you want to create a game that's fun
maybe what you need is an outline of what you want to study. because learning something like a "small mmorpg" can be broken down into several pieces or components, now these components can further be sub-divided into several pieces known as sub-components.
and when you look at these sub-components individually, you may realize how they look similar to other components that other people use in their own projects.
yeah, why not sit down and write down something that looks like an outline of a "small mmorpg", i think it will open up new ways of approaching this small thing that seems to be bogging you down.
for example...
elements of small mmorpg:
1 3d engine.
2 networking module
3 sound module
4 game manager
4.1 main menu
4.2 game proper
4.3 scene node loader.
and when you look at these sub-components individually, you may realize how they look similar to other components that other people use in their own projects.
yeah, why not sit down and write down something that looks like an outline of a "small mmorpg", i think it will open up new ways of approaching this small thing that seems to be bogging you down.
for example...
elements of small mmorpg:
1 3d engine.
2 networking module
3 sound module
4 game manager
4.1 main menu
4.2 game proper
4.3 scene node loader.
Ok, atm I only aim to :
Client:
-Load a terrain
-Load a character
-Control this character (I'll probably use bullet)
-Network module (Send current character position/orientation to the server and get current NPCs position/orienation in order to display them)
Server:
-"Know the terrain" (to be able to check collision)
-Load some NPCs
-Move Randomly these NPCs (with a collision test)
-Network module : Send NPCs current position/orientation after last update and get character position/orientation (to send it to the others clients)
I don't want to create a GUI or play sound at the moment.
I think I can do all these things excepted the server side collision.
I'm trying something, I'll tell you what in some hours, I'm currently testing it. I still have some problems in some cases...
Oh yes, I may need irrlicht on server side, but I won't display anything, just need some tools (load map, ...)
Client:
-Load a terrain
-Load a character
-Control this character (I'll probably use bullet)
-Network module (Send current character position/orientation to the server and get current NPCs position/orienation in order to display them)
Server:
-"Know the terrain" (to be able to check collision)
-Load some NPCs
-Move Randomly these NPCs (with a collision test)
-Network module : Send NPCs current position/orientation after last update and get character position/orientation (to send it to the others clients)
I don't want to create a GUI or play sound at the moment.
I think I can do all these things excepted the server side collision.
I'm trying something, I'll tell you what in some hours, I'm currently testing it. I still have some problems in some cases...
Oh yes, I may need irrlicht on server side, but I won't display anything, just need some tools (load map, ...)
Ok, here is an example of what I tried.
First, we have to consider that our NPCs is over or on the floor.
Each time I change his position:
I send 3 rays :
- The first start on the position of my node + a half of his height and stop 500 on the top of his position (y + height/2 to y + 500)
If There is a collision, it means there is a ceiling and I check if that would block the NPCs
-The second ray is cast from the position of the NPC - a half of his height and stop 10 000 under his position. Same trick, if there is a collision it means there is a floor and I can prevent him from falling trough the map.
-The last ray start from the previous position of the NPC (in the direction of the movement) and is long of a half of the bounding box of my NPC.
If there is a collision, it's mean there is a wall.
I don't care about the response (gravity etc) atm.
It's not the perfect way to deal with collision, but I didn't found an other one.
Also, I found this function in the API documentation : http://irrlicht.sourceforge.net/docu/cl ... er.html#a1
But I didn't found help to use it. Could it be useful in my case?
I need some advices!
Thanks again
First, we have to consider that our NPCs is over or on the floor.
Each time I change his position:
I send 3 rays :
- The first start on the position of my node + a half of his height and stop 500 on the top of his position (y + height/2 to y + 500)
If There is a collision, it means there is a ceiling and I check if that would block the NPCs
-The second ray is cast from the position of the NPC - a half of his height and stop 10 000 under his position. Same trick, if there is a collision it means there is a floor and I can prevent him from falling trough the map.
-The last ray start from the previous position of the NPC (in the direction of the movement) and is long of a half of the bounding box of my NPC.
If there is a collision, it's mean there is a wall.
I don't care about the response (gravity etc) atm.
It's not the perfect way to deal with collision, but I didn't found an other one.
Also, I found this function in the API documentation : http://irrlicht.sourceforge.net/docu/cl ... er.html#a1
But I didn't found help to use it. Could it be useful in my case?
I need some advices!
Thanks again
set it up as a separate module, don't tie it to irrlicht. that thing you're coding will sit on a server. server-based code usually have its own environment. it's basically a dumb message-passing machine. with a little bit intelligence for resolving client synch issues. laggers, in this model are generally penalized the most.
your basic equation should look like this:
simulation(server) = simulation(n1,n2,n3,...,nN,...,nM)
simulation(server) = simulation(n1) + ... + simulation(nM)
when nX drops, it should now look like this...
simulation(server) = simulation(n1) + ... + simulation(nM-1)
also, approach your problems mathematically or you will get nowhere--falling faster than a brick to a void (like faster than 9.8m/s).
PS: i take back the part using irrlicht, it doesn't matter at the moment. you can use any api you like.
your basic equation should look like this:
simulation(server) = simulation(n1,n2,n3,...,nN,...,nM)
simulation(server) = simulation(n1) + ... + simulation(nM)
when nX drops, it should now look like this...
simulation(server) = simulation(n1) + ... + simulation(nM-1)
also, approach your problems mathematically or you will get nowhere--falling faster than a brick to a void (like faster than 9.8m/s).
PS: i take back the part using irrlicht, it doesn't matter at the moment. you can use any api you like.