Entwickler-Ecke

Freeware Projekte - [Win32] NmazeTD - Ein Tower-Defense Spiel


nkp90 - Sa 06.09.08 16:51
Titel: [Win32] NmazeTD - Ein Tower-Defense Spiel
Hiho

ich möchte hiermit mein "kleines" Towerdefense vorstellen was ich in letzter Zeit programmiert habe.

Was ist Tower-Defense?
Tower-Defense (kurz TD) ist ein Spiel-modi bei dem mit Türmen, die der Spieler errichten muss, verhindert werden, dass Gegner ein bestimmtes Ziel nicht erreichen. Die Gegner bewegen sich dabei von einem Checkpoint zum anderen und müssen alle passiert haben, eh sie in ihr Ziel laufen und dem Spieler damit ein Leben abziehen.

Wie kann ich es verhindern das die Gegner ihr Ziel erreichen?
Indem man Türme baut. Oben in der Mitte kann man sich zwischen 4 Grundtürmen entscheiden die man entweder in 4 andere Tower umgestalten kann oder diese Verbessern kann. Der 5. Turm ist eine Mauer. Diese greift nicht an und dient nur dazu zu "mazen".

Was ist "mazen"?
Mazen ist das wenn man mit den Türmen den Gegner in ein Labyrinth schicken muss, damit dieser an seinen Checkpoint oder ins Ziel kommt. Dabei habe ich eine neue Art des Mazen eingebaut die es erlaubt die maze noch enger und somit effektiver bzw komplexer zu gestalten.


Wichtig:
- es ist mir leider noch nicht gelungen die Fehler vollständig herauszukriegen. Die meisten Fehler sind Zugriffsverletzungen (wobei ich zwar sehen kann welche Zeile im Code diese Meldung verursacht, ich aber beim genauen prüfen nicht feststellen kann woran dort der Fehler liegen soll (Code-Bsp: main.geldlbl.Caption:=inttostr(F_gold); )
- die Balance beruht aktuell noch auf reiner Mathematik und kann somit auch unmöglich sein^^ ... muss ich noch ma überarbeiten... (bin selbst noch nicht über lvl 35 gekommen ^^)
- um creep-jugling (die dies können wissen was es ist^^) zu verhindern wird der Weg eines Creeps nicht aktualisiert, wenn ein neuer Turm errichtet wird.
- Todo-list
-- Zugriffverletzungen entfernen
-- Balance verbessern
-- evtl Musik im Hintergund trallern lassen
-- Speicher-möglichkeit einbauen
-- unterschiedliche Schwierigkeitsmodi

ansonst:
ich hoffe es ist trotzdem einigermaßen Spielbar ^^
und möchte pls ein bissl bewertung oder sonstige komments haben^^ (zB auch was man genau machen muss damit ein Fehler kommt oder so)

mfg
(ja ich weiß das ich noch nicht viel Posts hier im Forum habe^^(bin halt der stille Leser, der nicht jedem "müll" nachfragt^^))


huuuuuh - Sa 06.09.08 17:27

colles konzept, so kenn ich towerdefence noch nich. das spiel macht einen guten eindruck.
aber wenn die bilder nich verfügbar sind hagelt es zugriffsverletzungen...


nkp90 - Sa 06.09.08 18:30

eigentlich müssten die mit in dem ordner drin sein: aber ich kann ma versuchen die bilder in die exe mit rein zu packen ....

mfg

edit:
bilder sind in der exe jetz drin ^^


DelphiMarkus - Fr 12.09.08 17:20

Hallo!
Sehr schönes Spiel, es machr richtig Spass! :zustimm: Aber das Spiel hat noch einige Fehler, z.B. Wollte ich eine Mauer bauen, da kam eine Zugriffsverletzung.
Das Spiel ist mir bei 4 Mal Spielen 2 Mal abgestürtzt, warum weiß ich nicht.

Die Zugriffsverletzung ist schon ärgerlich, schau mal ob du sie beheben kannst.


Hidden - Sa 13.09.08 11:12

Hi,

Gefällt mir sehr gut :zustimm:

Der Seuche-Tower ist genial, bekommt als einziger 'ne ganze wave allein down. Solche Sachen müssten aber einmal definiert werden: Ist Seuche aufaddierbar(du hast ja geschrieben "später"), wie lange hält sie an? Ist der Abzug prozentual oder ein Fixwert?

Bei früheren Towerdefense-Versionen hier im Forum(einfach mal suchen ;)) war es so, dass die Range mit einem gestrichelten Kreis beim Bauen angezeigt wurde. Das fände ich sehr schön :D

Das Info-Menü sollte imho nur angezeigt werden, wenn sich die Maus über den Buttons befindet.

Edit: Ein Menü, um die Türme(später?) aufzurüsten vermisse ich :)

Bist du dir beim Schaden des Seuche-Towers sicher? 1-1000 o.O

mfG,


nkp90 - Sa 13.09.08 12:45

