Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
01.12.2000, 15:02
BSE_crid



Ich hab' folgendes Problem: ich verwende die HL-Engine für ein Projekt an der Uni. Dabei geht es darum, zu mehreren Leuten im Netzwerk gleichzeitig in einer Map die "Architektur" zu verändern. Konkret sieht das momentan so aus, daß mehrere Leute gleichzeitig eine größere Menge "Kisten" in der Gegend rumschiebt. Klingt erstmal recht prinitiv, aber dabei geht's eher um das Prinzip der Interaktivität, als um schicke Optik. Das Problem dabei ist: man kann die Lage der Kisten nie abspeichern. Sobald man die Map neu startet, ist das "Ergebnis" der vorangegangenen Verschiebeaktion verloren.

Welcher Coder hier ist so genial, und kann den Multiplayer-Modus so umkrempeln/ergänzen, daß man auch im Multiplayer-Modus abspeichern kann? Die Spielerpositionen sind dabei komplett egal, sie würden bei einem erneuten Start der Map einfach wieder an den respawn-Points erscheinen. Wichtig wäre es, die Lage der Kisten zu speichern.

BITTE BITTE seid genial!!!! ;-)

--

[BSE] crid

Compile-Errors-Artikel (Version 09-01)

http://www.crid.de oder http://www-public.tu-bs.de:8080/~y0009981/

zum Seitenanfang zum Seitenende Profil || Suche
001
01.12.2000, 15:25
user3427



Kann man nicht einfach aus der MP.dll heraus in eine Datei auf der Platte des Servers schreiben? Dann ließe sich ganz einfach beim Neustart alles wieder gelesen werden.

--

zum Seitenanfang zum Seitenende Profil || Suche
002
01.12.2000, 16:55
BSE_crid



....ich muß zugeben, daß ich von der ganzen Sache so gut wie überhaupt keine Ahnung habe...ich müßte mich da so ziemlich komplett auf Euch Cracks verlassen. Deshalb sagt mir Dein Post erstmal nicht wirklich viel...trotzdem vielen Dank.

Weitere Meinungen sind natürlich absolut willkommen.

--

[BSE] crid

Compile-Errors-Artikel (Version 09-01)

http://www.crid.de oder http://www-public.tu-bs.de:8080/~y0009981/

zum Seitenanfang zum Seitenende Profil || Suche
003
01.12.2000, 17:20
dp
Administrator


da würde ich mal im coding forum von wavelenght fragen, da gibts viele geniale glaub ich.

prefect den ich für genial halte aber z.z. nicht da ist will sowas glaube ich auch bei hl repulse einbauen.

http://dynamic.gamespy.com/~wavelength/ubb/forumdisplay.cgi?action=topics&forum=Coding&number=3&DaysPrune=&LastLogin=
http://www.valveworld.com/repulse/

--

zum Seitenanfang zum Seitenende Profil || Suche
004
01.12.2000, 19:18
TheTinySteini



Pühhh. Hmm. Ich denk jetzt einfach mal laut:
- man braucht das FullSDK (da könnte man zumindest mehr Chancen haben...)
- man muss herausfinden, wie die Speicherfunktion überhaupt aufgerufen wird
- man müsste die Spieler vom Speichern ausschließen (schließlich werden nicht sofort beim Laden der Map alle Spieler anwesend sein) - andere Entities müssen jedoch gespeichert werden.
- die Speicherfunktion selbst ist ja für jedes Entity in Form der savegamedata oder so Struktur implementiert....

Ich guck mal was nach...
<edit>
Hab nachgeguckt. Nich ganz einfach: Beim trigger_autosave zum Beispiel wird ein Servercommand aufgerufen ("autosave"), aber dieses ServerCommand ist nicht in der mp/hl.dll definiert... Wird also offensichtlich von der Engine aus aufgerufen. Und die wird wohl auch entscheiden, ob es sich um ein Singleplayer oder Multiplayer-Spiel handelt. Man könnte versuchen, die Save-Restore Routinen manuell aufzurufen, aber da bin ich durch die Struktur noch nicht durchgestiegen...
</edit>

