Sounds good to me. If anyone knows someone who might fit the bill, let them know =).
Z.
Printable View
Sounds good to me. If anyone knows someone who might fit the bill, let them know =).
Z.
I'm a artist from GameDev.net, I hope to help you out a little. I'm also in need of person for my project, if you canhelp me out after you finish this project. So what kind of help do yous need?
sheng - i think we need a guy to make up textures to then be used for models, im sure Zaei will let you know when hes next online.
others - i changed the dlls over to release build and then compiled and changed the lib dirs and it gets an access vialation now so im trying to sort that out.
Im off to a party so wont be around to do much coding after the next 30 mins.
ah 5 mins later and release build is wokring fine :D
Heres a lil sample debug logging :D
Code:
Divinity Networking Module - Debug.txt
--------------------------------------
on_n_Initialize
on_w_Initialize
on_s_Initialize
on_s_Start
on_s_Connection: Index: 0 Address: 127.0.0.1:3578
on_s_Data: Index: 0 Data: /join;richard
on_s_Data: Index: 0 Data: /text;richard:;hello
on_s_Disconnection: Index: 0
on_s_Stop
on_s_Terminate
on_w_Terminate
on_n_Terminate
--------------------------------------
It's excellent to see that someone was able to come and help us- I'm the project leader, so once you're ready, welcome aboard the team. What kind of commitment are you asking for after our project?
We are looking for someone who can create model textures, and, if possible, do the actual texturing =). I would be quite happy to get either of the two, though =). Just to let you know, we are working with fairly low-polygon models.
Z.
will My skills including paper art 3d modeling and some others. I can try to texture for yous, you must first give me some art work so I can work on it.
Say no more!
http://www.crystal-rain.com/art/mote.jpg - Mage of the Eye
http://www.crystal-rain.com/art/kotb.jpg - Knight of the Blade
http://www.crystal-rain.com/art/lizardman.jpg - Lizardman
http://www.crystal-rain.com/art/lizardchamp.jpg - Lizard Champion
http://www.crystal-rain.com/art/swmstr.jpg - Swordsmaster
They're all full colour pics. Once Norman's converted all of his newest ones to full colour you'll have the Dragon, the Drage, and some others. More to come! :cool:
The networking is coming along just fine. I have started to add the actual protocol.
On connection the client send:
/user;username
Then a +OK or -ERR is sent, if +OK is sent back to the client the client sends:
/pass;password
Then again +OK or -ERR is sent back to the client. If its a +OK it allows the client to send chat data to the server which can then be sent to other users :D
on_n_Initialize
on_w_Initialize
on_s_Initialize
on_s_Start
on_s_Receive: Index: 0 Data: /user;richard
on_s_Send: Index: 0 Data: +OK
on_s_Receive: Index: 0 Data: /pass;username
on_s_Send: Index: 0 Data: +OK
on_s_Connection: Index: 0 Address: 127.0.0.1:3571
on_s_Status: Connections: 1 Maximum: 1
on_s_Connection: Index: 1 Address: 127.0.0.1:3572
on_s_Status: Connections: 2 Maximum: 0
on_s_Receive: Index: 1 Data: /user;dave
on_s_Send: Index: 1 Data: +OK
on_s_Receive: Index: 1 Data: /pass;username
on_s_Send: Index: 1 Data: +OK
on_s_Receive: Index: 0 Data: /text;richard:;hello
on_s_Send: Index: 0 Data: /text;richard:;hello
on_s_Send: Index: 0 Data: /text;richard:;hello
on_s_Receive: Index: 1 Data: /text;dave:;hi
on_s_Send: Index: 1 Data: /text;dave:;hi
on_s_Send: Index: 1 Data: /text;dave:;hi
on_s_Disconnection: Index: 1
on_s_Status: Connections: 1 Maximum: 1
on_s_Disconnection: Index: 0
on_s_Status: Connections: 0 Maximum: 2
on_s_Stop
on_s_Terminate
on_w_Terminate
I created a nifty Console class earlier, and got it working. Pretty simple:
Pretty simple. AddConsoleVariable creates a new console variable, default value of 0.0. This can also be specified in the function call. AddConsoleFunction creates a new console command function. They can take numbers(floats) and strings as parameters. The ParseCommand function actually does the work of assigning values to variables, or running functions. There IS parameter checking as well. The GetVariableValue function simple returns the current value of any variable. The above would output:Code:
#define _S(x) std:string(##x) // helper for string creation
VOID consoleFunc(char* params, DWORD numParams)
{
OutputDebugString(params);
}
int main()
{
Console* c = new Console;
c->AddConsoleVariable(_S("someVar"));
c->AddConsoleFunction(_S("SomeFunction(string)"), consoleFunc);
c->ParseCommand(_S("SomeFunction(\"Hello\n\")"));
c->ParseCommand(_S("someVar=10.0000"));
cout << c->GetVariableValue(_S("someVar")) < endl;
return 0;
}
Z.Code:Hello
10.00000
Excellent to see that it's working out for you two. The next step would be to integrate what the server spits out into a server console and the client's console. Of course, the passwords would never be visible, because only the other client has that password and it is never sent to the other clients :)
Cool stuff.
Everything is going HOT
i got the dnmclient.dll module running well, connections are wokring and data travel is going well.
still setting up the protocols for chat on server n client.
remind me again: is this one lobby per game ?? as opposed to channels from which u goto games ??
If it's still easy for you two, I'd like it to be one main ToW lobby (get to talk with all ToW players in the lobby), then different "floors" for different game lobbies, eg. Clan places, etc. Then you can enter game rooms from there.
Alternatively, you should also be able to browse all of the games at one time, like how Half-Life has it.
Hmm, i thought it was gonna be done like so there is just the one lobby for the game, so like u get the servers ip off a m8 on msn etc and then connect to it.
if not then im not sure, like u need a central server for that.
Zaei, is this small enough code to start, run, and close a server ??
I could cut it down a bit more.
And for a client:Code:
#include "dnm_n_network.h"
#include <conio.h>
#include <iostream.h>
dnm_n_network network;
int main (void) {
if (network.initializeNetwork(DNM_SERVER, true, 2, 2) == true) {
if (network.initializeServer("-ANY", 50, 10) == true) {
if (network.startServer() == true) {
_getch();
network.stopServer();
}
network.terminateServer();
}
network.terminateNetwork();
}
return 0;
}
Code:
#include "dnm_n_network.h"
#include <conio.h>
#include <iostream.h>
dnm_n_network network;
int main (void) {
if (network.initializeNetwork(DNM_CLIENT, true, 2, 2) == true) {
if (network.initializeClient() == true) {
if (network.logonClient("127.0.0.1", 50) == true) {
_getch();
network.logoffClient();
}
network.terminateClient();
}
network.terminateNetwork();
}
return 0;
}
Oh well now that I think of it yeah, we would need a central server for that. How about some sort of program that plugs into IE or NS and captures link clicks to TOW servers (eg. tow://127.0.0.1:2050/). By the way, what ports are you using?
That amount of code is just fine. Ports should be user configurable, with a default of something over 10000. We should be able to create a sort of IE plugin, fairly easily. I have been working on creating a thinner layer between a base object and a vertex buffer, for example. I had a lot of garbage being inherited when it wasnt needed at all (message queue in a texture? -.-).
Z.
On Upgrades an Units.
I got these ideas tonight. First on upgrades. It makes no sense to be able to pick and choose what upgrades to research, and then pay x amount of food, and x amount of gold, etc. I have a better idea. Why not have a new building (say, an "Academy of Learning"), that would be constantly researching. you would perhaps pay an upkeep on this building (or maybe on all buildings?), and it would research new technologies. The player would then have the choice of putting the new research into action. If the player chooses to use the new tech, units may cost a bit more, or take longer to train, or both. For instance, your academy researches a new type of arrow that goes farther. These arrows cost a bit more to make, so the price of training a unit with these arrows goes up. But, all units trained get a plus to range. All other units continue to use the old arrows, unless they return to training for x amount of time. Then, the academy figures out some new Zen of archery, that gives a MUCH greater accuracy to archers, but it takes a LOT longer to train units. Make sense? We could then split the academy up into an "Academy of Learning", for normal stuff, and an "Academy of the Mystic", for anything magical (magical weapons, perhaps?).
Now, as to units. Since we have an Academy of Learning, why not just start all players off with a few peasants, and perhaps a few basic soldiers. The Academy is then responsible for researching new technologies, and the units to use them. So, your academy comes up with the idea for the bow. You then get Short Bow Archers. Then they research horseback riding, and you can have mounted Archers, etc.
I would also allow each player to start with one Academy, then, if they choose, build more. If ever they lose all of their academies, a new one can be build fairly cheaply, while the extras would cost bundles.
Basically, now that i think about it, its the Civilization research method, but the player doesnt get to pick the next thing to research.
Z.
Oh, and my new email address is [email protected] =).
Z.
Zaei, that is an amazing idea! May I extrapolate?
Perhaps the player could choose what general areas into which to place his or her research, and set percentages of income on, such as:
- Weaponsmithing
- Fletchery
- Armour Forging
- Medical Theory (more HP)
- Education (better morale, new strategies)
- et cetera
I think this could really be useful! Great idea!
Why didn't I thnk of that? (Jorj says as he walks away)
I like it Jorj =).
Z.
The server is currently running on port 50 and is unconfigurable (ie hard coded). Im currently making a win32 application for both server and client allowing that to be changed, its gonna be a sample application that works with a userdatabase etc. The server can be operated on a specific ip or on any available.
I didnt quite understand that IE plugin. Do u mean so they can type the address and it will log on to the server or what ??
The other thing, can any of you access planet-source-code.com coz for me sites take ages to load when they didnt before ??
He means that, on a web page, we can have links that, instead of http://xxx.xxx.xxx.xxx:xxxxx, we can have tow://xxx.xxx...., and a plugin can catch clicks on that kind of link, and launch the game.
Z.
I had an idea (with Jorj) a while back on something else, we could issue a "Classic RTS" MOD that would have everything like it is in other games (eg. houses let more units be created, research normal, etc.). However we would release this after so people will be able to play the new rules too, and get to like them :)
Oh and by the way I'm still looking on how to do that plugin, if anyone can find out for me I'd be thrilled ;)
We dont even need a plugin. I found the article in the MSDN earlier, and its just a set of registry settings. I tested it out as well. Here is how it works:
Square backets denote a key =). The %1 at the end of the filename passes the url into the program.Code:HKEY_CLASSES_ROOT
[tow]
(Default) = "URL: TOW Protocol"
URL Protocol = ""
[shell]
[open]
[command]
(Default) = ""c:\Program Files\Times Of War\tow.exe" %1"
[DefaultIcon]
(Default) = "c:\Program Files\Times Of War\tow.exe"
Z.
Would this not also ned then the Url Protocol in CLASSES_ROOT/TOW/ to be "tow" or "tow://" or something similar?
Hey Zaei, I made a short proggie but all I am getting when I go to a place such as tow://127.0.0.1:50/ is Page Cannot Be Displayed and Invalid Syntax Error in the Titlebar.
I'm at skool now so not actually working.
I shall add a protocol to allow u to enter a standard ip or a tow address. I gotta think how this should be done coz we want some kin of structure to it.
normal connecitons:
http://ip/
ones from IE can be
tow://ip/
I shall add in some command line params for conenction to games etc and using specific ports so access can be done thru a firewall.
I have also decided to put it all up into one dll called divnetwork.dll
I shall get a demo and the seperate library with source into a zip to zaei to add to the engine.
Straight from MSDN:
allows note:// protocol.Code:[HKEY_CLASSES_ROOT]
[note]
(Default) = "URL:Note Protocol"
URL Protocol = ""
[DefaultIcon]
(Default) = "notepad.exe"
[shell]
[open]
[command]
(Default) = "c:\windows\notepad.exe %1"
Sounds good, Psy, though I will do the tow:// address parsing in the main application.
Z.
so you dont want me to make it parse the urls, just make it connect to the url specified in the function call ?
that registry stuff will need to be added via the installer program, once its working can u export the keys to a .reg file and mail it to me please.
:DCode:
#include <string.h>
#include <iostream.h>
#include <conio.h>
void main (int argc, char *argv[]) {
if (argc < 2) {
return;
}
char m_temp[80];
char m_url[80];
strcpy(m_temp, (argv[1] + 6));
for (int b = 0; b < sizeof(m_temp); b++) {
if (m_temp[b] == '/') {
m_url[b] = '\0';
break;
}
else {
m_url[b] = m_temp[b];
}
}
cout << "Passed Url: " << argv[1] << endl;
cout << "Parsed Url: " << m_url << endl;
_getch();
}
This will take an url such as:
tow://127.0.0.1/
and turn it to
127.0.0.1
I'm thinking all urls to connect to should be passed to the net module as a tow:// ??
p.s i got the registry done so dont worry over it =)
Yeah, the main game will take the tow://, and strip out to just the IP, and port, and use those to connect.
Z.
ok, i will leave as is.
Sweeeet!!!!!
I'm sorry I just had to say that, its just plain cool :cool:!
That works awesome.
Okay, I've thought up a syntax:It's kind of like an IP address, it lets you have the port, the IP, and the password all there. A great thing about this is it lets you have web listings and true web integration so that administrators can easily make up server pages. The last variable after the / is the hostname, if its not there it'll connect to the first gameserver seen there. If it is, it will attempt to connect to the ToW Server app with that name (admin customizable). Let me know what you think.Code:Times of War Address:
tow://127.0.0.1:50@password/towservername/
Explain, Sas. i dont get it =).
Z.
It's like FTP access with all of the info able to be passed through the web address. About the multi-server things, since there is an app spawned to make the server (correct me if I'm wrong), there could, theoretically, be more than 1 server on one machine (or on computers LANNED together to 1 IP, more than 1 on the network).
OK, makes sense =).
Z.