Zum Inhalt springen

MidWar [Midgard Kampfsimulator]


Mav3N

Empfohlene Beiträge

Geschrieben

Name ID LP AP Schaden Team Angriffswert Verteidigungswert Rüstung Status X Y B

Sorren 1 11 40 1W6+1 1 14 15 Vollrüstung Unbeeinträchtigt 0 0 3

Radamanthu 2 14 50 1W6 2 12 16 Textilrüstung Unbeeinträchtigt 9 9 4

 

Runde 1

Sorren mit der ID 1 geht 3 Schritte von Feld 0,0 auf Feld 3,3, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 8,8 nicht erreicht hat.

Radamanthu mit der ID 2 geht 4 Schritte von Feld 9,9 auf Feld 5,5, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 4,4 nicht erreicht hat.

 

Runde 2

Sorren mit der ID 1 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Sorren mit der ID 1 erzielt 23 und hat Radamanthu mit der ID 2 getroffen. Radamanthu mit der ID 2 erzielt 24, konnte abwehren und verliert 7 AP.

Radamanthu mit der ID 2 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Und so weiter in den folgenden Runden. Anscheinend ist die Erkennung, ob zwei Figuren nebeneinander stehen, noch fehlerhaft.
Geschrieben

Name ID LP AP Schaden Team Angriffswert Verteidigungswert Rüstung Status X Y B

Sorren 1 11 40 1W6+1 1 14 15 Vollrüstung Unbeeinträchtigt 0 0 3

Radamanthu 2 14 50 1W6 2 12 16 Textilrüstung Unbeeinträchtigt 9 9 4

 

Runde 1

Sorren mit der ID 1 geht 3 Schritte von Feld 0,0 auf Feld 3,3, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 8,8 nicht erreicht hat.

Radamanthu mit der ID 2 geht 4 Schritte von Feld 9,9 auf Feld 5,5, kann diese Runde aber nicht angreifen, da er diese Runde sein Ziel 4,4 nicht erreicht hat.

 

Runde 2

Sorren mit der ID 1 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Sorren mit der ID 1 erzielt 23 und hat Radamanthu mit der ID 2 getroffen. Radamanthu mit der ID 2 erzielt 24, konnte abwehren und verliert 7 AP.

Radamanthu mit der ID 2 hat seinen Gegner direkt im angrenzenden Feld und muss sich daher nicht bewegen.

Und so weiter in den folgenden Runden. Anscheinend ist die Erkennung, ob zwei Figuren nebeneinander stehen, noch fehlerhaft.

 

Gut, danke. Es sind jetzt 7 verschiedene Fehler gefunden worden. Da werde ich wohl noch ein wenig zu tun haben, bis das läuft. ;)

Geschrieben (bearbeitet)

So,

 

habe alle 7 Fehler beheben können. (Hoffe ich). Version 2.0.2 ist fertig.

 

Die Erkennung, ob zwei Figuren nebeneinander stehen war Fehlerhaft - es lag an einem vergessenen Gleichheitszeichen ...

Das Problem, dass sayah gefunden hatte, fand sich darin, dass er in seinen Beispielen B = 03 anstatt 3 eingegeben hatte, wodurch Fehler produziert werden. Ich habe das nun abgefangen und wandel 03 automatisch in 3 um, wodurch keine Fehler mehr auftreten sollten.

Die restlichen Fehler waren intern und nicht so wichtig.

Es werden nun alle Werte Serverseitig überprüft, damit auch ja nichts schiefgeht und alles möglichst sicher ist (Auch werden jetzt endlich die X,Y und B Werte überprüft).

 

Sonst habe ich noch nichts geändert.

 

Als nächste werde ich hinzufügen, dass man endlich die Kartengröße selber einstellen kann, sowie eine Überprüfung, ob es auch wirklich verschiedene Teams gibt (das ist die einzige Überprüfung, die derzeit noch fehlt). Außerdem gibt es noch 2 JavaScript Fehler, die ich irgendwie noch bereinigen muss. Zum einen kann man, wenn man mehr als 7 Kämpfer eingibt höchsten bis zum 7ten Kämpfer auf "Kopieren" klicken, zum anderen werden nicht in allen Browsern die Kampfinformationseinstellungen richtig übernommen. Das wird in der nächsten Version geändert. Dann dürfte alle Fehler behoben sein und es geht an neue Funktionen. :)

 

