Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Map+NPC initialisierung in 2D (https://www.delphipraxis.net/5038-map-npc-initialisierung-2d.html)

Hanswurst 21. Mai 2003 14:44


Map+NPC initialisierung in 2D
 
Sersn leutz
ich hätte da mal gern n Problem ..
n paar Kumpels und ich wollen ein 2D-MMORPG (Massively Multi Online Role Playing Game) proggen...
und nun is meine frage , wie man 1. Maps "laden" lassen kann und wie man NPCs in die MAP-Datein einbauen kann , die automatisch beim Laden der Map initialisiert werden , wie z.B. Gegner oder auch nur einfache Türen mit erweitertem Script (zB. dass die Tür nach oben "fährt").

wenn da jemand was weis ... einfach nur hierher posten :D

THX
biss denn
CU

chrys 23. Mai 2003 21:34

wenn du solche fragen hast dann solltest du wohl eher mit einem etwas kleineren projekt anfangen ....

soll das ganze 2D oder 3D sein ?? isometrisch oder standard??

Hanswurst 25. Mai 2003 16:47

1.wenn man schreibt "ein 2d-mmorpg" isses dann 2 oder 3d ....
(nix gegen dich aber ich hatte heut nen schlechten tag)
2.isometrisch
3.am besten mit OpenGL zeichnen (hab da schon GLXtreem)
4.wie meinst du "mit etwas kleinerem Anfangen" ,wenn ich solche fragen hab" ???
sollte man damit nicht schon recht bald anfangen ??
ich dachte mir , dass die maps aus tilesets und User-gfx (vom grafischen her) bestehen ,da viele Leute ja auch selber maps baun/online haben wollen; die struktur der tilesets hab ich mir auch schon ausgedacht , nur weis ich net , wie man die maps 1.initialisieren kann und 2. die doch realtiv großen Tilesets in so kleine kästchen unterteilt..

wenn mir das jemand sagen/erklären kann ..
einfach hierher posten

Bis denn
CU

CalganX 25. Mai 2003 17:13

Hi,
erstmal würde es mich interessieren, wie lange du schon Delphi programmierst, denn wenn du damit gerade erst anfängst, dann würde ich das gleich wieder vergessen!
Wenn du schon länger mit Delphi programmierst, dann solltest du auch schon ein wenig Erfahrung in Grafik- und Spieleprogrammierung haben.
Denn wenn du so ein Spiel programmierst, dann solltest du dir einige wichtige Fragen stellen (als Stichworte):
  • grafisches Interface?
  • Server?
  • Kommunikation zwischen Server und Clients?
  • Anmeldung und Speicherung von Userdaten?
  • grafische Darstellung?
  • NPCs?
  • Veränderung der Umgebung bei Tötung von NPCs?
  • beliebig fortsetzbar
Ich will dir die Idee nicht austreiben, allerdings ist das keine Sache von 2 Tagen! Denn für mich hört sich, dass an, als ob ihr das mal eben machen wollt.

Chris

Hanswurst 26. Mai 2003 12:37

Moin Leutz
1.OpenGl im 2d-modus

2.Ja,am besten auf Linux-Basis (hab nen linux-Server daheim),was ja mit der Delphi zu Kylix umwandlung net schwer is

3.ich weis jetzt net ganz was/wie du das meinst ;
als protokoll für das Spiel an sich hätt ich UDP verwendet und als "kompatiblitätsmodus" , da es auf einigen Systemen zu rucklern kommt (weis zwar net warum , hab ich aber in nem anderen MMORPG gesehen) , TCP/IP
für die kleine Chatfunktion nur TCP/IP anstatt IRC , da es ja max 14 Zeichen im Nick mitmacht..

4.Die am besten in der Registry (bzw das was Linux hat)

5.was verstehst du unter "grafische Darstellung" ?? wenn du 2 oder 3D meinst , dann isses 2D mit isometrischer Ansicht (Vogelperspektive)

6.Ja

7.wenn dann nur eine Blutlache , die aber nach einiger Zeit verschwindet (inkl Leichnahm)

8.haben wir uns schon sehr viele Gedanken gemacht

Wenn noch Fragen sind , fragt einfach ...

Bis denn
CU

Minz 26. Mai 2003 13:15

Hi Hanswurst

wollte mich auch grad ransetzen und das Know-How für
ein mmorpg besorgen :)

