AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Dynamic Link Fighters
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamic Link Fighters

Ein Thema von Mikescher · begonnen am 19. Dez 2010 · letzter Beitrag vom 16. Feb 2011
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Mikescher
Mikescher
Registriert seit: 3. Jun 2008
So, ich möchte hier jetzt auch mal das Ergebnisse meines geistigen Schaffens präsentieren:

Dynamic Link Fighters
(DLF)


Version: 1.0.2

Zur Idee:
Die Idee hatte ich eigentlich einmal als mir überlegt habe wie man - relativ einfach - ein Spiel realisieren könnte bei dem 2 KI's gegeneinander kämpften. Damals dachte ich mir dass man dies eigentlich mithilfe von DLL's lösen könnte

Zur Geschichte:
Naja, die Idee lag dann ziemlich lange am unteren Ende meiner Programmier-Ideen-Liste. Als ich dann vor kurzem meine OpenGL-Kenntnisse mal wieder ein bisschen auffrischen wollte und ich das obligatorische "Würfel-der-sich-dreht"-Programm immer weiter ausbaute wurde irgendwann DLF daraus . Also falls wirklich ein Masochist anwesend ist der es sich antun möchte meinen Quelltext zu lesen ... der sei gewarnt, ich müsste eigentlich noch einmal alles von neu schreiben damit, wenigstens annähernd - leserlicher Quelltext dahinter steckt.

Das Spiel:
Also jetzt kurz und knapp: Was ist DLF ? In DLF programmieren 2 Menschen jeweils eine KI-DLL in Delphi die dann gegeneinander antreten. Das Spiel ist so aufgebaut dass jeder Spieler/KI eine Anzahl an Käfern hat. Es werden immer abwechselnd alle Käfer von Player1 und Player2 gezogen. Ziel ist es entweder alle Käfer des Gegners zu eliminieren oder (alá Capture The Flag) die gegnerische Flagge zu stehlen und in die eigene Basis zu bringen.
Wenn 2 Käfer aufeinander treffen stirbt der Käfer der weniger Teammitglieder um sich herum stehen hat - wenn beide gleich viele haben sterben beide.
Wenn ihr genaueres über das Spielprinzip wissen wollt oder wie man eine KI schreibt kann in der "Help.exe" nachschauen.


Bemerkungen:

Wie immer ist Kritik nicht nur erlaubt sondern ausdrücklich erwünscht

Wer eine KI geschrieben hat kann sie ja hier in diesen Thread stellen (mich würds freuen)

Geschrieben ist das ganze in OpenGL (ThX an DelphiGL )

Crosspost im DelphiGL-Forum: Link

Download:

Leider ist der Download sowohl mit Sourcecode als auch ohne zu groß für die DP (Texturen und Sounds...)
Es steht auf meiner ToDo Liste das alles mal kleiner/komprimierter zu machen, bis dahin könnt ihrs (ohne Sourcecode) auf meiner Seite laden:

Download

Oder (fals ihr das wirklich wollt) hier mit Sourcecode:

Download


Also:
MfG Mikescher
Miniaturansicht angehängter Grafiken
logo.jpg   shot.jpg  
Operation gelungen, Patient tot.

http://www.mikescher.com

Geändert von Mikescher (15. Feb 2011 um 20:36 Uhr)
 
Benutzerbild von Sherlock
Sherlock

 
Delphi 12 Athens
 
#11
  Alt 22. Dez 2010, 15:14
Eindeutige ID -> Generiere doch eine GUID für jede KI.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Mikescher
Mikescher

 
Delphi 2009 Professional
 
#12
  Alt 22. Dez 2010, 16:09
Eindeutige ID -> Generiere doch eine GUID für jede KI.
Ja aber auf welcher Basis ? Mein Programm sieht ja nur die fertige DLL. Man müsste im DLL-Template eine Methode "GetID" einbauen jedoch woher soll diese ID kommen, wenn der, der die KI programmiert die ID selber zuweist besteht immer die Gefahr dass es diese ID zufälligerweise schon gibt oder noch schlimmer mehrere Leute lassen den Standard Wert stehen (OK da könnte dann eine Fehlermeldung kommen wenn man die KI benutzt).
Imho müsste für so eine GUID jeder der eine KI entwickelt sie bei mir einschicken so dass ich ihm dann eine ID geben kann. Dass würde ich aber nur ungern so machen, weil dann der ganze KI-Entwicklungsprozess von mir abhängt (was wenn ich mal im Urlaub bin ).
Ich weiss nicht, irgendwie würde so etwas ja das System von "einfach eine DLL mit Delphi programmieren" kaputtmachen.

Oder wie hast du das gemeint ?