Bamba

 

Link: midwar.de.vu

 

Übrigens: Für die Namen von Figuren sind nur noch Buchstaben erlaubt!

 

EDIT: Wie üblich bitte fleißig Fehler suchen. Eigentlich dürfte es keine mehr geben, bis auf: "Fatal error: Maximum execution time of 60 seconds exceeded in astar.php on line 194". Das besagt lediglich, dass er zu lange für die Berechnung gebraucht hat, was auf dem Freeserver nicht möglich ist. Daher will ich ja irgendwie auf einen vernünftigen Server mit genug Rechenleistung wechseln. ;) Das ist also kein Fehler!

 

EDIT 2: Übrigens kann der Simulator jetzt endlich auch erkennen, wenn eine Person zugestellt ist (von Hindernissen oder Verbündeten) und sich diese Runde nicht bewegen kann. Vorher resultierte daraus immer ein Fehler).

Bearbeitet von Bamba
Geschrieben

Ich arbeite gerade an 2.0.3 und muss feststellen, dass wir ein großes Problem haben. Ich wollte diese Version eigentlich hinzufügen, dass man selber die Kartengröße (maximal 100x100) einstellen kann. In einem Beispiel Test von mir mit 50x50 Feldern, 10 Kämpfern und dem Standardkram auf Statistikkampf, rechnet er in 60 Sekunden (bis die Fehlermeldung von zu langer Berechnung kommt) gerade mal 2% fertig ... Das wären 50 Minuten komplette Rechenzeit für einen Statistikkampf bei gerade mal 50x50 Feldern ... Ich fürchte das geht so nicht. Entweder finde ich jetzt eine Möglichkeit den Kampfsimulator mal eben um den Faktor 100 in der Geschwindigkeit pushen zu können, oder ich kann keine weiteren Funktionen hinzufügen. HipHop bringt laut Google ca. 50%. 25 Minuten bei so einem billigen Feld für einen Statistikkampf? Ne danke! Das kann doch irgendwie nicht sein.

 

Hilferuf an die Profis: Was kann ich machen? :S

 

Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.

 

Bamba

Geschrieben
Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.
Überlege mal, ab welcher Rechenzeit Dir genug Zeit zum Erlernen einer weiteren Sprache bleibt. ;)

 

Es gibt grundsätzlich drei Möglichkeiten, die Geschwindigkeit eines Programms zu erhöhen:

  • Schnellerer Rechner
  • Bessere Compilation
  • Besserer Algorithmus

Du hast ein paar Zahlen schon genannt...

Geschrieben
Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.
Überlege mal, ab welcher Rechenzeit Dir genug Zeit zum Erlernen einer weiteren Sprache bleibt. ;)

 

Es gibt grundsätzlich drei Möglichkeiten, die Geschwindigkeit eines Programms zu erhöhen:

  • Schnellerer Rechner
  • Bessere Compilation
  • Besserer Algorithmus

Du hast ein paar Zahlen schon genannt...

 

Der Algorithmus ist bei weitem vorzuziehen :notify:

Geschrieben
Und nein, ich steige nicht auf andere Programmiersprachen um - es MUSS PHP sein, da ich keine andere gut genug beherrsche.
Überlege mal, ab welcher Rechenzeit Dir genug Zeit zum Erlernen einer weiteren Sprache bleibt. ;)

 

Es gibt grundsätzlich drei Möglichkeiten, die Geschwindigkeit eines Programms zu erhöhen:

  • Schnellerer Rechner
  • Bessere Compilation
  • Besserer Algorithmus

Du hast ein paar Zahlen schon genannt...

 

Schnellerer Rechner wird erstmal nicht funktionieren. Bessere Compilation... Naja wir hätten HipHop und Konsorten, das sind aber auch nicht die Bringer. Besserer Algorithmus? Ich kann beim besten Willen nicht auf etwas von dem verzichten was ich eingebastelt habe. Vereinfachen kann ich es nicht. Und auch wenn ich den A* Algorithmus bei mir unübersichtlich programmiert habe, so ist er trotzdem eine relativ gute Implementation von der Logik her. Und die zählt! Auch dort lässt sich nicht viel machen. Daher stehe ich gerade total auf dem Schlauch. Ich kann euch wenn ihr wollt den kompletten Quellcode schicken und ihr schaut mal was sich machen lässt, aber wenn keinem eine Möglichkeit einfällt wo ich das noch was drehen kann, kann ich nicht weiter programmieren und neue Funktionen einbauen.

 