Allerdings eher so nach der Art, wie ich die Reihenfolge
von TImages organisieren kann...

Also zu deinem:
bezüglich der Map:
eigentlich musst du dir nur sowas wie eine "Mapsprache"
überlegen. Wenn Ihr Eure Welt z.B. in "Tiles" aufbaut,
also Felder, dann reicht wenn du deine Map als Matrix
repräsentierst. Darin kannst du dann z.B. ein "B" schreiben
für Baum usw. Dein Programm muss diese Zeichen in der
Matrix dann halt übersetzen.
Wenn hinter den einzelnen Objekten dann noch ein Script
stehen soll, müsst Ihr Euch überlegen, ob die Scripte
direkt in die Map-Datei soll oder ob die seperat angelegt
werden. Bei letzterem, müsst ihr dann halt einen entprechenden
Verweis in der Matirx ablegen.

Das was die anderen Meinen mit was kleinerem Anfangen ist,
das sich ein Erfahrener Programmierer soetwas selber ausdenken
kann.

Aber hey, das sollte doch jeder für sich entscheiden, womit er
sich beschäftigt. Und bei der Umsetzung eines größeren Projekts
kann man auch eine Menge lernen. Jetzt wurde hier viel am Thema
vorbeigeredet, ohne das Hanswurst damit wirklich geholfen war.

Ich hoffe du kannst jetzt hiermit etwas anfangen. Denn es zeigt
dir ja die grundlegende Idee, wie man Maps speichern kann. Dabei
hängt es eben davon ab, wie du deine Welt repräsentieren willst,
und mit den zusätzlichen Scripts, wo die hinsollen, also Aufbau-
fragen, die dann gleich geklärt werden müssen.

Also viel Spaß
Minz

CalganX 26. Mai 2003 13:48

Zitat:

Zitat von Hanswurst
Moin Leutz
1.OpenGl im 2d-modus

Das geht ja... Allerdings programmierst du automatisch im 3D-Modus, wenn du OpenGL nimmst (was bei DirectX nicht anders wäre).

Zitat:

2.Ja,am besten auf Linux-Basis (hab nen linux-Server daheim),was ja mit der Delphi zu Kylix umwandlung net schwer is
Es ging mir eigentlich darum, wo ihr einen Server habt, der immer an ist und der auch sehr viel Traffic aushält.
Das mit Kylix ist an sich eine feine Sache, aber da kann es zu einigen Problem führen. Wenn möglich würde ich für den Server C++ nehmen, da Delphi teilweise Probleme mit großen Datenmengen hat (zumindest fällt mir das auf).

Zitat:

3.ich weis jetzt net ganz was/wie du das meinst ;
als protokoll für das Spiel an sich hätt ich UDP verwendet und als "kompatiblitätsmodus" , da es auf einigen Systemen zu rucklern kommt (weis zwar net warum , hab ich aber in nem anderen MMORPG gesehen) , TCP/IP
für die kleine Chatfunktion nur TCP/IP anstatt IRC , da es ja max 14 Zeichen im Nick mitmacht..
Du hast mich wohl nicht ganz verstanden... ;)
Ich meinte eigentlich, was du machen willst, um die Veränderungen an der Map an alle Clients (egal, ob derzeit online oder erst in ein paar Wochen wieder) zu senden.

Zitat:

4.Die am besten in der Registry (bzw das was Linux hat)
:shock: Mir scheint, als ob du noch nicht sehr viel mit Linux gearbeitet hast... Selbst wenn es eine "Registry" gäbe, dann müsstest du ca. 100-500 Userdaten IN DER REGISTRY (!!!) speichern! Ich hoffe, du verstehst, was ich damit meine!

Zitat:

