A real Networksolution for GS A6/A7

Posted By: Dark_samurai

A real Networksolution for GS A6/A7 - 10/21/08 18:35

Hi!

I currently wanted to know how much people realy are interested in programming a real working MP-Game?

I know that there are no real networksolutions for gamestudio out there. There is the GS networksystem (I think I don't have to say much about it ^^), there is Populace which seems to have a bug(s) which makes developing a real game impossible (and of course it's not cheap!) and there is GSTNet which isn't realy finished at all (and it still has some Bugs; I don't know the newest versions of it but I was unable to develope a game with it).

Ok, because of this faulty truth I started to create my own plugin based on the free enet library (like GSTNet). After 2 months of developing I created a well tested, solid working plugin which should give you all abilities to create a working game. It supports unlimited connections and needs less bandwith. It has a built in encryption in is designed to be as save as possible. It gives you error messages if you make wrong useage of a function and gives you all you need to even create MMOGs (of course I still wouldn't advice you to make an MMOG).

Now I wanted to know how much people would be interested in such a network solution for about 20€?
I will make a demoversion of the plugin for you to test if it's good enough for you and will try to build in your whishes (if they aren't already possible or to difficult or timeconsuming ^^).

Because the demoversion isn't ready now (it will come soon) I give you a list of all functions which are currently included.

Please note that the documentation is currently in german (had no time to translate).

Enet_dll.h (please don't copy, it's under my copyright!):
Code:
////////////////////////////////////////////////////////////////////////////////
//filename:			enet.h
//copyright: 		Peter Soxberger
//autor: 			Peter Soxberger
//last change: 	13.10.2008
//version: 			0.9.11.6
//Describtion: 	Header für die enet.dll ( (c) Peter Soxberger)
//Note:				Keine
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
///////////////////////////////Prototypen///////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

/////////////////////////
//Verwaltungsfunktionen//
/////////////////////////

//------------------------------------------------------------------------------
//Name:           void enet_set_warning(var mode)
//Funktion:       Schaltet Warnungen ein/aus.
//Parameter:      mode...1: Warnungen werden angezeigt; 2: Warnungen werden
//									 nicht angezeigt
//Rückgabe:		  	keine
//Besonderheiten: Warnungen sind standartmäßig eingeschaltet!
//------------------------------------------------------------------------------

void enet_set_warning(var mode);

//------------------------------------------------------------------------------
//Name:           var init_enet()
//Funktion:       Initialisiert Enet. Muss vor dem benutzen jeder anderen Enet
//                Funktion einmal erfolgreich ausgeführt werden.
//Parameter:      keine
//Rückgabe:		   1 bei erfolgreicher Initialisierung
//                -1 wenn ein Fehler aufgetreten ist
//Besonderheiten: Nur einmal ausführen!
//------------------------------------------------------------------------------

var enet_init();

//------------------------------------------------------------------------------
//Name:           void deinit_enet()
//Funktion:       Macht die Initialisierung von Enet rückgängig.
//Parameter:      keine
//Rückgabe:		   keine
//Besonderheiten: Enet sollte vorher initialisiert worden sein!
//------------------------------------------------------------------------------

void enet_deinit();

//------------------------------------------------------------------------------
//Name:           var enet_init_server(var port, var max_player, STRING* password)
//Funktion:       Erstellt einen Server, der den angegebenen Port benutzt.
//Parameter:      port.........port der benutzt wird (2300-2400)
//                max_player...maximale Spieleranzahl, die sich verbinden kann
//						password.....Serverpasswort (max. 30 Zeichen)
//Rückgabe:		   -1 wenn ein Fehler aufgetreten ist
//                1 wenn alles geklappt hat
//Besonderheiten: Nur aufrufen, wenn noch kein Server initialisiert wurde!
//------------------------------------------------------------------------------

var enet_init_server(var port, var max_player, STRING* password);

//------------------------------------------------------------------------------
//Name:           var enet_init_client(STRING* ip, var port, STRING* password)
//Funktion:       Erstellt einen Client, und verbindet diesen über den
//                angegebenen Port mit dem durch die IP angegebenen Server.
//Parameter:      ip.........ip des Servers
//                port.......port der für das Kommunizieren benutzt wird (2300-2400)
//						password...Passwort des Servers (max. 30 Zeichen)
//Rückgabe:		   -1 wenn ein Fehler aufgetreten ist
//                1 wenn alles geklappt hat
//Besonderheiten: Nur aufrufen, wenn noch kein Client initialisiert wurde!
//                Wenn die Verbindung zum Server nicht hergestellt werden kann,
//				  		bzw. unerwartet unterbrochen wurde, so wird nach einem Timeout
//				  		das clientseitige disconnected Event ausgeführt!
//------------------------------------------------------------------------------

var enet_init_client(STRING* ip, var port, STRING* password);

//------------------------------------------------------------------------------
//Name:           void enet_disconnect_client(var ClientID)
//Funktion:       Trennt die Verbindung mit den Clients mit der angegebenen ID
//                und erzeugt ein Disconnectevent.
//Parameter:      ClientID...ID des Clients, der entfernt werden soll
//Rückgabe:		   keine
//Besonderheiten: Kann nur vom Server ausgeführt werden!
//                Darf nicht dafür benutzt werden, um im Client/Server Modus
//				  		dem "eigenen" Client die Verbindung zu trennen!
//------------------------------------------------------------------------------

void enet_disconnect_client(var ClientID);


//------------------------------------------------------------------------------
//Name:           void enet_destroy_host()
//Funktion:       Beendet die Serverengine bzw. die Clientengine und trennt
//                dadurch die Verbindung. Das Disconnect Event wird nicht erzeugt,
//				  		es entsteht nur ein Timeout Disconnectevent.
//Parameter:      keine
//Rückgabe:		  	keine
//Besonderheiten: Wenn möglich sollte enet_disconnect_client verwendet werden.
//				  		Diese Funktion sollte nur im Notfall verwendet werden!
//------------------------------------------------------------------------------

void enet_destroy_host();

//////////////////
//Pollfunktionen//
//////////////////

//------------------------------------------------------------------------------
//Name:           void enet_server_poll()
//Funktion:       Wenn man einen Server erstellt hat, muss diese Funktion
//                solange in einer Schleife aufgerufen werden, wie der Server
//                existiert!
//Parameter:      keine
//Rückgabe:		  	keine
//Besonderheiten: Kann nur von einem Server ausgeführt werden!
//------------------------------------------------------------------------------

void enet_server_poll();

//------------------------------------------------------------------------------
//Name:           void enet_client_poll()
//Funktion:       Wenn man einen Client erstellt hat, muss diese Funktion
//                solange in einer Schleife aufgerufen werden, wie der Client
//                existiert bzw. eine Verbindung zum Server hat!
//Parameter:      keine
//Rückgabe:		  	keine
//Besonderheiten: Kann nur von einem Client ausgeführt werden!
//------------------------------------------------------------------------------