bei dem problem mit den zugriffsverletzungen zerbreche ich mir grad noch den kopf dran (schwer den fehler als solches zu finden, da mir die fehlermeldung und der angezeigte code nicht weiter hilft -.-)

das mit dem kreis zum anzeigen des radius is ne gute idee :)
---erledigt

und das mit der seuche bzw den dots das muss ich noch ma überarbeiten ...(aktuell is es so das zB da steht: 1-1000 ... dh alle 1000 milisekunden macht der tower 1 schaden usw...)
---erledigt

das mit den menüs: die gehen eigentlich nur auf wenn man sich mit der maus länger als xxx milisek darüberbefindet (absichtlich so gemacht ... wie ne art hint^^)
---sollt so sein ^^

das mit der späteranzeige bezieht sich auf lvl 10 tower ^^^(schreib ich noch dazu^^)
---erledigt

mfg


Hidden - Sa 13.09.08 15:25

user profile iconnkp90 hat folgendes geschrieben:
das mit den menüs: die gehen eigentlich nur auf wenn man sich mit der maus länger als xxx milisek darüberbefindet (absichtlich so gemacht ... wie ne art hint^^)

Jop, das finde ich soweit ganz gut. Aber, wenn man die Maus vom Knopf runternimmt, braucht's erst einen Rechtsklick, damit das Menü zugeht. Man kann sogar reinklicken ;)

mfG,


Delete - Sa 13.09.08 15:43

Schickes Spiel!Macht richtig Spaß!Wie gesagt würde ich das mit dem Menu verbessern.
Ich finde es blöd das man das Progg nciht minimieren kann.Es ist ja ein Spiel für Zwischendurch und nciht sowas wie Age Of Empires was den ganzen PC beansprucht.


Hidden - Sa 13.09.08 16:05

Kannst du: Rechtklick auf das Symbol in der Taskleiste :lol:

Was ich chic fände wären Shortcuts für die Buttons, z.B. Strg+n für neues Spiel. Und uf jeden Fall ein Menü für einen angeklickten Turm. Wie wertet man eig. Türme auf :?: Verkaufen tät' ich gerne.

mfG,


nkp90 - Sa 13.09.08 18:55

ich hatte festgestellt das in der alten version doch ein paar fehler zu viel dabei waren, welche mit fehlenden bildern zu tun hatte ^^ ... jetz sind die alle in der exe drin, wodurch es möglich ist die türme zu verbessern bzw zu verkaufen oder ähnliches

das mit dem menü weg machen wenn man mit der maus das tower-symbol verlässt war nicht mein plan da es zb auch informationen bzgl rüstung gibt: wenn man mit der maus zB über physisch geht sieht man wie sich physischer schaden auf welche rüstungsart auswirkt. geht man dann mit der maus über die schadensart magisch, wird dieser schriftzug grün und man sieht davon die entsprechende auswirkung auf die rüstung ^^

das minimieren .. naja.. son hässlichen windows-rahmen wollte ich nicht ringsherum haben, und es geht trotzdem (halt per taskleiste) ... ich kann ja mir noch ma was bzgl rahemn bauen einfallen lassen :)

cpu-lastig (wie aoe es war^^) ist das spiel eigentlich nicht ... nur die pathfinding-procedure ist etwas lastig, aber so schnell das es kaum auffallen sollte)

das mit den shortcuts per tastatur is ne gute idee ... nur müsste ich da erst noch bissl lernen, weil ich bisher noch nie was mit tastatursteuerung gemacht hab (außer edit-felder und so :D )


Hidden - So 14.09.08 13:27

Hi,

Dein Programm war gerade auf einmal weg :shock: Keine Fehlermeldung, kein garnichts, einfach verschwunden, der Prozess :gruebel:

Beim Verkaufen fehlt mir noch der Verkaufspreis und ein Hint, dass der Knopf zum Verkaufen da ist ;)

Ansonsten sehr schön :zustimm:

Edit: Argh, nimm bitte dem "Neu"-Button den Fokus weg, wenn er gesetzt wird.. Hab gerade 'ne Acessviolation mit Enter weggeklickt und dann aus versehen alles gelöscht :( War wave 10 :eyes:

E2: Ach so, und manchmal kann man an bestimmte Stellen nichtmahr bauen. Stattdessen kommt 'ne AccessViolation und ein Rotes Fokus-Kreuz oben Links.

E3: Autsch, gerade bei wave 20 oder so('ne Weile nach 14..) ein Haufen von AccessViolations(wie mit'm Timer) und dann, als ich gerade den Prozess killen wollte, war er plötzlich verschwunden :P

War schon fast ger ganze Bildschirm vollgebaut :)

E4: Eventuell während des Baus eines Turms(bevor der Platz gewählt wurde) schon upgraden. Dann könnte man den Platz nach dem Upgraden nach der wirklichen Range auswählen ;)

mfG,


nkp90 - So 14.09.08 15:59

@ hidden:
-das mit nem hint fürs verkaufen lässt sich einrichten
-das mit dem fokus muss ich ma suchen wie man das macht ^^