5.was verstehst du unter "grafische Darstellung" ?? wenn du 2 oder 3D meinst , dann isses 2D mit isometrischer Ansicht (Vogelperspektive)
Ich meinte eigentlich, wie du es realisieren willst, dass die Map überall genau aussieht und auch, dass man sieht, wo andere Spieler langlaufen (wenn das so geplant ist).

Zitat:

6.Ja
Die Frage ist nich Ja/Nein?, sondern wie. Jede NPC hat ein eigenes Verhalten, eine eigene KI, eigene Charakterzüge, usw. Außer du willst jede NPC gleich aufbauen. Dann wird aber niemand das Spiel spielen, weil es bessere gibt...

Zitat:

7.wenn dann nur eine Blutlache , die aber nach einiger Zeit verschwindet (inkl Leichnahm)
Schon klar, aber jeder Client muss die Veränderung erhalten!

Zitat:

8.haben wir uns schon sehr viele Gedanken gemacht
Dann ist ja gut!

Aber da ist noch was: wie willst du das machen, beim speichern? Wenn du einfach "Koordinaten" speicherst, dann bekommst du bei Mapänderungen Probleme!

Das sind nur einige Hinweise. Zu deinen eigentlichen Fragen: das sind dann eigentlich nur Kleinigkeiten... Eigentlich! Denn wenn du das ganze online machst, dann wird das schon etwas schwieriger.
Habt ihr denn schonmal eine Demoversion gemacht? Wo ihr die Grundlagen erprobt?
Habt ihr schon ein Konzept?
Darum solltet ihr als allererstes machen! Korrigiere mich, wenn ich mich täusche, aber mir scheint es so, als ob ihr einfach mal drauflos coden wollt... Dann wird da vermutlich nichts ordentliches draus!

Chris

CalganX 26. Mai 2003 13:50

Zitat:

Zitat von Minz
Aber hey, das sollte doch jeder für sich entscheiden, womit er
sich beschäftigt. Und bei der Umsetzung eines größeren Projekts
kann man auch eine Menge lernen. Jetzt wurde hier viel am Thema
vorbeigeredet, ohne das Hanswurst damit wirklich geholfen war.

Da gebe ich dir auch Recht, aber mir scheint es sehr stark, dass er sich nicht ganz im Klaren darüber ist, was ihn eigentlich erwartet!

Chris

PS: Hab ich doch da glatt was übersehen... :wall:

Minz 26. Mai 2003 13:51

LOOL geiles Smiley :)

...und da magst du Recht haben, aber Tatendrang soll man nicht bremsen :mrgreen:

Hanswurst 27. Mai 2003 13:41

Namd Leutz
@Chakotay1308

1. das man im 3d-modus programmiert kann mir ja eigentlich (hans-)wurst sein :D ,ich bevorzuge aber (für das Spiel) den 2d-Modus , da nach einigen Wochen/Monaten die grafik eh schon veraltet ist und es dann wahrscheinlich auch niemand mehr spieln will ..
in 2d hat man halt den vorteil , dass man die Grafik sogesehen einfach durch neue Bilder aufwerten kann ; in 3d braucht man dann wieder ne bessere Engine mit mehr Effekten usw ...

2.der Server steht bei mir daheim ..
für den Anfang dürfte eigentlich dsl-1500 mit 2x upload (also 384 K up)reichen
und ich wollte mir eh mal ne T/E1 oder 2 zulegen ... (T1 in USA E1 in Europa ..)

wegen C++ für Server :
gibts da irgendeinen guten :D als freeware oder wo bekomm ich da einen her ? (kann nur Delphi :D , hab zwar C++ auch daheim , bin aber irgendwie zu faul dazu ...)

3. ich dachte mir mit einem "loadMap"-befehl (kenn ich von nem anderen MMORPG) und wenn irgendwer in der Wand steckt .. wofür gibts Admins ??

4. ich weis , dass die Registry mit so vielen Einträgen sehr überlastet ist , aber ich dachte mir , da es 1. schwerer zu Hacken wäre ,als Datein auf der HDD und 2. es warscheinlich eh ziemlich lange dauern kann , bis über 60 Leute mitspieln ..

