Hat jemand ne Ahnung obs sowas wie MPI für Spiele gibt?
Hab mir überlegt, dass es eigentlich ganz nützlich wäre seinen Netzwerk Code so zu machen, aber man kann ja nicht fordern, dass sich alle Spieler vor einem Spiel zu einem MPICluster zusammenfügen. Glaub auch nicht, dass das automatisch geht.
Und bevor ich jetzt selbst Anfang sowas zu schreiben, frag ich lieber erstmal.
Gruß
MPI ähnliche Bibliothek für Spiele
- Lord Delvin
- Establishment
- Beiträge: 598
- Registriert: 05.07.2003, 11:17
- Chromanoid
- Moderator
- Beiträge: 4286
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: MPI ähnliche Bibliothek für Spiele
Also du könntest mal diverse andere Netzwerk Sachen wie Google Protocol Buffers, Apache Thrift, das Apache Hardoop Projekt o.Ä. anschauen.
Speziell für Spiele fällt mir momentan nur Raknet ein.
Ansonsten könntest du auch mal nach diversen P2P-Implementationen schauen, wobei mir da persönlich nur jxta eingermaßen bekannt ist. Das Ding ist aber recht komplex und hat im Moment durch das Schließen von Projekt Kenai (Sun's Versuch ein besseres Sourceforge zu schaffen, der jetzt von Oracle erst mal wieder geschlossen wurde :/) ein paar Community Probleme...
Speziell für Spiele fällt mir momentan nur Raknet ein.
Ansonsten könntest du auch mal nach diversen P2P-Implementationen schauen, wobei mir da persönlich nur jxta eingermaßen bekannt ist. Das Ding ist aber recht komplex und hat im Moment durch das Schließen von Projekt Kenai (Sun's Versuch ein besseres Sourceforge zu schaffen, der jetzt von Oracle erst mal wieder geschlossen wurde :/) ein paar Community Probleme...
- Lord Delvin
- Establishment
- Beiträge: 598
- Registriert: 05.07.2003, 11:17
Re: MPI ähnliche Bibliothek für Spiele
Also nach dem Wikipedia Artikel ist das viel zu groß und viel zu sehr auf Dinge ausgelegt, die ich garnicht brauche. Ich würd damit n Darknet schreiben, aber kein Spiel. Und ich glaub auch nicht, dass die sich von der Orakleübernahme in die Suppe spucken lassen:)Chromanoid hat geschrieben:Ansonsten könntest du auch mal nach diversen P2P-Implementationen schauen, wobei mir da persönlich nur jxta eingermaßen bekannt ist.
ProtocolBuffers und Thrift sind mir unsympatisch, weil sie einen weiteren Compiler benötigen und hadoop sieht mir so aus als wärs eigentlich für ein ganz anderes Problem designt, also auch eher unbrauchbar.
Ich will eigentlich was haben, was mit dem C++ Template System auskommt.
- Chromanoid
- Moderator
- Beiträge: 4286
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: MPI ähnliche Bibliothek für Spiele
jo das stimmt natürlich. die leute in der mailing liste sind halt etwas angenervt davon ^^.Lord Delvin hat geschrieben:Also nach dem Wikipedia Artikel ist das viel zu groß und viel zu sehr auf Dinge ausgelegt, die ich garnicht brauche. Ich würd damit n Darknet schreiben, aber kein Spiel. Und ich glaub auch nicht, dass die sich von der Orakleübernahme in die Suppe spucken lassen:)
also apache avro vom hardoop projekt wäre halt vielleicht was für die de-/serialisierung (da muss man nur json schemas für erstellen).Lord Delvin hat geschrieben:hadoop sieht mir so aus als wärs eigentlich für ein ganz anderes Problem designt
viele netzwerk frameworks benutzen die eigenen compiler, um den einsatz in vielen unterschiedlichen sprachen zu gewährleisten - ist das echt so ein großer sympathienachteil für dich? Du musst doch bloß ein Schema für den jew. compiler anlegen und bekommst dann deine Netzwerk-Datenklassen generiert. Bei Thrift ist glaube ich recht vorteilhaft, dass man gleich ein bisschen mehr netzwerk infrastruktur drin hat.Lord Delvin hat geschrieben:ProtocolBuffers und Thrift sind mir unsympatisch, weil sie einen weiteren Compiler benötigen
Hast du schon mal SDL_Net angeschaut?
- Lord Delvin
- Establishment
- Beiträge: 598
- Registriert: 05.07.2003, 11:17
Re: MPI ähnliche Bibliothek für Spiele
Ja. Das is so in etwa das, was ich benutzen will um nen NetworkCommunikator zu implementieren. Ich denke das das, was ich vorhab etwas unintuitiv für die meisten Programmierer sein wird, weil ich versuche Threads und Entfernte Prozesse gleich zu behandeln, also insbesondere vor dem Nutzer der Bibliothek völlig verstecke, dass es sowas wie ein Netzwerk überhaupt gibt. Das ist zumindest mal das Ziel.Chromanoid hat geschrieben:Hast du schon mal SDL_Net angeschaut?
Ich denk ich werd das mit boost::asio Implementieren, weil ich sowieso schon relativ viel boost libs verwende unds dann auf eine mehr auch nicht ankommt. Ist auf jeden Fall schöner als SDL_net einzubauen. Zumal ich glaube, dass die asio Entwickler fähiger und aktiver sind.
EDIT:
So hab mich jetzt ma zwei Tage hingesetz und mir ist jetzt selbst auch wesentlich klarer, wie so ne Bibliothek eigentlich funktionieren sollte. Für locale Kommunikation hab ichs im Prinzip schon gemacht, benutzung sähe dann in etwa so aus:
Code: Alles auswählen
#include <iostream>
#include "../libmpl/include/mpl.h"
#include <boost/thread.hpp>
#include <cstring>
struct test
{
mpl::LocalCommunicator* comm;
test(mpl::LocalCommunicator* comm)
:comm(comm){};
test(const test& t)
:comm(t.comm){};
void operator()()
{
mpl::Message m;
mpl::Client c(comm);
while(!c.recv(m));
if(!strncmp(m.get<const char*>(), "Load1", m.getLength()))
{
while(!c.recv(m));
std::cout << "Load file " << m.get<const char*>() << std::endl;
c.send("success", m.getSource());
}
else
c.send("unknown command!", m.getSource());
}
};
using namespace std;
int main()
{
cout << "Creating local Communicator..." << endl;
mpl::LocalCommunicator comm;
{
cout << "Creating local Clients..." << endl;
mpl::Client c1(&comm), c2(&comm);
boost::thread* slave = 0;
{
test t(&comm);
slave = new boost::thread(t);
}
cout << "Clients connected." << endl;
c1.send("Test", c2.id());
c1.send("Load1", 3);
c1.send("random", 3);
mpl::Message m;
while(!c2.recv(m));
cout << "c2 got " << m.get<const char*>() << endl;
while(!c1.recv(m));
slave->join();
cout << "thread answered: " << m.get<const char*>() << endl;
}
cout << "Wait for Communicator to die.." << endl;
return 0;
}
Code: Alles auswählen
Creating local Communicator...
Creating local Clients...
Clients connected.
Load file random
c2 got Test
thread answered: success
Wait for Communicator to die..
stub @ /home/lorddelvin/libmpl/src/mpl/LocalCommunicator.cpp line: 117
LCD just halts; this may lead to problems
Falls es irgendjemand haben oder weiterentwickeln will schreibt einfach.