--

TheTinySteini
Coder Poke646
"Don't Panic" - Hitchhiker's Guide to the Galaxy

zum Seitenanfang zum Seitenende Profil || Suche
005
02.12.2000, 00:56
user3427



Ließe sich die Speicherfunktion nicht dadurch improvisieren, dass man die Position aller Entities (in diesem Fall wohl nur der Kisten) einfach in einer Datei abspeichert (auf dem Server)? Dann müsste man die nachher nur laden und die Kisten wieder an die Position setzen.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
02.12.2000, 01:14
Masterstroke



Öhmm....Also ich denke, es ist schon zu machen, das wäre dann halt ein Mod für Half-Life...
Hier meine Ideen:

Also, da ich denke, das es ein bestimmtes Entity ist, das du immer nimmst, sollte man einfach zuerst: Alle Entitys dieser Art suchen und deren Koordinaten in einer einfachen Datei, kann ja eine .txt-Datei sein, speichern.
Dieses speichern würde ich dann einfach ausgelöst durch einen aufruf in der Konsole machen(bzw. kann ja dann auch auf ne Taste gelegt werden.)

Naja, bei jedem Start einer Map müsse dann die .dll kurz schaun, ob eine Textdatei existiert und diese dann verarbeiten, oder nicht...

Naja, die jetzige Idee benutzt zwar noch keine Multi-Speicherfunktion, also mit mehreren Speicherplätzen, kann man aber natürlich noch hinzufügen, bzw. auch einfach die Text-Dateien rückkopieren, umkopieren...

Also, ich denke es ist nicht utopisch :)

Und meine Idee ist wirklich zu realisieren!
(Man könnte es mit den Waypoints eines Bots vergleichen!)

--

Masterstroke
resourcecode.de

zum Seitenanfang zum Seitenende Profil || Suche
007
02.12.2000, 03:34
BSE_crid



.....das läßt mich ja alles schon mal etwas hoffen... Gibt's vielleicht auch jemanden, der so was programmieren kann? Wiegesagt: ich hab nicht den blassesten Schimmer vom Coding.... ;-)

--

[BSE] crid

Compile-Errors-Artikel (Version 09-01)

http://www.crid.de oder http://www-public.tu-bs.de:8080/~y0009981/

zum Seitenanfang zum Seitenende Profil || Suche
008
02.12.2000, 14:36
apfelkorn



botman?

--

zum Seitenanfang zum Seitenende Profil || Suche
009
06.12.2000, 17:37
Prefect-Eire



botman??

Also, die normale Speicherfunktion funktioniert so: Auf irgendeine Art und Weise (z.B. das autosave, was Masterstroke erwaehnt hat) wird innerhalb der Engine der Speicheralgorithmus ausgeloest. Die Engine ruft dann der Reihe nach die Save()-Funktion von jeder Entity auf. Filehandling etc. ist komplett innerhalb der Engine.

Um ein Multiplayerspeichern einzubauen solltest du entweder deine eigene MPSave/Restore()-Funktionen in alle Entities einbauen, Filehandling etc.. musst du selber machen. Oder du bastelst etwas um die existierenden Save()/Restore()-Funktionen herum, so dass du die schon bestehende Architektur verwenden kannst - die ist naemlich teilweise recht genial. Allerdings waere das ne ziemliche Sauerei, und solange ihr nicht gerade bei OOP, Templates und den sonstigen seltsameren Eigenheiten von C++ zu Hause seid solltet ihr mit der letzteren Option erst gar nicht anfangen.

cu,
Prefect

--

Hi! I'm a .signature *virus*! Copy me into your ~/.signature to help me spread!
No virus scan is perfect!

zum Seitenanfang zum Seitenende Profil || Suche