-das mit dem bauen is mir auch schon ma passiert, aber als ich dann geguckt hatte durch was es verursacht wurde musste ich feststellen das die selbe procedure die den fehler verursachte eigentlich ständig ausgefürht wird, aber seltsamerweise da keine fehler bringt -.-
-das mit den ganzen violations liegt an folgender zeile
if ((F_path[F_passedpath].pkt.x*15-15=x) and (F_path[F_passedpath].pkt.y*15-15=y)) then begin
diese zeile wird immer dann ausgeführt, wenn der creep sich ein pixel weiterbewegt. an der stelle wo der fehler aber auftrat, ist es (schon nach einigen tüfteln) so, dass das dyn. aray F_path zwar gut bestückt ist und auch immer die stelle F_passedpath besitzt, aber trotzdem ein fehler kommt (durch was auch immer -.-)

das is nämlich aktuell noch mein problem bei dem ganzen programm das fehler zustande kommen dessen ursache ich aber nicht finden kann da sie (meiner meinung nach) unlogisch sind --.--

mfg


Hidden - So 14.09.08 16:20

Hi,

Wenn du willst, kannst du das Projekt auch mal hochladen, wären sicher einige bereit, da mal drüberzuschauen :)

Ich glaub, jetzt hab' ich alle Fehlersorten einmal durch :lol: Gerade: .. hat ein Problem festgestellt und muss beendet werden.^^

E: wave 23 und abgestürzt :?

E2: Wenn das Spiel den >Fokus verliert, sollte es auf Pause schalten :)

E3: Wave 27, meinen Highscore angehängt. Wer sich über die vielen schwächenden Türme Wundert: Meine Maus hat da so 'nen Tick und ich hab' verzweifelt versucht, 'nen Laser-Turm zu bekommen :P

mfG,


Hidden - Di 16.09.08 22:42

Ist das eig. Absicht, dass Türme mit 1-1 keinen Schaden machen? =) Z.B. die ersten Stufen des Laser-Turms ;)

Edit: hier nochmal ein etwas strukturierterer Ansatz :D Bin nicht ganz so weit gekommen, da sicher der Feuer-Caster(besonders bei den unfair vielen auf wave 25) einfach besser eignet. Übrigens der einzige Turm, den ich ohne weiteres auf Stufe 10 bekommen habe :?

E2: Hier sieht man's jetzt nicht, aber der Physik-Tower ist Stufe 9.

E3: Das Teleportationslabor kann ja jeden Feind nur ~3 Mal teleportieren. Steigt da die Teleportationsstrecke oder die mögliche Häufigkeit mit der Stufe?

E4: Du solltest das OnPaint der Paintbox benutzen ;) (sry, falls du das bereits tust und es an 'was anderem liegt). Dann wird das Spiel nämlich auch während der Pause neu gezeichnet und ein anderes Fenster wischt beim drüberfahren nicht alles weg.

mfG,


Mitmischer 1703 - Do 18.09.08 17:59

Sehr tolles Programm, Respekt :D !

Was du vielleicht noch überarbeiten könntest, wäre die Einstellung, welcher Feind denn abgeschossen werden soll: Du klickst also auch einen deiner Feinde, und der wird dann von allen dienen Einheiten angegriffen (sofern in Reichweite)


Hidden - Do 18.09.08 18:44

Hi,



Gefällt mir sehr gut, lass dich nicht von den vielen Vorschlägen abschrecken :zustimm:

mfG,


nkp90 - Fr 19.09.08 21:17

erst ma schon ma danke für die vielen gedankenanstöße, leider kann ich aber während der woche eher schlecht weiterarbeiten, weil ich da in meiner wohnung ca 50 km weg von @ home bin und dort noch kein inet hab (erst seit 3 wochen dort oder so und kaum geld -.-)

das mit den anregungen find ich gut ... doch ich werd nicht jede einbauen, da das spiel ansonst entweder zu voll, zu unübersichtlich oder eventuell zu schwer oder gewöhnungsbedürftig werden könnte ^^

und das mit dem zeichnen: ich zeichne auf ein virtuelles bild im ram, das ich dann auf den desktop werfe, was ich aber noch ändern werde ^^

um den rest werd ich mich jetz das we ma bissl kümmern bzw gucken was geht, ohne das ich das halbe prog neu machen muss ^^ (wird schon :) )

mfg
ps:
das mit dem laser-tower auf den lowlevel liegt aktuell an bissl rechnung: 1-1 schaden heißt das mit jedem schuss 1 schaden gemacht wird, aber durch die rüstung, welche 50% ignoriert ist es so, dass (weil ich bisher nur mit integer rechne) halt die zahl abgerundet wird auf 0 schaden ^^

und: lvl 31 hab ich bisher auch noch net geschafft (lvl 30=pers. rekord ^^)


Hidden - Sa 20.09.08 11:45

Hi,