MfG Mikescher
Mike
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

 
Delphi 11 Alexandria
 
#13
  Alt 22. Dez 2010, 17:44
Im automatischen Turnier könnten z.B. nur KI´s berücksichtigt werden, die eine eindeutige ID haben.

- Menüaufruf "Automatisches Turnier"
- Anzeige aller gefunden KI´s mit ID (String, egal ob als GUID oder anders)
- (KI´s ohne ID oder mit gleicher ID sind inaktiv)
- alle aktiven gegeneinder spielen lassen (jeder gegen jeden) und laufend Ergebnisse veröffentlichen
  Mit Zitat antworten Zitat
Benutzerbild von Mikescher
Mikescher

 
Delphi 2009 Professional
 
#14
  Alt 15. Feb 2011, 20:41
So, ich hab mal die neue Version 1.0.2 hochgeladen.

Im Großen und Ganzen sind es eigentlich nur Bugfixes.
Online-Highscores etc hab ich mal versucht jedoch hält mein Server das nicht aus (müsste ich alles via php machen )

Auf jedenfall sollte DLF jetzt stabiler und auch ein wenig flüssiger laufen (hab auch nochmal alles so verbessert dass man DLF auch auf älteren GraKas ausführen kann)

MfG Mikescher
Mike
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad
 
#15
  Alt 15. Feb 2011, 22:03
Online-Highscores etc hab ich mal versucht jedoch hält mein Server das nicht aus (müsste ich alles via php machen )
SQLite-Datenbank und Mini-PHP-Skript, was gibt's denn da auszuhalten?

Coole Idee jedenfalls. Wir könnten ja mal unsere DLLs gegeneinander antreten lassen. Mit allen schmutzigen Tricks
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad
 
#16
  Alt 15. Feb 2011, 22:09
So, also die Idee ist schonmal gut (habe ich ja gesagt), aber bei der Umsetzung scheint es Probleme zu geben. Da ich mich mit OpenGL nicht auskenne (und auch nicht so tue), kann ich nicht sagen was, aber auf Windows 7 x64 hängt das Ding. Ich lasse es nicht als Admin laufen (versteht sich ja von selbst).

Versuche es nachher nochmal in VMware (mit XP SP3). Mal sehen ob das besser geht ...

Siehe da: in XP SP3 funzt es tadellos in der VM. Allerdings habe ich das Gefühl, daß bei gerader Feldanzahl (vertikal) die Programmierung theoretisch auf Sieg sein könnte, aber der ausschlaggebende Käfer auf einer Seite einen Vorteil hat (je nachdem). Oder irre ich?
Oliver

Geändert von Assarbad (15. Feb 2011 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von mleyen
mleyen

 
FreePascal / Lazarus
 
#17
  Alt 16. Feb 2011, 11:22
Oder man schaut sich etwas aus vorhandenen sources ab.

Coole Idee jedenfalls. Wir könnten ja mal unsere DLLs gegeneinander antreten lassen. Mit allen schmutzigen Tricks
Wollen wir wirklich die Dinge in euren Viren-Sammel-Tresoren kennen lernen, die vsl besser nie das Licht der Welt erblicken sollten?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#18
  Alt 16. Feb 2011, 11:31
SQLite-Datenbank und Mini-PHP-Skript, was gibt's denn da auszuhalten?
eventuell ja einfach sowas http://www.delphipraxis.net/148076-m...mysql-dll.html
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch
 
#19
  Alt 16. Feb 2011, 11:45
Zu dem ID Problem:

Der DLL Programmierer startet ein Hilfsprogram von dir. Das generiert aus dem SourceCode der DLL einen SHA-2 Wert(nen Hash), und bügelt noch das aktuelle Datum + Uhrzeit in den wert. Damit sollte es schwer werden, 2mal die gleiche ID zu bekommen(wen auch nicht unmöglich, aber fast).

Dieser Wert wird dann z.B. als String in der DLL hinterlegt und kann dort abgerufen werden(über ne funktion)

PS: Eventuell kommt die funktion für das auslesen der ID und der ID-String in eine seperate Unit, welche beim generieren der "ID" nicht berücksichtigt wird. So verändert der eingefügte Hash die Hash generierung nicht wen mans nochmal macht.

Anstatt SAH-2 könnte man auch z.B. CRC32 nehmen, ist aber wohl unzuverlässiger was dubletten angeht.

MFG
Memnarch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#20
  Alt 16. Feb 2011, 11:57
CRC32 = 4 Milliarden IDs (2^32 ist auch schon recht eindeutig)
ansonsten kann man auch die SHA-1-API direkt von Microsoft nutzen (2^160 Möglichkeiten)

Geändert von himitsu (16. Feb 2011 um 12:50 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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