5. 1. wie meinst du "dass die Map überall genau aussieht" ??
2. wenn ich mein , was du meinst , dann sollen hinter den Spielern (je nach "Art") der Spieler , z.B Zwerg und Reiter, fusstapfen für ca 5 sec bleiben und dann wieder verschwinden .. ; halt dass es so richtig gut aussieht , wenns schon 2d is :)

6. ich dachte , du meintest , dass es überhaupt NPCs gibt ..
am Anfang dachte ich mir , dass es "nur" 3 verschiedene Arten von Gegnern gibt (außer den anderen Sielern) und wenn Spieler "gute" NPCs programmieren und sie in unserem Spiel "veröffentlichen" wollen , dann müssen sie die nur an uns schicken und wir basteln die dann ins Spiel mit ein ..

7.die Clienten errechnen sich halt , dass ein NPC hin is ; also wenn ein Spieler pro Treffer 5 Schaden bekommt , er noch 10 Energie hat und dann 2 mal getroffen wird (außer er regeneriert sich..) dann kommt halt die Schleife , dass der Spieler verregt , die Animation abgespielt wird und der , der ihn gekillt hat +1 kill bekommt ..

8. 1. "Wo ihr die Grundlagen erprobt?" welche Grundlagen meinst du ??
2.was verstehst du unter einem konzept ??

Bis denn
CU

Nonsense 28. Mai 2003 16:50

Ich schließe ich mich denen hier an, die meinen, dass du dir da ein Luftschloss baust.
In allen Ehren, aber bitte, meinst du nicht auch, dass du etwas übertreibst? Wenn ich mir deine Fragen so anschaue (nichts gegen dich), muss man wirklich grübeln, ob du Delphi überhaupt schon gestartet hattest.

Bevor man solche Fragen stellt, wie du es tust, sollte man doch wenigstens schonmal eine kleine Demo programmiert haben, auf die man aufbaut. Aber irgendwie scheint das bei dir nicht der Fall sein!?

Ich gebe dir nen guten Tipp, der mir auch gegeben wurde, als ich mit der (Spiele-) Programmierung angefangen habe: Fange klein an!

Versuche es mit einem Autorennspiel, einen Space Invaders, Tetris oder Breakout. Kannst es ja dann erweitern und Erfahrungen in Sachen Netzwerk sammeln.

Die Einwende von vielen (auch erfahrenen) Board-Usern sind nicht unbegründet.

Verstehe mich nicht falsch, ist finde es voll und ganz ok, wenn du Spiele programmieren willst und Hilfe brauchst, denke aber trotzdem dass deine Sichtweise etwas naiv ist.

Hanswurst 29. Mai 2003 09:20

Sersn Leutz
mir isses schon klar , dass das ziemlich schwer wird ..
aber ich/wir wollten eh erst mit was "kleinerem" anfangen ..
nur dachte ich mir ,dass ich die Frage jetzt schon stelle , da man ja nie genau weiß , bis wann einer "richtig" Antwortet ..
und außerdem wird es sicherlich noch mehr Leute geben , die eine ähnliche frage haben ..

also wäre es ziemlich nett von euch ,mir nicht dauernd zu sagen :"das is zu schwer , fang lieber mit was leichterem an.." sondern mir mit einer RICHTIGEN antwort entgegen zu kommen bzw mir auf die sprünge zu helfen ..

P.S. lest euch halt mal bitte die Post richtig durch , da man ,wenn man schreibt "es wird 2d", dann nicht andauernd die Frage "soll es 2 oder 3d werden??" beantworten muss ..

Bisa denn
CU

OregonGhost 29. Mai 2003 10:37

Zitat:

Zitat von Hanswurst
3. ich dachte mir mit einem "loadMap"-befehl (kenn ich von nem anderen MMORPG) und wenn irgendwer in der Wand steckt .. wofür gibts Admins ??

Aber dir ist schon klar, dass der "loadMap"-Befehl nicht vom Himmel fällt, sondern dass du ihn programmieren musst?

Zitat:

Zitat von Hanswurst
4. ich weis , dass die Registry mit so vielen Einträgen sehr überlastet ist , aber ich dachte mir , da es 1. schwerer zu Hacken wäre ,als Datein auf der HDD und 2. es warscheinlich eh ziemlich lange dauern kann , bis über 60 Leute mitspieln ..

Die Registry ist leichter zu cracken (wir wollen bitte nicht Hacker verunglimpfen, die etwas völlig anderes tun :roll: ) als alles andere, weil man die Daten da schön mit Text in einer übersichtlichen Baumstruktur bekommt... Zum zweiten Punkt kann ich nur sagen, ihr müsst in jedem Fall Grenzen festlegen. Aber es ist schwieriger, die Grenzen später zu verändern, als sie gleich höher anzusetzen.

Ich glaube, dir oder euch ist nicht ganz klar, dass ein Spiel zu programmieren sehr viel Planung erfordert und eine logistische und geistige Herausforderung ist. Ich glaube, du solltest mal gamedev.net, gamasutra.com oder auch das Buch "Computerspiele - Design und Programmierung" angucken. Bei allen dreien findest du viele Informationen über den Planungsprozess, das Design, die Programmierung und sogar über Vetrieb etc. Solange ihr nicht mit der richtigen Planung wenigstens angefangen habt, wird hier niemand eine Antwort auf eure Fragen finden können. Für diese Frage müsstet ihr euch wenigstens darüber einig sein, wie euer Map-Format aussehen und funktionieren soll. Und wenn ihr soweit seid, ist es nur noch ein kleiner Schritt, die Map zu laden und im Spiel zu verwenden.

Hanswurst 29. Mai 2003 15:52

Namd Leutz
1. wir haben schon ziemlich viel geplant .. ;je nachdem wie man ziemlich viel deffiniert ..
2. übers Map-Format sind wir uns schon einig , es ist also schon "ausgedacht"

CalganX 29. Mai 2003 16:04

Dann wirst du uns sagen müssen, wie das Mapformat aussieht, da wir dir sonst auch nicht helfen können!

Chris

Hanswurst 8. Jun 2003 16:44

Moin Leutz
ich dachte mir , dass die Map-Datei (unverschlüsselt) so aussieht :

Map of "Name" Ver. 0.001//angabe der Ver mit der die Map erstellt wurde.
Date: 12.08.04//Datum , an dem sie erstellt wurde.
Creator: Ich//Name des Erbauers.
TileSet: 01;04//Verwendete Tilessets.
Heigh: 15//Höhe der Map (Y Wert), da Variabel.
Width: 15//Weite der Map (X Wert), da Variabel.


1 01_20 01 1 1;
2 05_18 04 0 1;
3 14_16 01 0 1;
usw.

NPCs: //Auflistung der NPCs (mit X-Y koordinaten).
1.Hans 002_061 1 0;
usw.

Scripts: //Scripts der NPCs
1. //noch net festgelegt ..
usw.

Lights: //Auflistung der Lichter (mit X-Y)
1. 001_025 210_004_255 10 20 4;
2. 210_062 035_195_086 3 3 2:
usw.


Erklärung :
2. Abschnitt (ohne Bezeichnung):
"1" Feld 1 , also ganz links oben
"01" Y-Koordinate des TileSets
"20" X-Koordinate des TileSets
"01" TileSet-Nummer
"1" 1=Wasser; 0=Normaler Boden;
"1" 1=Blockt 0= Blockt nicht

NPCs:
"1." durchnummerierung der NPCs
"Hans" Name des NPC
"002" Y-Koordinate des NPC
"061" X-Koordinate des NPC
"1" 1=Blockt; 0=Blockt nicht
"0" 0=kein Licht; 1= Licht , also , ob er im Dunkeln hell oder auch dunkel ist

Scripts: was soll man dazu sagen ..

Lights:
"1." durchnummerierung der Lichter
"001" Y-Koordinate des Lichts
"025" X-Koordinate des Lichts
"210_004_255" RGB-Wert des Lichts
"10" Radius des Lichts bei Kreis
"20" Stufen des Lichts , manchmal nützlich ..
"4" Art des Lichts .. 0=Kreis; 1=Dreieck;2=Viereck;3=Sechseck;4=irgend was anderes ..