Ich lerne gerade zwar weiter Python, aber selbst wenn ich Python sehr gut könnte, hätte ich keine Lust alles nochmal in Python nachzubauen ...

Geschrieben

Ich weiss du wirst hassen, was ich als nächstes schreibe: eventuell ist es das beste, dass du nun, wo du die Fehler kennst und weisst was du alles in der Software unterbringen möchtest, von vorne beginnst. Damit verhinderst du dass du suboptimal programmierte Teile weiter herumschleppst und jedesmal wenn du etwas ein umständliches Konstrukt programmieren musst.

Beispiel: Bewegung, wir haben darüber geplaudert. Jetzt hast du einen funktionierenden Algorhytmus, zugegeben, der aber nicht alles leistest was du gerne in der Software verwirklichen möchtest. Ihn zu ändern (Reihenfolge in der bewegt wird (Reihenfolge der Teams und dann Reihenfolge der einzelnen Kämpfer) in der bestehenden Software wird schwierig und führt wahrscheinlich zu suboptimalen Lösungen weil du auf bestehenden Code Rücksicht nehmen musst. Beginnst du von vorne ist das, zugegeben sehr viel Arbeit, nur evetuell bekommst du dafür 'sauberen' Code also ein optimaleres Programm. Je nachdem was du noch alles umsetzen willst, lohnt sich der Aufwand, denke ich.

es grüsst

Sayah el Atir al Azif ibn Mullah

  • 2 Monate später...
Geschrieben

Hallo,

 

ich glaube ich melde mich mal wieder.

 

Nachdem ich die gesamten PHP Skripte an einen enorm guten PHP Programmierer geschickt hatte, der versprach sich alles anzugucken und ich nach 2 Monaten noch keine Rückmeldungen bekomme hatte (Ich glaube er ist an meinem Code verzweifelt), habe ich beschlossen selber weiterzumachen. Mit PHP gehts ja wohl nicht, also hab ich das ganze mal in Python neugeschrieben oder zumindest damit angefangen. Bis jetzt bin ich so weit, dass MidWar in Python sämtliche Sachen des MidWar's in PHP kann, bis auf das rechnen mit Positionen. Und natürlich ist es noch ohne eine grafische Benutzeroberfläche.

 

Jetzt wollte ich das ganze mal an sayah zum testen schicken, als mir auffiel: Scheiße, wie pack ich das in eine .exe Datei? Es gibt 6 mir bekannte Programme, um das zu bewerkstelligen. Problem dabei: Entweder funktionieren sie mit Windows nicht, oder sie unterstützen kein Python 3 (indem ich alles geschrieben habe), oder es kommen seltsame Fehlermeldungen. Zusätzlich kommt hinzu, dass es ja eigentlich Schummellösungen sind, da immer die benötigten Libraries aus Python mit in die .exe eingebunden werden (so habe ich das zumindest bisher verstanden), was ich nicht möchte, weil meist unnötiger Ballast mitgenommen wird. Ich will eigentlich nur, dass der meinen Quellcode, den ich geschrieben habe in eine exe kompiliert, damit das ganze ausgeführt werden kann. Nach Stundenlanger rumprobiererei hab ich dann aufgegeben. Python? Ist ne tolle Sprache, die Syntax ist das beste was ich kenne, die Module auch, die Geschwindigkeit ist auch ok - aber ich kann damit keine .exe's erstellen. Also kann ich das ganze wohl auch nicht in Python programmieren. Jetzt bin ich auf der Suche nach einer neuen Sprache, die eine genauso einfache Syntax wie Python hat, die Geschwindigkeit von C oder C++ und die man bitteschön auch in .exe Dateien verwandeln kann, damit ich dann zum 3ten mal alles neuschrieben kann...

 

Jemand ne Idee? Anforderungen:

 

- Einfache Syntax (Ich möchte so eine wie Python, da macht das Programmieren richtig Spaß)

- Hohe Geschwindigkeit - sollte an C++ oder gar C rankommen

- Die Möglichkeit einfach nur per Klick (Gibt es ja bei den ganzen C++ Compilern auch) das ganze in eine .exe umzurechnen, die dann verschickt werden kann (am besten sogar noch plattformübergreifen für x86, x86-64, Mac, Linux...)

- Eine gute Verfügbarkeit von Standardmodulen (Wer viel mit Python gearbeitet hat wie ich, lernt so etwas echt zu schätzen)

- Eine gute Dokumentation

 

Wenn ich dann endlich mal die richtige Sprache gefunden habe, kann ich das ganze Ding auch zu Ende schreiben ...

Geschrieben (bearbeitet)

Jetzt wollte ich das ganze mal an sayah zum testen schicken, als mir auffiel: Scheiße, wie pack ich das in eine .exe Datei?

 

Du brauchst ihm eigentlich nur die entsprechenden Dateien in einem Archiv zu schicken.

 

Python ist eine Interpretersprache, da wird normalerweise keine .exe Datei gebaut. Sofern der Interpreter für eine Plattform existiert, kann das Programm auch ohne Veränderung auf der entsprechenden Plattform ausgeführt werden.

Bearbeitet von Sulvahir
Geschrieben

Korrekt.

Außerdem wird es schwierig ein Sprache zu finde mit der Geschwindigkeit von C und der Einsteigerfreundlichkeit von Python.

 

Ich würde es wahrscheinlich in C# schreiben, aber das ist nicht so schnell.

Geschrieben

Jetzt wollte ich das ganze mal an sayah zum testen schicken, als mir auffiel: Scheiße, wie pack ich das in eine .exe Datei?

 

Du brauchst ihm eigentlich nur die entsprechenden Dateien in einem Archiv zu schicken.

 

Python ist eine Interpretersprache, da wird normalerweise keine .exe Datei gebaut. Sofern der Interpreter für eine Plattform existiert, kann das Programm auch ohne Veränderung auf der entsprechenden Plattform ausgeführt werden.

 

Ja und? Damit ist es vom Python Interpreter abhängig und derjenige muss Python installiert haben - das möchte ich nicht. Ich möchte etwas komplett unabhängiges. Am liebsten würde ich Python so wie es ist behalten, nur die Möglichkeit hinzufügen, dass man aus bestehendem Quellcode ohne weiteres .exe Dateien kompilieren kann.

Geschrieben
Korrekt.

Außerdem wird es schwierig ein Sprache zu finde mit der Geschwindigkeit von C und der Einsteigerfreundlichkeit von Python.

 

Ich würde es wahrscheinlich in C# schreiben, aber das ist nicht so schnell.

 

Da gefällt mir die Syntax wiederum nicht - wieso umständlich wenn es auch mit der Syntax von Python einfach geht? Ich meine, wenn man sich einen abgebrochen hat MidWar in PHP zu schreiben und für die fight.php 20KB Code produziert hat und exakt das selbe nun in Python wiederholt sind es aufeinmal nur noch 8KB, dann sieht man schon einen Unterschied zwischen den Sprachen ...

Geschrieben

Moin,

 

Ich würde es wahrscheinlich in C# schreiben, aber das ist nicht so schnell.

 

C# ist langsam und ein uebles Speichermonster.

 

Ich denk mal wenn du Geschwindigkeit rausholen willst, so braucht du eine Sprache mit einem erstklassigen Garbage Collector, die evtl sogar echten Maschinencode ausfuehrt. Zudem willst du die Flexibilitaet einer Scriptsprache.

 

In meinen Augen fallen damit PHP, Perl5, Python und aehnliche flach, weil deren GC und VM nicht viel besser sind als a little Smalltalk. Boese Zungen behaupten die Autoren hatten alSt gelesen, und sich danach ueberlegt, dass ne Scriptsprache selbst zu basteln ganz einfach ist. Auch fallen Curly-Braces-Algol Sprachen (C, C++, Java, C#) flach, weil du damit nicht die Flexibilitaet von Scriptsprachen hast. Ueber bleiben die Klassiker:

 

Smalltalk/X - Schnellstes mir bekanntes Smalltalk, dass die Moeglichkeit bietet, einzelne Methoden nach C zu uebersetzen, und dynamisch zuzulinken, und sogar C-Crosscompiler unterstuetzt, wenn du nen Binary fuer andere Platformen baust. Leider ist die Lizens nicht wirklich frei.

 

( Cincom Smalltalk ist nicht so schnell wie ST/X aber besser als Perl,Python,Ruby,PHP. Und bei Squeak kommt dazu dass sich kaum jemand mit dessen GUI anfreunden kann, wenns nicht grade nen 9 jaehriges Maedchen ist, die finden so was Cute - Squeak ist imho die beste Moeglichkeit fuer Kinder richtig Programmieren zu lernen ;-)

 

CMUCL/SBCL uebersetzt Lisp in echten Machinencode, der GC ist perfekt. Schneller gehts nichtmal mit C. So ist die Lisp-Regex Library schneller als die Perl, Python, PHP und Unix-C library, weil die Regex on the fly in Maschinencode uebersetzt wird.

 

GNU Common Lisp verfolgt einen mit ST/X vergleichen Ansatz bei dem Lisp Code in C Code uebersetzt wird. Leider ist William Schelter schon seit einiger Zeit tot, und wenns Debian nicht gebe, und Anwendungen die fuer den GCL geschrieben wurde, gaebe es keine Wartung mehr.

 

Clisp ist das Common-Lisp mit niedrigsten Footprint. Es hat zwar nur einen Bytecode Interpreter, dieser ist aber extrem schnell, und der GC ist perfect. Die VM ist schnell genug, dass Lisp-Regexp schneller als das Unix-C Equivalent sind.

 

Letzters zeigt mal wieder dass in jeder nicht trivialen Anwendung irgenwo ein Interpreter steckt, und dass sich es sich dann lohnt wenn ich diesen direkt in der Anwendungsentwicklung nutzen kann.

 

Ich denke mal Spieleprogrammierung ist optimal, um neue Sprachen kennen zu lernen. Warum nicht erstmal die Klassiker. Nach ein paar Wochen Lisp oder Smalltalk kommen dir alle andern Sprachen wie Krueppel vor. Insbesondere Smalltalk/80 war seiner Zeit 30 Jahre vorraus. Seitdem erscheinen alle Jahre wieder neue Hype Sprachen, die jedes mal ein stueckchen naeher an Smalltalk sind.

 

ciao,Kraehe

Geschrieben

 

Ja und? Damit ist es vom Python Interpreter abhängig und derjenige muss Python installiert haben - das möchte ich nicht. Ich möchte etwas komplett unabhängiges. Am liebsten würde ich Python so wie es ist behalten, nur die Möglichkeit hinzufügen, dass man aus bestehendem Quellcode ohne weiteres .exe Dateien kompilieren kann.

 

Ich fürchte, einen Tod musst du sterben:

 

Plattformunabhängig: Dann wäre eine Interpretersprache (wie Python) sinnvoll, da der Interpreter für etliche Plattformen existiert, und du das Programm nur einmal schreiben musst.

 

Ausführbares Executable: Dann musst du für jede Plattform und für jede Architektur das Programm einzeln kompilieren. Dabei kann es dir schnell passieren, dass du zusätzlich für jede Plattform eigenen Code schreiben (und debuggen!) musst, weil irgendetwas nicht so funktioniert, wie es soll, und du hast die X-fache Arbeit.

 

Ein Kompromiss wäre eine Interpretersprache, die faktisch bereits überall installiert ist; das wäre dann Java.

  • 8 Monate später...
Geschrieben

Hallo fleißige aber mittlerweile abwesende Diskutierer...

 

Hat sich hier noch was getan? Ich finde, die Benutzbarkeit sollte im Vordergrund stehen, damit auch die Plattformunabhängigkeit (um so mehr potentielle Tester und Mitentwickler findet man). Könnte man daraus nicht ein Community-Projekt machen? Python ist doch nicht schlecht, das gibt's doch überall. Ich würde das Tool auch eher zum Vorbereiten von Spielen einsetzen, da finde ich die Geschwindigkeit nicht so wichtig. Und falls ich es auf den ganzen Seiten verpasst haben sollte: Gibt es irgendwo eine aktuelle Version, oder ist die komische .exe-Datei 1.1 die aktuelle (die ich hier unter Linux auch wieder nicht ausführen kann, Python aber schon)?

 

Ciao, Mike

  • 1 Jahr später...
  • 2 Jahre später...

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...