Kannst du die Rüstung nicht irgendwie in die tatsächlichen hp einfließen lassen? Integer bietet ja doch einiges mehr an Performence ;)

mfG,


nkp90 - Sa 20.09.08 12:08

mh... *grübel grübel*

für die ersten angenommen 10 lvl würde es sich lohnen, aber später weiß ich nicht ob ich an das integercap kommen würde, weil der lvl 50 boss hat doch schon einiges aufn kasten :D

ich werde mir dazu auch paar gedanken machen, kann aber nicht garantieren das ich das das we schaffe, weil doch noch einiges an RL ansteht^^ .. aber ich wollte jetz die woche den rechner ma mit zur wohnung nehmen, was so viel heißt wie das ich vorankommen müsste und nächstes we (leider erst) ein update da sein müsste ^^

mfg


Hidden - Sa 20.09.08 16:37

Hi,

Sonst nimm doch schonmal cardinal und steig später auf int64 um.. immernoch mehr performence als extended, oder?

Was heißt "mehrmals" beim Seuche-Tower Stufe 10? beliebig oft? das wär' ja ziemlich heftig :shock:

Edit: Und was ändert sich beim Teleport-Labor durch aufrüsten?

E2: Also priorität hat im Moment auf jeden Fall, dass das Spiel immer weider zu crashen scheint. Ich habe meinen Königsweg inzwischen gefunden und glaube, dass ich auch lvl 31 knacken würde.. Ist mir aber heute schon drei Mal um lvl 30 rum gecrasht und langsam bin ich es leid^^

Also: entweder speichern(sicherlich am einfachsten zu realisieren) oder diesen Fehler finden :?

Im Anhang: Meine Strategie, hatte dann auf lvl 30 noch die hälfte der Mauern in Numb-Türme(Hammer) verwandelt und das ging mit dem Boss schonmal ganz gut, der hat sich kaum noch bewegt :D

mfG,


Hidden - Sa 20.09.08 17:34

Ich sehe gerade, dass du den Hauptpost heute editiert hast. ist 'ne neue Version online :?: Wär' ganz schön, wenn du das dann auch nochmal unten schreiben würdest ;)

E: Wie verhält es sich mit der Numb-Chance der Hammer-Türme in Abhängigkeit vom Level?

E: Hier ein schönes Beispiel, warum ich mir einen beschleunigen-Button wünsche: Map voller numb-Türme -> der Boss wird ewig außerhalb der Range des Seuche-Towers sitzen :lol:

mfG,


nkp90 - Sa 20.09.08 19:26

also bei dem seuche stufe 10 is es atm so dass es sich beliebig oft stacken lässt ^^

und atm is es beim teleporttower so das dieser mit jeder steigenden stufe um bissl mehr als das doppelte oder so den creep zurückteleportiert

das mit den stun-towern is so das die warscheinlichkeit auf stun mit jedem lvl um ca 4% erhöht ^^ ... naja.. aber das mit dem dauerstun wollte ich noch ma überarbeiten, weil es zT sehr nervig sein kann (wie von dir schon festgestellt^^)

und ja ^^ ... das nächste ma sag ich noch ma bescheid bzgl neuer version ^^ (sry)

das mit der speicherfkt find ich auch ganz gut, aber da weiß ich noch nicht ganz wie ich dynamische arrays bzw klassen richtig speichern kann, sodass es auch etwas sicher ist^^

mfg


Hidden - So 21.09.08 12:40

Hi,

Ich weiß zwar nicht, was du da genau machst. Aber ich habe den Verdacht, dass die Vollcrashs(die haben andere doch auch?? :?:) 'was mit der Systemlast zu tun haben: Die treten nämlich genau dann auf, wenn viele Aktionen gleichzeitig ausgeführt werden.

Bis dahin fände ich es gut, wenn man die Animation(fliegende Schüsse) abschalten könnte(dringend :D).

Vielleicht kann ja jemand ein Programm empfehlen, mit dem ich den Prozess mal überwachen könnte. Ist mir nämlich ziemlich schleierhaft, dass der einfach so ohne Fehlermeldung verschwindet.. (Oder hast du da irgendwas eingebaut :?:)

An lvl 30 bin ich zwar immer wieder herangekommen, aber mein neues Konzept scheint die Volcrashs zu begünstigen: Ich habe in letzterzeit nichtmehr im eigentlcihen Sinne verloren :(

mfG,


nkp90 - So 21.09.08 17:52

das mit der animation der schüsse kann ich abschlaten ... kein ding ^^, aber das ändert eigentlich nur das das es keine animation mehr gibt und somit der schaden sofort gewirkt wird ^^ ... naja ... siehe anhang ...

und .. ich habe nix eigebaut was fehler oder abstürze bevorzugen oder verursachen könnte --- das is ja mein problem ... aber das mit dem tip wenn viel gehandelt wird ist absturz groß das kann eventuell daran liegen, dass sich bestimmt mehrere befehle überschneiden ...
wenn das wirklich der fall ist fällt mir aber grade eben nur ein was ein was man eventuell überarbeiten könnte....

naja... ich habe auch schon unter delphi gezockt und fehler gekriegt ... leider zeigen diese violations im code dann auf zeilen wie: btn.caption:=inttostr(5); oder bleiben bei irgendwelchen ifs hängen .. aber wenn ich an der stelle den prozess überprüfe in den ganzen arrays und records die ic hab dann muss ich leider festellen, dass es kein fehler gibt (unschlüssig-.-)

es wäre geil wenn man die fehlermeldungen irgendwie programmintern und nicht auf windows basierend, abfangen könnte, weil ich da fehlermeldungen schreiben kölnnte die mir auch was sagen ...

naja... ansonst versuch ich jetz das beste in der woche zu erreichen was möglich ist und hoffe auch das ich eine stabilere version bzw fehlerfreie *hoff & träum* releasen kann :)

mfg & nice week :)


Boldar - So 21.09.08 18:01

user profile iconnkp90 hat folgendes geschrieben:


es wäre geil wenn man die fehlermeldungen irgendwie programmintern und nicht auf windows basierend, abfangen könnte, weil ich da fehlermeldungen schreiben kölnnte die mir auch was sagen ...


Naja, try...except halt :wink: :wink:


nkp90 - So 21.09.08 18:09

user profile iconBoldar hat folgendes geschrieben:

Naja, try...except halt :wink: :wink:


darüber hatte ich auch grad gelesen ... aber wenn ich mir das alles angucke was da im code alles sein könnte wird mir eher schlecht :D
naja... ich hab ja bissl zeit jetz die woche :D (und werde vll den ganzen code einkapseln ^^)

mfg


Hidden - So 21.09.08 20:32

user profile iconnkp90 hat folgendes geschrieben:
ich habe nix eigebaut was fehler oder abstürze bevorzugen oder verursachen könnte

Meinte eher, ob du bei einem bestimmten Fehler die Fehlermeldung unterdrückst :lol: hätte ich dir aber auch nicht zugetraut ;)

Sofern das Projekt modular aufgebaut ist, sollte es doch keine Probleme machen, einzelne Programtile kurzzeitig auszukommentieren und so die Fehler einzugrenzen? Das wäre jetzt mein Ansatz.

Ansonsten sieht sich das auch sicher gerne mal ein Experte hier im Forum an: Sollte es sich hier um Mandelbugs/Heisenbugs(tolles Wort, kenn' ich auch erst seit kurzem. Trifft hier aber glaub' ich genau zu) handeln, wäre das ja in der Hinsicht interessant :D

E: Hat der Preis des Nuklear-Labors irgendeine Rechtfertigung?^^ Hab's gerade mal so weit aufgepusht wie's irgendwie ging(vernünftigen Turm genommen, gepusht, verkauft, auf Stufe 7 aufgerüstet) und es schien mir ziemlich nutzlos..

E2:Das "nicht animieren" bezog sich übrigens nur auf's Zeichnen der Geschosse ;) Würde ich übrigens echt mal machen - testweise halt jeden Teil modular einmal ausbauen und schauen, ob der Fehler verschwindet.

mfG,


nkp90 - Fr 26.09.08 18:28

animationen oder so könnt ich ja ausschliessen oder irgendwelche zusätzlichen effekte, aber da gibts halt net viel, weil ansonsten das spiel nicht mehr richtig funzt ^^

das mit den nuklear-laboren is noch bissl falsch, weil ich da noch ein kleinen rechenfehler drin hab ^^ .. go to be fixed ^^

mfg

e: update "fast" fertig ^^


Hidden - Sa 27.09.08 01:12

Hi,

Also, damit das Spiel wieder Spaß macht, müssen zunächst einmal die Vollcrashs gefixt werden. Dazu kann ich dir jetzt empirisch sagen, dass von ca. 10 gespielten Runden der letzten Tage alle exakt auf wave 30 gecrasht sind.

Wohl oder übel - du wirst eine Möglichkeit finden müssen, die Teile isoliert zu testen. Am besten du rufst jede Prozedur einmal in einer Schleife mit jedem möglichen Parameter auf und shcaust, wann es crasht.

Ansonsten würde ich mich bereiterklären, mal über den Quelltext zu schauen - habe ich inzwischen mehrfach erwähnt, will dir das aber wirklich nicht aufdrängen =)).

mfG,


jaenicke - Sa 27.09.08 09:22

user profile iconnkp90 hat folgendes geschrieben:
aber das mit dem tip wenn viel gehandelt wird ist absturz groß das kann eventuell daran liegen, dass sich bestimmt mehrere befehle überschneiden ...
wenn das wirklich der fall ist fällt mir aber grade eben nur ein was ein was man eventuell überarbeiten könnte....
Benutzt du Multithreading? Dann musst du Zugriffe auf jegliche visuelle Komponenten synchronisieren, sonst sind Zugriffsverletzungen an "unerklärlichen" Stellen (hier ja beim Zugriff auf Label, etc.) kein Wunder ;-).


nkp90 - Sa 27.09.08 17:52

multithreding nutz ich eigentlich nicht ... bin grad dabei alles ma so zu isolieren und zu testen obs noch so bleibt das problem ....

*working*

e: problem gefunden wieso es zu so vielen errors kommt: bei dem pathfinding speicher ich den weg in ein dyn array ... dabei kommt es halt (durch frag mich nicht was) ab und zu ma vor das ein creep irgendwohin teleportiert wird und den weg neu berechnet .. wenn der creep allerdings in ein tower kommt oder ein paar spawns zuvor oder außerhalb der karte dann hagelt es fehlermeldungen ... *fixing*


Marc. - Sa 27.09.08 18:02

Hi! Dein Programm braucht bei mir ewig um zu starten. Entweder du baust einen SplashScreen ein oder schaust, dass die Startzeit verringert wird. Zudem ist mir aufgefallen, dass Images/Icons des Spiels Warcraft3 verwendet wurden. Ich weiß jetzt nicht, inwiefern das einem erlaubt ist. ;)


nkp90 - Sa 27.09.08 18:26

@ marc

das mit den bildern: mit (c) und so hatte ich bisher sehr wenig zu tun ^^ ... aber wenn du willst mal ich halt die bilder alle neu (nach dem vorbild :D)

und das mit dem lange starten hängt damit zusammen weil es in der startzeit den "rasen" im hintergund generiert ^^

mfg (ich werd mir merken :) )


Hidden - Sa 27.09.08 19:23

Hi,

Warum speicherst du nicht ein Stückchen Rasen in der Exe ab und zeichnest das in Rechtecken auf den größeren Hintergrund?

mfG,


nkp90 - So 28.09.08 12:22

das hatte ich schon ma gemacht und ich fand das das "sehr bescheiden" aussah ^^ ... deswegen hab ich mir ne methode geschrieben mit dem das prog innerhalb von ca 15 zeilen den ganzen rasen macht ^^ ... (auch platzsparender in der exe) ...

ich werd das aber ma so ändern das es entweder schneller laden soll oder es einem nicht so vorkommt als wäre es lang ^^ ...

mfg

aso ... und das mit den errors is bissl mehr als dumm ^^, weil ich zwei kritische stellen gefunden hab und diese mit try..except eingekapselt hab, aber dann ein error kommt wenn es den except teil wählen soll -.- (obwohl dort nur drin steht main.caption:='2'; ) ... naja... *to be continued*


jaenicke - So 28.09.08 12:46

Ja, du hast offensichtlich irgendwo einen schweren Fehler drin, vermutlich überschreibst du Speicher, z.B. wegen eines ungültiges Indexes eines dynamischen Arrays, oder ein Objekt auf das du zugreifst ist nil oder du hast doch einen weiteren Thread irgendweswegen oder oder...

Jedenfalls stimmt da etwas ganz und gar nicht, wenn du bei VCL-Komponentenzugriffen solche Fehler bekommst, und die Ursache liegt da ganz woanders im Quelltext meistens. Wenn du niemandem den Quelltext zeigen willst, wirst du da wohl selber überall danach schauen müssen ob da so etwas vorkommt irgendwo.


Hidden - So 28.09.08 13:50

Hi,

Dieses Mal war es etwas besonderes: Während der ganzen wave kamen sporadisch Exceptions, in regelmäßigen Abständen. erst drei, dann 'ne längere pause. Dann mal vier, dann sieben oder so. Und nach einer längeren Pause auf einmal viele.

Nach mehreren tausend Exceptions binnen ~3 Sekunde ist das Programm dann gecrasht, siehe Screenshot.

Edit: Kann meinen Anhang leider nicht hochladen, [..]

E2: Geht jetzt. Hier:

mfG,


Hidden - Mi 01.10.08 13:00

Hi,

Mal ganz banal gefragt, weil mir das wirklich nicht klar ist: Verschwindet der Fehler denn, wenn du die betreffenden Zeilen auskommentierst :?:

E: Ich finde übrigens den Seuche-Tower auf lvl 10 nicht übertrieben: die cd erlaubt einfach nicht, dass er wegen des unbegrenzten stockens zu schnell killt. Und mit einer null-Immunität braucht er immer noch einen Begleittower, der eine Wave prinzipiell auch alleine schafft ;) Deshalb würde ich übrigens 0.25 von physisch auf Seuche packen, dass er wenigstens noch ein bisschen Schaden macht.

E2: Featurevorschlag: Testen der 10er-Türme. unendlich viel Geld und einstellbare Wave(immunität, ..)

mfG,


nkp90 - Mi 01.10.08 20:46

so ....

ich hab ma bissl was gemacht und *siehe mainpost* hab es auch geuppt ....

folgendes möchte ich dazu sagen:
- der teleporttower steht noch auf der todo list mitn überarbeiten
- eine anleitung fehlt noch
- der baumodus

naja... das mit den zugriffsverletzungen is bei mir sogar irgendwie so das es trotz try ein error gibt -..- (zumindest wenn man per kompiler ausführt) ... egal was ich wo ausklammer: manchmal geht es bisl lvl 50 manchmal nicht ... (habe aber festgestellt das es am slown oder am doten leigen könnte ^^)

wie man auch erkennen wird habe ich die rüstungsauswirkungen etwas geändert ^^ ... (neben dem design (und das man auch mobs anklicken kann ^^)

naja... ich werd jetz noch ma bissl zocken ohne kompiler um zu gucken bzgl fehler oder so ^^

mfg


jaenicke - Do 02.10.08 01:31

user profile iconnkp90 hat folgendes geschrieben Zum zitierten Posting springen:
naja... das mit den zugriffsverletzungen is bei mir sogar irgendwie so das es trotz try ein error gibt -..- (zumindest wenn man per kompiler ausführt)
Du kannst in den Optionen testweise einstellen, dass bestimmte Exceptions ignoriert werden, auch beim Starten aus der IDE. Trotzdem sind try..excepts ohne die genaue Ursache zu kennen (und diese als nicht behebbar eingestuft zu haben) keine gute Idee.


Boldar - Mo 27.10.08 17:48

Kann mal jemand posten, welchen weg die creeps immer nehmen?


Delete - Mo 27.10.08 20:07

Wie bekommt man eigentlich Helden?


Hidden - Mo 27.10.08 20:23

Hi,

Die Creeps nehmen immer die folgenden punkte in fester reihenfolge, dazwischen die kürzeste Verbindung.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
     4------5
     |      |
0--------1  |
     |   |  |
     |   |  |
     3---2  |
            |
            6


Helden bekommen? :nut: Das ist eine einfache Gegnerklasse(da sie sich mit Seuche/Numb-Towers sehr leicht ausschalten lässt. Alleine ist man eben gefärdet ;)).

Zurzeit müsste wohl die Prozedur zum finden des Kürzesten Weges komplett neugeschrieben werden, da sich der Fehler nicht eingrenzen lässt. Irgendwo steckt in dem Projekt leider sehr zief der Wurm drin :(

Hab den Source zu Hause und nicht sehr viel dran machen können. Ist leider aber acuh sehr viel mit verschachtelten Schleifen und Variablen a, b, c, d, e, .., sodass ich mich nicht getraut habe, da viel zu ändern.

Würde vielleicht bei einem Neuaufsetzen der Creep-Logik auf einen objektorientierten Ansatz mit Referenzen auf den Nachfolger umsteigen.

Auch, würde ich den Weg einmal zu Wavebeginn für alle creeps berechnen lassen. Damit wird die Position nämlich zu einem einfachen integer und der weg für alle zu einem Array of TPoint, an dem du während einer Wave garnichtmehr schreiben musst.

Trotzdem schön, dass ihr den Thread wieder ausgegraben habt :) Grafisch gefällt mir das Spiel ja mal super :zustimm:

mfG,


Boldar - Do 30.10.08 19:46

Heisst das also, das du jetzt an dem Projekt weiterarbeitest??


Hidden - Do 30.10.08 20:09

Nicht wirklich. Der Source ist keineswegs standard-objektorientiert und ließ sich leider kaum modifizieren, da ich keinen Überblick gewinnen konnte.


Boldar - Do 30.10.08 20:18

Wird das Programm denn dann neu programmiert oder evtl. (mit Einverständnis von nkp90) als Gemeinschaftsprojekt weitergeführt?


Hidden - Do 30.10.08 20:23

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Wird das Programm denn dann neu programmiert oder evtl. (mit Einverständnis von nkp90) als Gemeinschaftsprojekt weitergeführt?
Die Frage kann ich nur weiterleiten. Im Prinzip müsste nur die Findpath-Prozedur komplett neu geschreiben werden. Die geht aber über ~3 Bildschirme von verschachtelten for-Schleifen.

Meine neueste PN ist vom Sa 04.10.08 20:11.

mfG,


nkp90 - Sa 01.11.08 19:12