void enet_client_poll();

//////////////////
//Infofunktionen//
//////////////////

//------------------------------------------------------------------------------
//Name:           STRING* enet_get_version()
//Funktion:       Gibt die Dll-Version zurück.
//Parameter:      keine
//Rückgabe:		   String in dem die Dll-Version gespeichert ist (z.B. "0.9.8.2")
//Besonderheiten: keine
//------------------------------------------------------------------------------

STRING* enet_get_version();

//------------------------------------------------------------------------------
//Name:           var get_clientid()
//Funktion:       Gibt die eigene Clientid zurück.
//Parameter:      keine
//Rückgabe:		  	-1 wenn man noch keine ClientID hat
//                ansonsten die eigene ClientID
//Besonderheiten: Kann nur von einem Client ausgeführt werden!
//------------------------------------------------------------------------------

var enet_get_clientid();

//------------------------------------------------------------------------------
//Name:           var get_connection()
//Funktion:       Gibt zurück ob ein Client initialisiert wurde, ein Server oder
//                beides.
//Parameter:      keine
//Rückgabe:		   0 wenn man mit nichts Verbunden ist
//                1 wenn man Server ist
//                2 wenn man Client ist
//                3 wenn man Server/Client ist
//Besonderheiten: Diese Werte sagen nichts darüber aus, ob eine Verbindung
//                hergestellt ist. Ledeglich welche hosts initilisiert wurden.
//------------------------------------------------------------------------------

var enet_get_connection();

//------------------------------------------------------------------------------
//Name:           var enet_connected_clients()
//Funktion:       Gibt die Anzahl der Verbundenen Clients zurück
//Parameter:      keine
//Rückgabe:		   Anzahl der verbundenen Clients
//Besonderheiten: keine
//------------------------------------------------------------------------------

var enet_connected_clients();

//------------------------------------------------------------------------------
//Name:           var enet_check_client(var clientid)
//Funktion:       Prüft ob ein Client noch verbunden ist.
//Parameter:      keine
//Rückgabe:		 	-1 wenn keine Verbindung mehr besteht
//				  		1 wenn er noch verbunden ist
//Besonderheiten: Kann nur vom Server ausgeführt werden.
//------------------------------------------------------------------------------

var enet_check_client(clientid);

//------------------------------------------------------------------------------
//Name:           var enet_get_myip(STRING* ip1,STRING* ip2,STRING* ip3,STRING* ip4)
//Funktion:       Gibt 4 IP-Addressen des PCs zurück. Im Normalfall, hat ein
//                PC nur eine IP enthalten in ip1.
//Parameter:      ip1,ip2,ip3,ip4...enthält die IP-Addressen
//Rückgabe:		   -1 wenn ein Fehler aufgetreten ist
//                1 wenn alles funktioniert hat
//Besonderheiten: keine
//------------------------------------------------------------------------------

var enet_get_myip(STRING* ip1,STRING* ip2,STRING* ip3,STRING* ip4);

//------------------------------------------------------------------------------
//Name:           var enet_get_clientip(var clientid, STRING* ip)
//Funktion:       Gibt die IP-Addresse eines Clients zurück.
//Parameter:      ip1...enthält die IP-Addresse
//Rückgabe:		  	-1 wenn ein Fehler aufgetreten ist
//                1 wenn alles funktioniert hat
//Besonderheiten: Darf nur serverseitig ausgeführt werden!
//------------------------------------------------------------------------------

var enet_get_clientip(var clientid,STRING* ip);

//------------------------------------------------------------------------------
//Name:           var enet_get_serverip(STRING* ip)
//Funktion:       Gibt die IP-Addresse eines Clients zurück.
//Parameter:      ip...enthält die IP-Addresse
//Rückgabe:		   -1 wenn ein Fehler aufgetreten ist
//                1 wenn alles funktioniert hat
//Besonderheiten: Darf nur clientseitig ausgeführt werden!
//------------------------------------------------------------------------------

var enet_get_serverip(STRING* ip);

//------------------------------------------------------------------------------
//Name:           var enet_get_ping(var typ)
//Funktion:       Gibt den aktuellen Ping (RTT=Round-trip-time) zurück.
//Parameter:      type...1: letzte Roundtriptime (Ping)
//                       2: durchschnittlicher Ping
//Rückgabe:		   -1 wenn ein Fehler aufgetreten ist
//                Ping (in ms) wenn alles funktioniert hat
//Besonderheiten: keine
//------------------------------------------------------------------------------

var enet_get_ping(var typ);

//------------------------------------------------------------------------------
//Name:           var enet_get_datatransfer(var typ)
//Funktion:       Gibt Werte betreffend der Transferrate zurück.
//Parameter:      type...1: gesendete Daten der letzten Sekunde (in Byte/s)
//                       2: empfangene Daten der letzten Sekunde (in Bytes/s)
//Rückgabe:		   -1 wenn ein Fehler aufgetreten ist
//                Ansonsten gewünschter Wert
//Besonderheiten: keine
//------------------------------------------------------------------------------

var enet_get_datatransfer(var typ);

///////////////////
//Eventfunktionen//
///////////////////

//------------------------------------------------------------------------------
//Name:           var enet_set_event(var typ, STRING* funcname)
//Funktion:       Weist einem Eventtyp eine Funktion zu. Die Funktionen werden
//                mit folgenden Parametern aufgerufen:
//                              -sender: Client der das Event ausgelöst hat
//                              -msg: String der gesendet wurde
//                                    (nur 1 Frame verfügbar!)
//Parameter:      typ........Typ des Events
//                               1: Client connected (nur Server)
//                               2: Client disconnected (nur Server)
//                               3: Connected (nur Client, msg enthält Level das
//																			  am Server geladen ist)
//                               4: Disconnected (nur Client)
//                               5: Synchronizing complete (nur Client)
//                               6: Synchronizing complete (nur Server), gibt die
//				ClientID des Auslösers zurück
//			7: Entity removed (auf allen Rechnern außer dem,
//				der das Event ausgelöst hat) übergibt den
//				globalen Pointer (nur 1 Frame gültig)
//                               8: Wrong Password (nur Client)
//                               9-max_events(30): Userevents
//                funcname...Name der Funktion, die bei dem jeweiligen Event
//                           ausgeführt werden soll.
//Rückgabe:		  	-1 wenn typ eine ungültige Zahl ist
//                1 wenn alles geklappt hat
//Besonderheiten: Der Funktionsname darf nicht mehr als 29 Zeichen enthalten!
//				  		Event 3,4&5 werden ohne Parameter aufgerufen, Event 1&2 nur
//				  		mit dem sender Parameter!
//------------------------------------------------------------------------------

var enet_set_event(var typ,STRING* funcname);

//////////////////
//Sendfunktionen//
//////////////////