Endlich fertig ..Puh ...

Wenn ihr noch Fragen habt ..
einfach Posten

bis denn CU

Ag3nt 23. Jun 2003 23:43

Ich bin selber noch Delphi Anfänger aber ich kann dir auch nur den Rat geben fang klein an, denn alles baut sich naher drauf auf!

Glaub mir! Das Konzept haste ja schon zu deinem Game aber fang erst einmal klein an baue eine kleine Demo wie deine Karte geladen wird dann ein kleine Demo wie ein NPC funktioniert usw ... Später haste dann alles drauf, denn kein Mensch hier im Forum kann dir bei solch vielen und zu allgemeinen Fragen helfen.

Was meinste wieso all die Programmierer auch große Programmierer "HELLO WORLD" als erstes Programmiert haben? Aus dem einfach Grund klein anzufangen. Du kannst nicht erwarten nach ein paar klicks in Delphi und bischen Code das du gleich ein Diablo2 mit nem Battle.Net Source verbindest und das noch durch eine Hilfestellung in einem Delphi Forum.

Ich geb dir den Tip fang klein an!

MadMax 26. Jun 2003 11:32

Speichern
 
Hallo,

Ich hab vom Spiele Coden nicht wirklich Ahnung und möchte auch kein Spiel schreiben (noch nicht :-))aber der Interesse halber gibt es Sinn die Spielstände und User Daten in eine Datenbank z.b. MySql abzuspeichern? Wie wird das bei denn mächtigen spielen wie z.b. Diablo 2 gehandhabt ?

Ariakas 6. Nov 2004 18:11

Re: Map+NPC initialisierung in 2D
 
Hi!

Also ich programmiere jetzt seid knapp 6 jahren und davon 4 in delphi.

Ich habe erst vor ner Woche angefangen, ein 2D spiel zu programmieren. Tja und so einfach wie ich es mir gedacht habe, ist es nciht ganz. erstmal solltest du dir überlegen, wie du die Map speicherst, denn so wie du es vor hast, ist es müll, sorry.
Ich arbeite auch mit tiles, was wunderbar läuft und ich auch lange drüber nachgedacht habe es zu realisieren (also werd ich hier net rein schreiben, wie ich es gemahct habe ;) ) Ich sag nur es ist verteufelt schnell und ich benutze eine art mul datei ( Ultima Online lässt grüßen ).

Ein Tip noch : Schau dir ein bissel Source von UO Emulatoren an. Dort kriegt man gute ideen und kann sich euch einiges abschauen.

Dann nochmal eben zum speichern der maps :

Ich arbeite mit mehreren Dateien, weil sich bei einer datei zuviel ansammelt und das ganze laden erheblich verlangsamt. Greife nur dann auf die daten zu, wenn du sie wirklich brauchst ansonsten lass sie in ruhe. Lade immer nur den entsprechenden Bildschirm ausschnitt ;) Ist zwar ein bissel komplizierter, aber fixer ;)

Ansonsten, viel erfolg bei der sache. Aber als anfänger, auch wenn es schon viele gesagt haben, fang erst einmal mit kleinen spielchen wie vier gewinnt usw an. Damit du ein kleinen einblick in die KI programmierung kriegst.

Gruss Ari

Maximus 10. Nov 2004 14:04

Re: Map+NPC initialisierung in 2D
 
Hi,

Also so wie das oben aussieht, willst du die Informationen für die Map in eine *.ini Datei schreiben.
Aber eine *.ini Datei ist leicht manipulierbar! Ihr solltet (bzw. müsst) dann, bei jedem connecten, die komplette *.ini Datei mit der *.ini Datei vom Server vergleichen.

PS. Ich verzicht jetzt hier auf die Aussage "fang lieber mit etwas kleinem an" obwohl ich das (leider) selber schon oft erfahren musste

//Edit: LoL jetzt fällt mir erst das Datum an dem der Thread erstellt wurde auf ^^ - Würd mich mal interessieren was daraus wurde!

MFG
Maximus


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz