Bomberman Klon (Community Tutorial) BMAX
Übersicht 

Gehe zu Seite Zurück 1, 2, 3 Weiter
![]() |
mpmxyz |
![]() |
---|---|---|
brl.Max2D ist ein komplett abstraktes Modul.
Das heißt, dass es weder etwas mit OpenGl noch mit DirectX zu tun hat. Die Implementierung erledigen die brl.xyzMax2D-Module. Wenn du einfach nur so Code wegschreibst, musst du keinen Grafiktreiber setzen, da die Module ihn beim Start des Programmes selbst festlegen. (eine Vermutung: letztes importiertes Modul->der aktivierte Treiber bei Programmstart) Schreibe es aber lieber explizit, um Verwechselungen zu vermeiden. mfG mpmxyz |
||
Moin Moin! Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
KirkZeroBetreff: Wow... viel Futter |
![]() |
|
---|---|---|
Leute... ihr seid klasse!!! Das ich hier so viel Hilfestellung bekomme, find ich echt extrem SUPER!!!
Ich habe die Kommentare jetzt erstmal durchgeschaut, und werde sie mir später (hab grad feierabend und bin extrem müde) nochmal so richtig durch den Kopf gehen lassen. Denke, dann muss ich meinen letzten Worklog Eintrag mal editieren, da ich ja dort ein wenig dummes Zeug geredet habe. Jedenfalls werd ich mir alles zu Herzen nehmen... und "versuchen" alles soweit klar zu stellen, wie ich es mit meinen Worten schaffe... (bin nicht so der ErklärBär und hatte es mir einfacher vorgestellt) Was aber nicht heisst, dass ich es nicht wenigstens versuche. Und da ich soviel Anregungen, Tipps, Verbesserungsvorschläge und Erklährungen bekomme... denke ich... das wird schon ![]() NOCHMALS DICKES DANKE!!! |
||
No Brain, No Pain |
KirkZeroBetreff: Wow... viel Futter |
![]() |
|
---|---|---|
Leute... ihr seid klasse!!! Das ich hier so viel Hilfestellung bekomme, find ich echt extrem SUPER!!!
Ich habe die Kommentare jetzt erstmal durchgeschaut, und werde sie mir später (hab grad feierabend und bin extrem müde) nochmal so richtig durch den Kopf gehen lassen. Denke, dann muss ich meinen letzten Worklog Eintrag mal editieren, da ich ja dort ein wenig dummes Zeug geredet habe. Jedenfalls werd ich mir alles zu Herzen nehmen... und "versuchen" alles soweit klar zu stellen, wie ich es mit meinen Worten schaffe... (bin nicht so der ErklärBär und hatte es mir einfacher vorgestellt) Was aber nicht heisst, dass ich es nicht wenigstens versuche. Und da ich soviel Anregungen, Tipps, Verbesserungsvorschläge und Erklährungen bekomme... denke ich... das wird schon ![]() NOCHMALS DICKES DANKE!!! |
||
No Brain, No Pain |
KirkZeroBetreff: Editiert |
![]() |
|
---|---|---|
So, Worklog editiert. https://www.blitzforum.de/worklogs/394/
Hat auch einiges für mich klargestellt. Danke! Arbeite auch grad schon am nächsten Eintrag, da aber wieder Wochenende ist, und mich da auf der Arbeit über Arbeit nicht beklagen kann... muss ich mal sehen, wie weit ich heute komme ![]() Ansonsten gibt es das erst morgen oder übermorgen Nacht... (Ich habe keine Ahnung, warum mein letztes Kommentar doppelt gepostet wurde, hab auch nix gefunden, wie ich es löschen könnte...) |
||
No Brain, No Pain |
n-Halbleiter |
![]() |
|
---|---|---|
Deine Steuerungsmethode lässt sich schön beschleunigen (wenn auch nur minimal). Du musst das " And MilliSecs() > BewegungsTimer+BewegungsPause" bei jeder If-Abfrage entfernen und dann die gesamte If-Abfrage für die Tasten in eine Andere mit der Bedingung "MilliSecs() > BewegungsTimer+BewegungsPause" schachteln.
Die Methode würde damit wie folgt aussehen: <code> Method Steuerung() 'Enthält die Steuerungsabfrage If MilliSecs() > BewegungsTimer+BewegungsPause If KeyDown(KEY_UP) 'wenn Pfeiltaste OBEN gedrückt wird yPos:-Speed BewegungsTimer = MilliSecs() ElseIf KeyDown(KEY_DOWN) 'wenn Pfeiltaste UNTEN gedrückt wird yPos:+Speed BewegungsTimer = MilliSecs() ElseIf KeyDown(KEY_LEFT) 'wenn Pfeiltaste LINKS gedrückt wird xPos:-Speed BewegungsTimer = MilliSecs() ElseIf KeyDown(KEY_RIGHT) 'wenn Pfeiltaste RECHTS gedrückt wird xPos:+Speed BewegungsTimer = MilliSecs() End If End If End Method </code> Das nur mal so am Rande. Da ich noch nichts zum Worklog und dem Projekt an sich gesagt habe: Ich finde deine Idee klasse und auch den Inhalt deiner Einträge gut. Weiter so! ![]() |
||
mfg, Calvin Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
KirkZero |
![]() |
|
---|---|---|
@n-Halbleiter
Mensch, dass ist ja schon wieder so eine kleine aber feine Sache!!! Wieso komm ich auf sowas nie??? ![]() Das macht die ganze IF... THEN Sache auch wieder ein bissel übersichtlicher! Danke! Werd ich gleich mal zu Beginn des nächsten Eintrages mit einarbeiten. Zitat: Da ich noch nichts zum Worklog und dem Projekt an sich gesagt habe: Ich finde deine Idee klasse und auch den Inhalt deiner Einträge gut. Weiter so! Smile
Danke auch dafür! Freut mich sehr. Merke aber, das es mit jedem Eintrag schwieriger wird, das alles vernünftig zu dokumentieren... mal sehen, was draus wird ![]() |
||
No Brain, No Pain |
![]() |
XeresModerator |
![]() |
---|---|---|
Vielleicht willst du (oder ein anderer leser) mal den interessanten Artikel von hectic durchsehen:
Vernünftige Tastatursteuerung Ist zwar BlitzBasic, aber dennoch womöglich von Relevanz (zumal die Befehle nahezu 1:1 gleich sind). Was mir aufgefallen ist: Dein Spieler Bild hat 4x die Frames die es bräuchte; Für die Top-down Ansicht würde ein Frame-Strip reichen und der Rest ließe sich durch SetRotation erreichen. Um die, sagen wir "Rotationseffekte" (Drehung um die obere, linke Ecke), zu vermeiden, verwende ich eigentlich immer AutoMidHandle - also gebe immer die Mitte der zu zeichnenden Objekte an, um die auch die Drehung stattfindet. Das ist vermutlich reine Gewöhnungssache, hat aber seine Vorteile. Wenn du mal Effekte mittels Farbe/Skalierung oder eben Rotation einbaust, wäre es vorteilhaft, die passenden Werte direkt vor dem Zeichnen zu setzen - oder eben immer auf den Standard zurück zu setzen falls du von diesem abgewichen bist. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960 Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
KirkZero |
![]() |
|
---|---|---|
@Xeres
Erstmal danke für den Link! Das werd ich mir garantiert durchlesen. Zum Thema SetRotation: Ich hatte schonmal mit SetRotation und auch SetScale gearbeitet (beides im gleichen Programm) und ich hatte da (hab sie in Echtzeit benutzt) ziemliche Einbrüche bei der Geschwindigkeit. Ich weiß allerdings, das man diese vor dem Hauptprogramm ausführen und das Resultat dann in eigene images (nur solange das Programm läuft) speichern kann. Meinst du das so, oder ist SetRotation Echtzeitfähig? (Das ist allerdings auch schon ca. zwei einhalb Monate her, da war ich noch kräftig am Grundlagen lernen.) Ich denke, ich werde es erstmal so beibehalten, da ich mit AutoMidHandle einiges an Berechnungen neu machen müsste (besonders für den neuen Eintrag, den ich bis eben geschrieben habe (ist noch nicht online, da noch nicht ganz fertig)). Da ich aber grad so gut "drinn" bin, will ich mir da nicht selber ein Bein stellen. Soll aber nicht heissen, dass ich mir das nicht nocheinmal anschauen werde! Danke dir für die Info! |
||
No Brain, No Pain |
![]() |
XeresModerator |
![]() |
---|---|---|
Ich hatte da noch keine Offensichtlichen Geschwindigkeitseinbrüche... mach dir nicht mehr Arbeit als nötig ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960 Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
mpmxyz |
![]() |
---|---|---|
SetRotation wird nicht gerade viel Leistung brauchen, wenn man es nicht gerade in Massen anwendet. ![]() Das liegt daran, dass dort gerade einmal zwei Aufrufe der trigonometrischen Funktionen und ein geschätztes Dutzend an Wertzuweisungen stattfindet. Beim Zeichnen danach gibt es keine Extraberechnungen, da die aktuelle Rotation und Skalierung so oder so mit einbezogen wird. (Das sind aber nur ein paar Multiplikationen.) Du hast die Funktion mit dem RotateImage ![]() BlitzBasic konnte wegen des veralteten DirectDraw keine Bilder gedreht zeichnen. BlitzMax nutzt stattdessen Direct3D und OpenGL. Ich muss deinen Programmierstil übrigens loben! Du hast dir ziemlich gute Variablennamen ausgedacht. mfG mpmxyz |
||
Moin Moin! Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
KirkZero |
![]() |
|
---|---|---|
Gut... kann sein, das ich da was verwechselt habe... ist ja auch schon nen bissel her und hatte nicht grad wenig Sachen ausprobiert. Vielleicht verwechsel ich da wirklich was.
Werd mir das einfach nochmal anschauen und nochmal nen bissel damit spielen @mpmxyz Danke für die Blumen ![]() |
||
No Brain, No Pain |
KirkZero |
![]() |
|
---|---|---|
Ich habe den neuen Eintrag Kollision mit der TileMap
grad nochmal editiert. Ich habe es nämlich ebend noch geschafft, die Steuerungsmethode um einges besser zusammenzufassen! Gibt bessere Übersicht und weniger Code. Also falls schon jemand den Eintrag gelesen hat, es lohnt sich, da nochmal rein zu schauen ![]() Werd auch das Downloadpaket gleich nochmal dafür anpassen! |
||
No Brain, No Pain |
Sterbendes Lüftlein |
![]() |
|
---|---|---|
Respekt, was du da auf die Beine gestellt hast ![]() |
KirkZero |
![]() |
|
---|---|---|
Danke Totensturm...
aber ich habe hier ja auch viel tatkräftige Unterstützung bekommen. Ich hoffe ausserdem... das keine Kommentare (zu meinen letzten Einträgen) bedeutet... dass das soweit alles in Ordnung ist, was ich da anrichte ![]() Nächster Eintrag geht in ca 30 minuten online... da machen die Bomben dann auch schon was kaputt ![]() Also bis gleich.... |
||
No Brain, No Pain |
n-Halbleiter |
![]() |
|
---|---|---|
Ich würde so etwas prinzipiell über Scripts lösen, da du damit flexibler bist.
*Werbung* Du kannst, wenn du eine BlitzMax-ähnliche Syntax haben willst, Vorx.Script nutzen. Aktuell fehlen noch ein paar Features, die zur Komplettierung fehlen, aber an sich ist das Modul nutzbar. Anonsten gibt es viele Scriptsprachen, die du nutzen kannst. Oder du kannst natürlich auch selbst eine kleine schreiben (dazu kannst du das zurate ziehen). Viel Erfolg, das Thema Scriptsprachen ist wohl genauso komplex wie spannend. ![]() |
||
mfg, Calvin Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit Ploing! Blog "Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935) |
![]() |
XeresModerator |
![]() |
---|---|---|
Lua wäre auch möglich. Aber: ich hätt's einfach Hardgecodet. Schneller, einfacher, perfekt zugeschnitten. Wie oft würde man das Faktum nutzen, das man Items scripten kann?
Wenn du dir schon die Arbeit machen willst: Spar' dir das doch für die KI auf. Da macht ein Script richtig Sinn! Neben händisch Spielen, ein kleines KI-Duell - hatten wir länger nicht mehr, war ein großer Spaß: https://www.blitzforum.de/foru...hp?t=33647 |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960 Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Thunder |
![]() |
---|---|---|
Ich stimme Xeres zu. Für einen Bomberman-Klon kann ich die möglichen Items (die mir so einfallen) an zwei Händen (vielleicht auch an einer) abzählen. Ich hätte es auch hardgecodet, weil ich glaube, dass sich der Aufwand nicht lohnt. | ||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
BIG BUG |
![]() |
|
---|---|---|
Generell würde ich Eigenschaften der Tiles nicht über die Abfrage nach dem Typ lösen, sondern direkt als Attribute an dem Objekt abspeichern.
Beispielsweise fragst Du ab ob ein Feld mit einer Bombe belegt ist und stoppst die Explosion oder mit einem Soft-/Hardblock und du stoppst die Explosion und später bei den Items wohl auch... Besser ist dem Objekt/Tile einfach einen Parameter "Explosionsdurchlässig" zu verpassen, welcher je nach Typ gesetzt wird. Es reicht dann einmal den Parameter abzufragen. Wenn Du neue Objekte hast, musst Du dann Dir nur überlegen Explosionsdurchlässig oder nicht... und Du kannst es zur Laufzeit ändern. Vielleicht mag man ja einstellen können, ob herumliegende Items Explosionen stoppen oder nicht. |
||
B3D-Exporter für Cinema4D!(V1.4) MD2-Exporter für Cinema4D!(final) |
KirkZero |
![]() |
|
---|---|---|
@BIG BUG
Das kommt erst ins Spiel, wenn auch die Items integriert sind, darüber habe ich auch schon nachgedacht. Da ich aber bis jetzt noch nicht genau wusste, wie ich die Items nun integriere, habe ich alles so gelassen, wie es ist. Da die Items allerdings der nächste Schritt sind, werde ich, nachdem ich diese auch eingebaut habe, eh nochmals ein wenig den Code zurechtschleifen. Dann kann ich auch alles als KOMPLETTES behandeln. Danke für deinen Hinweis!!! @alle Anderen Ok... wie gesagt, lerne ja noch ![]() Aber soweit bin ich ja noch nicht. Werd jetzt mal schauen, wie es mit den Items weitergeht. Danke für die Kommentare und auch die Links!!! |
||
No Brain, No Pain |
KirkZero |
![]() |
|
---|---|---|
So... erstmal: neuer Eintrag ist online...
Was ich jetzt aber schonmal gerne wissen würde... Ist das so, wie es bisher ist, möglich, das ganze online fähig zu machen? Oder hätte ich da von Anfang an anders an die Sache ran gehen müssen??? Danke für Antworten und auch schonmal Danke für Kommentare zum Eintrag!!! |
||
No Brain, No Pain |
Gehe zu Seite Zurück 1, 2, 3 Weiter
Übersicht