//------------------------------------------------------------------------------
//Name:           void enet_send_var(STRING* varname, var reseiver)
//Funktion:       Sendet eine Variable zu dem angegebnen Client, oder an alle
//                verbundenen Clients wenn reseiver auf -1 gesetzt wird.
//Parameter:      varname....Variablenname der Variable die gesendet werden soll
//                reseiver...Clientid des Empfängers oder -1 wenn es an alle
//                           gesendet werden soll.
//Rückgabe:		   keine
//Besonderheiten: Variablenname darf nicht länger als 30 Zeichen sein. Je
//                kürzer der Variablenname, um so weniger Byte.
//------------------------------------------------------------------------------

void enet_send_var(STRING* varname, var reseiver);

//------------------------------------------------------------------------------
//Name:           void enet_send_array(STRING* arrayname, var from, var to, var reseiver)
//Funktion:       Sendet einen Teil eines Arrays zu dem angegebnen Client, oder
//                an alle verbundenen Clients wenn reseiver auf -1 gesetzt wird.
//Parameter:      arrayname...Arrayname des array der gesendet werden soll
//                from........erster Index der gesendet werden soll
//                to..........letzter Index der gesendet werden soll
//                reseiver....Clientid des Empfängers oder -1 wenn es an alle
//                            gesendet werden soll.
//Rückgabe:		   keine
//Besonderheiten: Arrayname darf nicht länger als 30 Zeichen sein. Je
//                kürzer der Variablenname, um so weniger Byte.
//                Es können maximal 40 Indexe versendet werden.
//------------------------------------------------------------------------------

void enet_send_array(STRING* arrayname, var from, var to, var reseiver);

//------------------------------------------------------------------------------
//Name:           void enet_send_string(STRING* strname, var reseiver)
//Funktion:       Sendet einen String zu dem angegebnen Client, oder an alle
//                verbundenen Clients wenn reseiver auf -1 gesetzt wird.
//Parameter:      strname....Stringname des Strings der gesendet werden soll
//                reseiver...Clientid des Empfängers oder -1 wenn es an alle
//                           gesendet werden soll.
//Rückgabe:		   keine
//Besonderheiten: Der Stringname darf nicht länger als 30 Zeichen sein. Je
//                kürzer der Stringname, um so weniger Byte.
//                Der Stringinhalt darf nicht länger als 255 Zeichen sein!
//------------------------------------------------------------------------------

void enet_send_string(STRING* strname, var reseiver);

//------------------------------------------------------------------------------
//Name:           void enet_send_event(var typ,STRING* msg,var reseiver)
//Funktion:       Sendet ein userevent mit der angegebenen Nachricht an den
//                angegebenen Empfänger. Die Funktion die unter diesem Typ
//                gespeichert ist wird dann von dem Empfänger ausgeführt.
//Parameter:      typ........Event das aufgerufen werden soll
//                msg........Nachricht die gesendet werden soll
//                           (max. 255 Zeichen)
//                reseiver...Clientid des Empfängers oder -1 wenn es an alle
//                           gesendet werden soll.
//Rückgabe:		   keine
//Besonderheiten: Es dürfen nur Userdefinierte Events sein, also ab 6-20.
//                Kann nur von einem Client ausgeführt werden.
//------------------------------------------------------------------------------

void enet_send_event(var typ,STRING* msg,var reseiver);

//------------------------------------------------------------------------------
//Name:           void enet_send_skills(var entity,var from,var to,var reseiver)
//Funktion:       Sendet alle angegebenen Skills der globalen Entity. Es werden
//                die durch from und to angegebenen Skills auch mit gesendet. Um
//                nur einen Skill zu senden, müssen from und to gleich sein.
//Parameter:      entity.....globaler Entitypointer
//                from.......1. Skill der gesendet werden soll
//                to.........letzter Skill der gesendet werden soll
//Rückgabe:		   keine
//Besonderheiten: Es können maximal 40 Skills gesendet werden.
//------------------------------------------------------------------------------

void enet_send_skills(var entity,var from,var to,var reseiver);

////////////////////
//Entityfunktionen//
////////////////////

//------------------------------------------------------------------------------
//Name:           ENTITY* enet_ent_create(STRING* filename,VECTOR* position,
//                                                     STRING* funcname)
//Funktion:       Erzeugt eine globale Entity auf allen verbundenen Clients. Die
//                angegebene Funktion wird bei allen Clients ausgeführt. Für
//                lokale Entities sollte das normale ent_create benutzt werden.
//Parameter:      filename...Dateiname der zu erstellenden Entity
//                position...Position an der die Entity erstellt werden soll
//                funcname...Name der Funktion, die gestartet werden soll
//Rückgabe:		   lokaler Entitypointer
//				  		0 bei Fehler
//Besonderheiten: Der globale Pointer ist erst 1 Frame nach dem die angegebene
//						Funktion gestartet wurde verfügbar (-> wait(1) in Funktion).
//						Es muss eine Verbindung hergestellt sein, und bereits ein
//                Level geladen worden sein.
//                Um den globalen Pointer zu erhalten, muss enet_ent_globpointer
//                benutzt werden.
//                Darf nicht vor enet_synchronize ausgeführt werden (am Client)
//                Die Anzahl der globalen Entities ist beschränkt!
//------------------------------------------------------------------------------

ENTITY* enet_ent_create(STRING* filename,VECTOR* position,STRING* funcname);

//------------------------------------------------------------------------------
//Name:           void enet_ent_remove(var glob_pointer)
//Funktion:       Entfernt eine globale Entity auf dem Server und allen
//                verbundenen PCs.
//Parameter:      glob_pointer...globaler Pointer der Entity
//Rückgabe:		   keine
//Besonderheiten: keine
//------------------------------------------------------------------------------

void enet_ent_remove(var glob_pointer);

//------------------------------------------------------------------------------
//Name:           var enet_ent_globpointer(ENTITY* entity)
//Funktion:       Gibt den globalen Pointer einer Entity zurück. Oder -1 falls
//                diese keine globale Entity ist.
//Parameter:      entity...lokaler Pointer der Entity
//Rückgabe:		   globaler Pointer auf die Entity
//                -1 bei Fehler
//Besonderheiten: keine
//------------------------------------------------------------------------------

var enet_ent_globpointer(ENTITY* entity);

//------------------------------------------------------------------------------
//Name:           ENTITY* enet_ent_locpointer(var globalpointer)
//Funktion:       Gibt den lokalen Pointer einer Entity zurück. Oder 0 falls
//                diese keine globale Entity ist.
//Parameter:      globalpointer...globaler Pointer der Entity
//Rückgabe:		   lokaler Pointer auf die Entity
//                0 bei Fehler
//Besonderheiten: keine
//------------------------------------------------------------------------------

ENTITY* enet_ent_locpointer(var globalpointer);

//------------------------------------------------------------------------------
//Name:           var enet_ent_creator(var globalpointer)
//Funktion:       Gibt die ClientID des Erstellers dieser Entity zurück.
//Parameter:      globalpointer...globaler Pointer der Entity
//Rückgabe:		   ClientID des Erstellers
//                -1 bei Fehler
//Besonderheiten: keine
//------------------------------------------------------------------------------

var enet_ent_creator(var globalpointer);

//------------------------------------------------------------------------------
//Name:           void enet_ent_synchronize()
//Funktion:       Synchronisiert alle Entities mit dem Server. D.h. es werden
//                alle globalen Entities an der Position erstellt, die sie am
//                Server aktuell haben.
//						Wenn das Synchronisieren erfolgreich war, wird das 5. Event
//						ausgelöst.
//Parameter:      keine
//Rückgabe:		   keine
//Besonderheiten: Skills,Flags,... werden NICHT übernommen.
//                Diese Funktion darf nicht öfter als 1 mal pro Verbindung
//						verwendet werden.
//                Sie verbraucht sehr viel KB/s.
//------------------------------------------------------------------------------

void enet_ent_synchronize();

//------------------------------------------------------------------------------
//Name:           void enet_ent_freeglobs()
//Funktion:       Löscht alle globalen Pointer auf allen Rechnern. Dadurch wird
//				  		ein Levelwechsel ermöglicht.
//Parameter:      keine
//Rückgabe:		  	keine
//Besonderheiten: Darf nur vom Server ausgeführt werden.
//------------------------------------------------------------------------------

void enet_ent_freeglobs();

//////////////////////////////
//Verschlüsselungsfunktionen//
//////////////////////////////

//------------------------------------------------------------------------------
//Name:           void encrypt_string(char string[],unsigned long key[])
//Funktion:       Verschlüsselt einen String.
//Parameter:      string...String der verschlüsselt werden soll
//				  		key......Schlüssel mit dem verschlüsselt werden soll
//Rückgabe:		  	keine
//Besonderheiten: Wird zum Verschlüsseln des Datenverkehrs benutzt.
//------------------------------------------------------------------------------

void encrypt_string(char* str,unsigned long* key);

//------------------------------------------------------------------------------
//Name:           void decrypt_string(char string[],unsigned long key[])
//Funktion:       Entschlüsselt einen String.
//Parameter:      string...String der entschlüsselt werden soll
//				  		key......Schlüssel mit dem entschlüsselt werden soll
//Rückgabe:		  	keine
//Besonderheiten: Wird zum Entschlüsseln des Datenverkehrs genutzt.
//------------------------------------------------------------------------------

void decrypt_string(char* str,unsigned long* key);


Forgot to say that the plugin should be A6 compatible (didn't tested it yet) and works under Win 2000, ME, XP, Vista!

The plugin will come with a detailed documentation and some examples (all in english and german!).

I Hope you like the idea behind this thing and if there is enough interest you soon will be able to purchase this plugin and start creating your own working multiplayer game!

Dark_Samurai
Posted By: jigalypuff

Re: A real Networksolution for GS A6/A7 - 10/21/08 19:20

I`d pay 20 quid for it smile
Posted By: Puppeteer

Re: A real Networksolution for GS A6/A7 - 10/21/08 21:38

Ich würde auch zahlen wenn:
- Ich einzelne vars/teile von arrays von clients zu allen anderen clients senden kann
- Ich auch die Möglichkeit habe nur mit lokalen ents zu arbeiten
- C-script <3 support wäre toll
(sry hatte nicht viel zeit deshalb habe ich die doku net gelsen :> )
EDIT: Okay schon gefunden wunderbest =)
bleibt nur noch die c-script frage
Posted By: PadMalcom

Re: A real Networksolution for GS A6/A7 - 10/21/08 23:37

Ich würde es auch nehmen, wann kann man das PlugIn bekommen?
P.S. Vielleicht tauscht du gegen meinen DialogEditor? laugh
Posted By: broozar

Re: A real Networksolution for GS A6/A7 - 10/22/08 07:02

$50 to $100 if it really works (->demo)
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/22/08 09:30

Quote:

- Ich einzelne vars/teile von arrays von clients zu allen anderen clients senden kann
- Ich auch die Möglichkeit habe nur mit lokalen ents zu arbeiten
- C-script <3 support wäre toll
(sry hatte nicht viel zeit deshalb habe ich die doku net gelsen :> )
EDIT: Okay schon gefunden wunderbest =)


C-Script wird unterstützt! Lokale entities kannst du einfach per ent_create erstellen wink Das mit den Arrays funktioniert genau so wie bei GSTNet und wird so wie du das möchtest bereits unterstützt.

I decided to create 3 Versions of the plugin. One which will be free (only 4 connections and some other limits), a standard version (unlimit connections), and a professional version (encryption, compression, gamelist feature for lan and internet).

Quote:

Ich würde es auch nehmen, wann kann man das PlugIn bekommen?


I will add some new functions and change some things and then the standard version will be ready. It dependes on how much free time I have but I think in 1-2 weeks the standard version will be ready (also documentation, tutorial, examples, homepage).

Some new functions I will add this weekend:

enet_send_flags(var global_ent,var flag_from,var flag_to);
enet_set_encryptionkey(long* key);
enet_send_pos(var global_ent);

The pro version will come in 1 or 2 months (maybe at christmas ^^).

I hope that the first version of the free plugin will be finished this weekend.

Dark_Samurai
Posted By: Hand_Of_Law

Re: A real Networksolution for GS A6/A7 - 10/22/08 10:26

We are so far working on the GS network but if the plugin does work count me in.
Posted By: Quad

Re: A real Networksolution for GS A6/A7 - 10/22/08 10:38

count me too.
Posted By: Michael_Schwarz

Re: A real Networksolution for GS A6/A7 - 10/22/08 13:53

I'd buy it.
Posted By: Sajeth

Re: A real Networksolution for GS A6/A7 - 10/22/08 14:05

I'd hit, erm, buy it.
And if you need someone to translate things, I could help you smile
Posted By: Nowherebrain

Re: A real Networksolution for GS A6/A7 - 10/22/08 14:14

I'm in.
Posted By: Xarthor

Re: A real Networksolution for GS A6/A7 - 10/22/08 15:10

What licence model do you have in mind for that plugin?
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/22/08 15:28

Good to here that there are so much people interested in this! I'll try to complete the first version as fast as possible!

Quote:
What licence model do you have in mind for that plugin?


For the Standard and Pro versions:
You will buy the plugin and after that you can make as much games, applications,... with it as you like. BUT of course you aren't allowed to distribute the plugin itself or give it to somebody else or change the plugin in any way.

I'm still thinking about how to make the licence of the free version or if I only make a demo version and no free version at all... This dependes on things like how much I have to pay for other things (like for the webspace, online Shop, ...).
Posted By: picoder

Re: A real Networksolution for GS A6/A7 - 10/22/08 17:26

If it works better than A7 network, I'd buy it.
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 10/22/08 19:25

Sounds good for 20€.
If it can do all that and the documentation is in english I would probably buy it.
If it also comes with some workshops to learn to use the different features easily, through guided practical examples, and include some online support, I would buy the pro version for sure!
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 10/22/08 19:46

Originally Posted By: Dark_samurai
You will buy the plugin and after that you can make as much games, applications,... with it as you like. BUT of course you aren't allowed to distribute the plugin itself or give it to somebody else or change the plugin in any way.


What about when we publish the game, wont it need the dll to be distributed with the game for those functions to work? Will we be able to distribute the dll with our commercial games for them to work with it?
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 10/22/08 19:50

The functions are prettty self-explanitory, but if you could post the commented lines in english so I can know all the details, I would be very gratefull (and by the looks of it I would probably be even more interested after reading those descriptions, if it is possible to be more interested).
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 10/22/08 21:52

I have a few questions. Will there be conections by sockets? What is the limit of number of connections? Can the server handle client crashes automatically, or other types of unexpected disconnections? (Timeouts?). Can you send multidimentional arrays or structs?

Also it would be great if the server could work without having to actually load a level, that would be a great feature so the server we program using your plugin could handle multiple maps. (multi-zone support?). Is this feature planned?

A lobby system to search for online game sessions to join and chat before you start to play a level would be great.
Is late-join support implemented (when a game is already in progress)?



Additional functions that take care automatically of the most commonly used features in multiplayer games, this is not needed but I think they could take relatively little time to develop and would add great value to your project. Some ideas that come to my head are:
-chat being dealt with easily through a function instead of having to make one yourself like: chat_send(player, STRING*) or chat_send(all, STRING*), etc...
-some automated functions for "teams" support like: add_to_team(player_id, team_id), chat_send(team_id, STRING*), send_pos(player_pos, team_id), etc...

These are just the first ideas that come to my head, but i bet there are some more. All this "atuomated chat/teams" can already be done with your plugin if the user adds functions to control these things in his game script. But if these type of things are dealt with automatically by functions of your plugin I think it would be the difference between an Enet connection plugin worth 20€(or whatever you set the final price to), to a great tool worth more than double of that. And also by adding automatization for common multiplayer game features you would awaken the interest of a much broader public.

P.S.: I am interested in buying your plugin withought those automated things. These are just ideas that came to my head thinking: "If I was making a plugin like this and would release it comercially what could I do to increase its value and get more people interested in buying it".
Posted By: MadMark

Re: A real Networksolution for GS A6/A7 - 10/23/08 00:54

A suggestion. The demo/free version:
Increase the client number to 5 or 6 rather than 4. I can do 4 without a plugin, so how do I know that I am not just using the built-in comm package? Brings me no value or demonstrates much of an improvement.

Just my 2¢, collect the whole dollar.
Mark
Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/23/08 02:43

I would buy it if it's possible to send huge data packes(~10-20kb) without any variable correlation at once.
So if i want to send 5 Bytes - there should go 5 Bytes out the same with 5000 byte. Of course there have to be some adressing-header data but I don't want e.g. var_for_name-things
Posted By: PadMalcom

Re: A real Networksolution for GS A6/A7 - 10/23/08 18:35

When would you offer this extension? Need it within the next week wink
Posted By: oriongu

Re: A real Networksolution for GS A6/A7 - 10/23/08 19:03

I'm so frustrated with gs multi, i'd pay 20 bucks for a working solution with great pleasure smile
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/24/08 11:45

Quote:
What about when we publish the game, wont it need the dll to be distributed with the game for those functions to work? Will we be able to distribute the dll with our commercial games for them to work with it?


You always need the dll, also in the final game! What I ment was that you aren't allowed to distribute the dll itslef.

Quote:
The functions are prettty self-explanitory, but if you could post the commented lines in english so I can know all the details, I would be very gratefull (and by the looks of it I would probably be even more interested after reading those descriptions, if it is possible to be more interested).


I currently don't have the time to translate the documentation I posted. But the final documentation will be in english and german (it will be a compiled html helpfile, like the gs manual).

Quote:
Will there be conections by sockets? What is the limit of number of connections? Can the server handle client crashes automatically, or other types of unexpected disconnections? (Timeouts?).


Of course enet uses Sockets. You can set the connection limit when you create a server (enet_init_server). But there will be a limit in the standard version (maybe 16 or 32) and in the pro version it will be unlimited.
Yes it uses timeouts! Currently you aren't able to set them up, but I'll try to implent this too!

Quote:
Can you send multidimentional arrays or structs?


You can do this already with some tricks. But a real implementation was not done until now.

Quote:
Also it would be great if the server could work without having to actually load a level, that would be a great feature so the server we program using your plugin could handle multiple maps. (multi-zone support?). Is this feature planned?


The plugin won't make use of any directX function if you only run a server (also no level_load, ...) and yes multi-zone is planned for the pro version!

Quote:
A lobby system to search for online game sessions to join and chat before you start to play a level would be great.


Planned for Pro!

Quote:
Is late-join support implemented (when a game is already in progress)?


Yes you can do this! But this has nothing to do with the plugin, but how you program your game wink

Quote:
-chat being dealt with easily through a function instead of having to make one yourself like: chat_send(player, STRING*) or chat_send(all, STRING*), etc...
-some automated functions for "teams" support like: add_to_team(player_id, team_id), chat_send(team_id, STRING*), send_pos(player_pos, team_id), etc...


This can easily be done with the implented event system! I will make some examples how easy you can make a chat, teamchat... with the event system!

I don't want to let the plugin "explode" because of ton's of special features wich are only interesting for some people. Instead I want to create a perfect working and flexible basic system, which can be easily used for all situation which come with mp programming wink

Quote:
I can do 4 without a plugin, so how do I know that I am not just using the built-in comm package? Brings me no value or demonstrates much of an improvement


^^ You can trust me, I'm using enet not the gs dplay. But if you don't trust me, you can easily test this: Just use a version which don't supports mp (like extra, or lite-c) and you will see, that you still can make use of all pluginfunctions wink
I'm still thinking about the connection limits...

Quote:
I would buy it if it's possible to send huge data packes(~10-20kb) without any variable correlation at once.


Why do you want to send so big packets? The only thing I can imagin why you need this is for sending files. There will be a function for sending files in the pro version!

Quote:
So if i want to send 5 Bytes - there should go 5 Bytes out the same with 5000 byte. Of course there have to be some adressing-header data but I don't want e.g. var_for_name-thing


If you use enet_send_var,_string,_array,... then the name of the variable always will be sent => long name, much more bytes to send. The only thing to avoid this is to implent a function where you can regist a var, array,... so that they get a unique number => only 1-max.4 byte (dependes on how much you regist). I probably will implent this (but other features are currently more important because this is no real problem;the traffic is still low wink ).

I hope that I have answered all your questions!

Dark_Samurai
Posted By: Puppeteer

Re: A real Networksolution for GS A6/A7 - 10/24/08 13:40

wird es auch sowas wie send_unreliable geben?
weil dass ist für die array teile die ich senden werde sehr wichtig.
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 10/24/08 14:02

Before I was very interested, and now I am even more!
Your answers have gotten me decided to go for the pro version for sure!

Another question has come to my head, after you finish this great plugin, will you still support it? Like mabe making some walkthroughs or tutorials with examples? And keep updating the plugin when a newer version of GS comes out?
Also: Is this compatible with C-Script or Lite-C?
If it is C-Script... Is there a Lite-C version planned?
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/24/08 15:20

Quote:
wird es auch sowas wie send_unreliable geben?


Currently not implented but planned!

Quote:
Another question has come to my head, after you finish this great plugin, will you still support it? Like mabe making some walkthroughs or tutorials with examples? And keep updating the plugin when a newer version of GS comes out?
Also: Is this compatible with C-Script or Lite-C?
If it is C-Script... Is there a Lite-C version planned?


Yes I will give support, here (gs forum) and on my own side (comming soon). And yes I'm planning to release tutorials with working examples.
Yes there will be free updates if a new GS version comes out.
It's compatible with lite-c AND c-script (still not tested but it should work wink ).

The release of the demo/free version comes closer! I finished a major change in the sending architecture and now I'm working on the final entitysystem (which won't require DX-function (like level_load) if you run in server-only-mode).

Dark_Samurai
Posted By: WretchedSid

Re: A real Networksolution for GS A6/A7 - 10/24/08 15:35

Bin auch dabei, solange es denn bezahlbar bleibt. Mit wie viel muss man denn ungefähr rechnen?
Posted By: Sajeth

Re: A real Networksolution for GS A6/A7 - 10/24/08 15:49

Andere Idee: Wir zwingen Conitec dazu, dich zu bezahlen, damit das Ding dann in das original-GStudio integriert wird.
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/24/08 16:16

Quote:
Andere Idee: Wir zwingen Conitec dazu, dich zu bezahlen, damit das Ding dann in das original-GStudio integriert wird.


^^
Es ist immer schwieriger für andere zu arbeiten als für sich selbst... Ich würde nicht wollen bzw. habe auch gar nicht die Zeit dazu, dass ich für Conitec arbeite wink

Quote:
Bin auch dabei, solange es denn bezahlbar bleibt. Mit wie viel muss man denn ungefähr rechnen?


The prices aren't offical but standart will be around 20€ and pro around 50€ (all prices +- 5-10€). But this dependes on the difficulty of the new features wink

Dark_Samurai
Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/24/08 17:01

Quote:

Quote:
I would buy it if it's possible to send huge data packes(~10-20kb) without any variable correlation at once.


Why do you want to send so big packets? The only thing I can imagin why you need this is for sending files. There will be a function for sending files in the pro version!

Quote:
So if i want to send 5 Bytes - there should go 5 Bytes out the same with 5000 byte. Of course there have to be some adressing-header data but I don't want e.g. var_for_name-thing


If you use enet_send_var,_string,_array,... then the name of the variable always will be sent => long name, much more bytes to send. The only thing to avoid this is to implent a function where you can regist a var, array,... so that they get a unique number => only 1-max.4 byte (dependes on how much you regist). I probably will implent this (but other features are currently more important because this is no real problem;the traffic is still low wink ).


Lass es mich anders ausdrücken - ich möchte Pakete senden, die eine Größe von 1024 Byte überschreiten und somit normalerweise von fast allen firewalls geblockt werden würden - sprich: das Packet soll aufgesplittet, eizeln gesendet und in einem Stück zusammengesetzt rauskommen.
Was irgendwelche send_var funktionen mitsenden um Variablennamen zu übergeben ist mir egal - mir ist sowieso unverständlich warum man mit sowas traffic verschwendet.
Mich interessiert nur, ob das möglich sein wird - andernfalls ist das plug-in für mich nutzlos.

Posted By: Puppeteer

Re: A real Networksolution for GS A6/A7 - 10/24/08 17:30

Originally Posted By: Dark_samurai
Quote:
wird es auch sowas wie send_unreliable geben?


Currently not implented but planned!


This is very very very very very important for example for 2D multiplayer etc. and i need it for a special multiplayer system i developed. And this would be a reason not to buy it so please implement it =) :-D
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/25/08 11:45

Quote:
Lass es mich anders ausdrücken - ich möchte Pakete senden, die eine Größe von 1024 Byte überschreiten und somit normalerweise von fast allen firewalls geblockt werden würden - sprich: das Packet soll aufgesplittet, eizeln gesendet und in einem Stück zusammengesetzt rauskommen.
Was irgendwelche send_var funktionen mitsenden um Variablennamen zu übergeben ist mir egal - mir ist sowieso unverständlich warum man mit sowas traffic verschwendet.
Mich interessiert nur, ob das möglich sein wird - andernfalls ist das plug-in für mich nutzlos.


Ok ich hoffe, dass ich dich dieses mal richtig verstanden habe: Du möchtest selbst Pakete versenden können und wenn diese größer als 1024 Byte sind soll das Paket automatisch zerlegt werden?

Was hältst du davon: Du verwendest einfach enet_send_event(11,_str("Deine Paketdaten in Form eines Strings"),-1); und außerdem eine Funktion mit der man einstellen, kann dass pakete ab einer angegebenen Größe aufgesplittet werden? z.B. enet_set_maxpacketsize(1024);?
Dann würde bei den Clients eine Funktion ausgeführt werden sobald die Paketdaten ankommen bei der die Daten automatisch übergeben werden (z.B. test_func(var sender,STRING* data);...sender = clientid des senders,data = deine gesendeten Daten).

Würde das deinen Wünschen entsprechen?

Quote:
This is very very very very very important for example for 2D multiplayer etc. and i need it for a special multiplayer system i developed. And this would be a reason not to buy it so please implement it =) :-D


I know that this is important. As I said it's planned and will be implented for sure! wink
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/25/08 14:31

Ok I have a short question depending on the "no use of DX" feature: How is this handled in the GS MP system? If you start a server there, no DX window appears so I guess there is no DX used. But can I still use level_load, ent_create,...?

Thanks!
Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/25/08 15:00

Originally Posted By: Dark_samurai
Quote:
Lass es mich anders ausdrücken - ich möchte Pakete senden, die eine Größe von 1024 Byte überschreiten und somit normalerweise von fast allen firewalls geblockt werden würden - sprich: das Packet soll aufgesplittet, eizeln gesendet und in einem Stück zusammengesetzt rauskommen.
Was irgendwelche send_var funktionen mitsenden um Variablennamen zu übergeben ist mir egal - mir ist sowieso unverständlich warum man mit sowas traffic verschwendet.
Mich interessiert nur, ob das möglich sein wird - andernfalls ist das plug-in für mich nutzlos.


Ok ich hoffe, dass ich dich dieses mal richtig verstanden habe: Du möchtest selbst Pakete versenden können und wenn diese größer als 1024 Byte sind soll das Paket automatisch zerlegt werden?

Was hältst du davon: Du verwendest einfach enet_send_event(11,_str("Deine Paketdaten in Form eines Strings"),-1); und außerdem eine Funktion mit der man einstellen, kann dass pakete ab einer angegebenen Größe aufgesplittet werden? z.B. enet_set_maxpacketsize(1024);?
Dann würde bei den Clients eine Funktion ausgeführt werden sobald die Paketdaten ankommen bei der die Daten automatisch übergeben werden (z.B. test_func(var sender,STRING* data);...sender = clientid des senders,data = deine gesendeten Daten).

Würde das deinen Wünschen entsprechen?


Exactamente.
Wenn das geht, ohne ein Level laden zu müssen oder irgendwelche Entitydaten zu senden - fang'ich auch noch an im Kreis zu hüpfen.
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/25/08 20:00

Quote:
Wenn das geht, ohne ein Level laden zu müssen oder irgendwelche Entitydaten zu senden - fang'ich auch noch an im Kreis zu hüpfen.


Alles was du nicht brauchst, musst du auch nicht verwenden und verbraucht auch keinen Traffic wink Also auf deutsch, du musst kein level laden und keine Entityfunktionen verwenden und das Plugin wird trotzdem funktionieren.


One thing because of the "serverapplication" or the "no need of DX"-Feature:
I think I will implent it like this: If you want to create a serverapplication you set video_mode = 0; => no DX window but you can still use level_load, ent_create,...
Is that OK? Any objections?
Posted By: Puppeteer

Re: A real Networksolution for GS A6/A7 - 10/25/08 22:50

Originally Posted By: Dark_samurai

One thing because of the "serverapplication" or the "no need of DX"-Feature:
I think I will implent it like this: If you want to create a serverapplication you set video_mode = 0; => no DX window but you can still use level_load, ent_create,...
Is that OK? Any objections?

I dont really understand what that means.. :-S :-D
Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/26/08 07:40

Originally Posted By: Puppeteer
Originally Posted By: Dark_samurai

One thing because of the "serverapplication" or the "no need of DX"-Feature:
I think I will implent it like this: If you want to create a serverapplication you set video_mode = 0; => no DX window but you can still use level_load, ent_create,...
Is that OK? Any objections?

I dont really understand what that means.. :-S :-D


video_mode=0 opens a -sv mode like console instead of creating a direct3d-rendering object.
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/26/08 19:04

I've Added 4 new functions:
- void enet_change_level(STRING* level_name);
- void enet_send_flags(var glob_pointer,var from,var to,var receiver);
- void enet_send_pos(var glob_pointer,var receiver);
- void enet_send_angle(var glob_pointer,var receiver);

Coming soon:
- void enet_set_unreliable()

And I rewrote the whole entity- and sendingsystem!
Started with the documentation (it will be a .chm file, like the gs manual).

The demo will come somewhere along next week!
Posted By: oriongu

Re: A real Networksolution for GS A6/A7 - 10/26/08 19:46

Look's good !

I am really looking foward for the demo.. smile
Posted By: Joozey

Re: A real Networksolution for GS A6/A7 - 10/26/08 22:19

Quote:
Now I wanted to know how much people would be interested in such a network solution for about 20€?
I'd pay (even a little more) for a full working version if you include the source code (for my own educational purpose, not to rip-off a new plugin).
I believe you're working with the engine's acknex.dll, therefore, make sure you own the 3dgs SDK lisence, or upgrade to A7 pro first, if you release it, so you aren't forced to add the source wink.

For anyone wondering:
Originally Posted By: engine_sdk\readme_engine.txt
*** Engine SDK for 3D GameStudio / A6 ***

A single user license to A6 Pro Edition grants the right
to use this SDK for developing A6 applications.

You can also program A6 applications with lower editions,
but under an Open Source license only. That means that
for distributing the engine module acknex.dll you have
to provide a machine readable copy of the complete product
source code along with the product.
[...]

I suppose that should have been A7. (Does that make the license invalid?).

Full license purchase: http://www.shareit.com/product.html?prod...379419a43df7cf1
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 10/26/08 22:47

First of all I wanted to thank you for keeping us informed on the state of development and updates you are making for this tool.

After reding these quotes I was wondering... I think that the dedicated server mode for A7 is only available in the pro version, and I was wondering if the system you are designing to be able to run withought loading levels (video_mode=0) is independant from the gs version we have. Will the comercial edition also be able to use this feature of your plugin?

Originally Posted By: FlorianP
Originally Posted By: Puppeteer
Originally Posted By: Dark_samurai

One thing because of the "serverapplication" or the "no need of DX"-Feature:
I think I will implent it like this: If you want to create a serverapplication you set video_mode = 0; => no DX window but you can still use level_load, ent_create,...
Is that OK? Any objections?

I dont really understand what that means.. :-S :-D


video_mode=0 opens a -sv mode like console instead of creating a direct3d-rendering object.

Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/27/08 13:42

video_mode = 0 works with all editions, -sv - Engines Servermode works with com and pro only.

Could you maybe add a function that allows to drop a client by the server?
And are packets(like i described) sent in one engine-frame are got by the reciever(client or server) still one after another as single packets or just the last packet sent?
So older packets aren't overwritten if they arrive in one frame and trigger the recieve-function for any packet recieved?
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/27/08 17:35

@Joozey: I know that I have to purchase a SDK license.
But thanks that you mentioned it!

If someone is selling his SDK license, contact me via PM, please!

Quote:
Could you maybe add a function that allows to drop a client by the server?


enet_disconnect_client() (listed in the documentation I posted in my first post)

Quote:
And are packets(like i described) sent in one engine-frame are got by the reciever(client or server) still one after another as single packets or just the last packet sent?
So older packets aren't overwritten if they arrive in one frame and trigger the recieve-function for any packet recieved?


Packets come in the order you send them. The easierst methode for your problem would be that you split your data yourselve in your script and send it partwise with enet_send_event().
This would be the best for both (me and you). First of all I don't have to implent another feature, and you can make this excactly how you want it.

But if you really want an implented feature, I still have to think and research how this is done the easiest way with enet or if there already is an implented function for this.

The best would be to wait until I release the demo. Than you can try out if you can handle this how you want it and if not I will try to implent something that supports you wink


Worked on the Manual... Still a lot of things to write down ^^
Sadly I don't have much time today and tomorrow so I think that there will come no new functions until wednesday.
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/30/08 14:38

@FlorianP: Good news! I found out that enet automatically splits big packets => your requested feature is already implented!
I extended the limit of the max. message size of enet_send_event to 2048. Is this enough for you?

Ok I've added some new functions:
-enet_set_unreliable(var mode);
-enet_set_playername(STRING* playername);
-enet_get_playername(var clientid,STRING* playername);

The new playername system synchronizes the playernames on all clients.


Ok now it's time to think about how to name this plugin... any ideas?
The only idea I've got was "ackwire". What do you think?
Posted By: Xarthor

Re: A real Networksolution for GS A6/A7 - 10/30/08 17:29

how about: "acknet" or is this name already taken?
Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/30/08 17:58

why has there to be a limit? i dont know how big theyll become - but probably bigger than 2048
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/30/08 20:08

Quote:
how about: "acknet" or is this name already taken?


I think so, but I'm not sure. I will search the forum...

Quote:
why has there to be a limit? i dont know how big theyll become - but probably bigger than 2048


Because the function uses strings and I have to init them with a fixed size. The problem is that if I use such big strings, the plugin will consume more RAM even if you don't need such big strings...
Or is there a way to generate a string in c++ with various lenght?
Posted By: Slin

Re: A real Networksolution for GS A6/A7 - 10/30/08 20:16

Quote:

Or is there a way to generate a string in c++ with various lenght?

If your string is a char array, you could just create it with a length given by the user using new, or you could may even use the vector template for it, if you use the string template, I am sure that there is a way to use variable length as well...
Sorry, I can´t really tell you how as I have nearly no knowledge of stl yet, also it already was quite handy a few times for me, but I know that there are some ways wink

I btw wouldn´t buy the dll but just because I would prefer to get a little bit into the whole stuff by writing such a dll on my own :P
Posted By: FlorianP

Re: A real Networksolution for GS A6/A7 - 10/30/08 20:34

Of course there are many ways to create a data-struct of variable length.
One possibility is to create small structs and link them with pointers to the next struct.
Or look for malloc and calloc.
Posted By: DC9

Re: A real Networksolution for GS A6/A7 - 10/30/08 21:46

Originally Posted By: Dark_samurai
Quote:
how about: "acknet" or is this name already taken?


I think so, but I'm not sure. I will search the forum...


I searched google. Acknet, 3Dnet, gamenet, and gsnet are already used for unrelated things.

gs_wan is available though.
Posted By: Blade280891

Re: A real Networksolution for GS A6/A7 - 10/30/08 23:23

GSN: A Real Network Solution???
GSN = Gamestudio Networking
Posted By: Quad

Re: A real Networksolution for GS A6/A7 - 10/31/08 00:23

just name it gamestudio enet plugin, gsep or gep for shrot.
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 10/31/08 10:55

Added the last new functions:
-enet_ent_regist(ENTITY* loc_pointer);
-enet_get_time();

+Changed something on the ping value generation system.

I will implent strings with various length today (no sizelimits anymore) and after that I start with testing the whole plugin and finishing the documentation. I think you will get the first demo this weekend wink

Quote:
GSN = Gamestudio Networking


hmmm... sounds nice!

Quote:
just name it gamestudio enet plugin, gsep or gep for shrot.


I don't want to use enet in the name of the plugin because in the pro version you will be able to use functions which have nothing to do with enet (using udp broadcasts, http support,...).
Posted By: Quad

Re: A real Networksolution for GS A6/A7 - 10/31/08 11:02

i understand.then Gamestudio Network Plugin, GNP or GSNP

just saying it "gamestudio networking" may lead misunderstandings sometimes.(like people who dont know that it is a plugin may think it is already in the GS.)

BTW plugin is going to be awesome, do you have any price estimation for pro version?(i'll buy it certainly but just wondering.)
Posted By: Germanunkol

Re: A real Networksolution for GS A6/A7 - 11/01/08 02:00

right now, I'm working with GSTNET and i've changed too many times (3dgs multiplayer, populace, now gstnet) to choose a new MP engine now, but if this comes with support and a way to create a dedicated server, I'd probably buy it for later games.
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 11/01/08 19:17

@germanunkol: My plugin works nearly the same way like GSTNET, but supports more/some different functions.
I will give support and dedicated servers will be supported!

Quote:
just saying it "gamestudio networking" may lead misunderstandings sometimes.(like people who dont know that it is a plugin may think it is already in the GS.


Of course that's a problem...
I think I will call it ackwire.

Quote:
BTW plugin is going to be awesome, do you have any price estimation for pro version?(i'll buy it certainly but just wondering.)


Currently not. I still have to think about the prices.


I finished the german manual today. It was a hard piece of work...
The manual contains all the 40 functions well described. All with a Lite-C AND C-Script example.

I think that I won't get everything ready tomorrow because there are still a lot of things to do: Writing the english manual, adding the unlimited data support and testing the whole plugin.
Posted By: FBL

Re: A real Networksolution for GS A6/A7 - 11/02/08 01:04

a7net
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 11/02/08 21:31

Hmm... maybe ANet because its not only for A7.

Finished the ulimited data support and did 90% of the testing work.
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 11/04/08 16:07

Its great to hear you are almost finished!
Cant wait to test it!

Do you have an aproximate time it could take you to have the pro version?
Can we buy the standard and then pay the diference in price when the pro version is released?
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 11/04/08 19:13

Quote:
Can we buy the standard and then pay the diference in price when the pro version is released?


Of course! smile

Quote:
Do you have an aproximate time it could take you to have the pro version?


I hope that it finish this before christmas. wink


Good news: Today I finished the developing of the ANet-Standard/Demo Version!
It's now working with Lite-C, C-Script and A6!

After I finished the english manual (maybe tomorrow?) I will release the demo. Than I'll create a homepage and after this you can buy the full Standard version (no price yet!). I will also create a tutorial than.
Posted By: Carlos3DGS

Re: A real Networksolution for GS A6/A7 - 11/09/08 10:29

Great news!
Cant wait to try it out!
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 11/10/08 16:53

The english manual is ready since friday. Actually I wanted to upload the demo last weekend, but than I had no internet access (because of an problem with my provider) until sunday night and had no chance to buy the plugin sdk => I still have to wait to get it and after this I will upload the first (beta) demo!

Sorry for the delay!

Edit: Forgot to say that I started with the homepage and the first tutorial!
Posted By: Sajeth

Re: A real Networksolution for GS A6/A7 - 11/11/08 18:26

Edit: nevermind
wink
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 11/11/08 18:30

I created a new thread for the demo, because I wanted to seperate the development and the release!

Here you go: Demo-Thread

Please post your new questions into the new thread, so that this thread can be closed!

@Sajeth: Seems like your link is broken...
Posted By: Sajeth

Re: A real Networksolution for GS A6/A7 - 11/11/08 18:33

Check your messages wink
Posted By: Dark_samurai

Re: A real Networksolution for GS A6/A7 - 11/11/08 18:42

Sorry, I haven't got anything...
Could you send it again, please?
© 2024 lite-C Forums