sry erst ma das ich *länger weg war* ... hatte rechnerprobleme gehabt (nach dem einschlaten durchgehendes piepen und so ... (bin ich froh das das prog net weg is ^^


naja... das mit der pathfindprocedure is wirklich bissl verkniffen und kompliziert (seh da fast selbst nicht mehr durch :D ... aber ich denk ma das ich es schaffen müsste es so hinzukriegen mit dem array of tpoint ... das scheint die einfachste, stabilste und sicherste methode zu sein ... allerdings weiß ich nicht wie sich das da mit dem speicher verhält ... (wenn da zB das array 1000 - 5000 "points" groß is ...)

mfg nkp :)


Hidden - So 02.11.08 09:40

Hi,

Von der Anzahl an TPoints hängt natürlich bei dernaiven Lösung die Auflösung der Bewegung ab(irgendwann würden sie anfangen, kleine Hüpfer zu machen :mrgreen:).

Ich habe allerdings nochmal über das Konzept nachgedacht und eigentlich ist es nur nötig, die Eckpunkte eines Weges und, wie viele nach Links/oben/rechts/unten verrückte "Leerstellen" folgen, zu speichern.

Ein Array-Record sähe dann so aus:

Ein Creep(habe mich inzwischen an die Bezeichnung gewöhnt, dachte zu allererst es ginge um verlangsamte Gegner *g*) müsste sich dann (a) dan Index seines TPoints merken und (b), wie viele schritte er von dort weiter ist.

Ist jetzt nur so auf die schnelle, das Konzept. Eventuell bekommt der Creep auch seine Pos als TPoint und die wird immer per Inc() oder Dec() erhöht(je nachdem, welche Richtung im Bewegungs-Record steht). Dann muss natürlich noch geprüft werden, ob der Creep den nächsten TPoint im Array erreicht hat(je nach Bewegungsrichtung X- oder Y-Position des Creeps mit der im Record vergleichen).

Ist sicherlich noch ausbaufähig. Ich könnte mich ja nochmal durchwühlen, aber ich frage lieber :D wie machst du das denn zurzeit? Also der Weg wird auf jedem Zielfeld neu berechnet, das habe ich erkannt..

mfG,


nkp90 - So 02.11.08 12:52

jo ... find ich auch nicht unbedingt schlecht das der weg auf jedem wegpunkt neu berechnet wird bis zum nächsten .. (die "laggs" für die berechnung fallen im spiel nicht auf...) --> würde ich auch erst ma so beibehalten...

das mit der iddee mit dem richtungweisenden array ist nicht schlecht und speichersparend ... es wäre ein versuch wert ... aber im endeffekt könnte es aber auch passieren das dann so was raus kommt wie atm noch zu finden ist: weil da nicht die eckpunkte gespeichert sind sondern halt jeder punkt ... im prinzip das gleiche, nur das es jeden punkt erfasst ...

ich werde das jetz erst ma so machen nach der ersten variante und dann auf auslastung/belastung testen :)

mfg nkp

aso: frage nebenbei:
ist es eigentlich egal wie viele array of records man in eine unit packen kann oder gibts da grenzen?^^


Boldar - Sa 08.11.08 21:03

^^ Die Unit darf unter ntfs nicht grösser als ca. 2 GB sein...


nkp90 - Sa 08.11.08 21:14

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
^^ Die Unit darf unter ntfs nicht grösser als ca. 2 GB sein...


LOL

das größte file ist ca 1250 kb groß :D aber dennoch gut zu wissen :D


Boldar - Di 10.02.09 22:35

Findet hier noch weiterentwiklung statt?


Hidden - Di 10.02.09 23:13

Hi :wave:

Also meinerseits nicht. Es gab zwischendurch mal eine neue Version, die zu testen ich nicht richtig die Zeit hatte. Wenn nkp90 sich nichtmehr melden sollte, könnte ich da wohl in einer ruhigen Minute nochmal drüberschauen. Das wird aber definitiv nicht vor den nächsten Sommerferien sein.

mfG,


Boldar - Di 10.02.09 23:15

mmh vllcht könnte man das ja auch als Teamprojekt weiterführen??
Also mit nkp90, und ich hätte auch interesse.
So wie du das beschreibst, müsste das aber wohl komplett neugeschrieben werden...


Hidden - Di 10.02.09 23:59

Auch eine Idee - sehen wir mal, was nkp90 dazu sagt :)


nkp90 - So 05.04.09 12:53

user profile iconHidden hat folgendes geschrieben Zum zitierten Posting springen:
Auch eine Idee - sehen wir mal, was nkp90 dazu sagt :)


ich sage ja :P

also: ich hatte zwar ne weile nix mehr dran gemacht, weil ich halt bis jetz noch net gefunden hab was die xceptions hervorrufen könnte ...

von daher geb ich ma alles frei was ich da bzgl hab :P --> anhang :)


Boldar - Mo 06.04.09 01:12

Also möchte wer ein Teamprojekt draus machen? Dann postet halt in der Team-sparte. Ich bin zwar bis Ostern wahrscheinlich nicht mehr da, aber ich mache auf jedenfall mit.


nkp90 - Do 09.04.09 20:50

user profile iconBoldar hat folgendes geschrieben Zum zitierten Posting springen:
Also möchte wer ein Teamprojekt draus machen? Dann postet halt in der Team-sparte. Ich bin zwar bis Ostern wahrscheinlich nicht mehr da, aber ich mache auf jedenfall mit.


ich würde halt mit amchen und für fragen und so offen da stehn / bzw diese stellen :D ...

allerdings is bei mir das problem dass ich während der woche in meiner wohnung bin (wo ich bisher noch kein inet hab) und nur am we @ home ...

mfg


PreMarT - Fr 18.09.09 09:50

Echt nicht schlecht, gefällt mir :)

Wollt ich auch mal amchen aber keine Zeit für :P

Ich liebe TD's

MFG