Autor Beitrag
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Mo 28.11.11 18:56 
ja ich hab die hilfe nur überflogen, dann weiß ich bescheid, danke.
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Mo 28.11.11 20:47 
Außerdem kann man durch "Graben" auch einen Diamanten einsammeln ohne sich zu bewegen. Manchmal sehr wichtig!

Das Drücken der R-Taste zum Neustart ist ans Original-Spiel angelehnt. Leider keine offensichtliche Funktion, kann man deshalb auch leicht übersehen oder wieder vergessen. Die Elemente habe ich übrigens auch alle beschrieben, so z.B. auch, dass man die Amoebe einschließen muss, damit sie sich in Diamanten verwandelt. Allerdings macht es, denke ich, mehr Spaß, die Funktionsweise der verschiedenen Elemente selbst herauszufinden. Bin auch schon teilweise an Höhlen verzweifelt, die ich letztendlich dann doch lösen konnte (oder auch nicht ;-) )

Gruß
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Di 29.11.11 23:50 
user profile iconrushifell hat folgendes geschrieben Zum zitierten Posting springen:
Außerdem kann man durch "Graben" auch einen Diamanten einsammeln ohne sich zu bewegen. Manchmal sehr wichtig!

jau, das wusste ich schon..

was ich noch lustig finden würde: vielleicht könnte man es so machen, dass eine steuertaste nur einmal kurz gedrückt werden muss, damit sich der spieler permanent in die selbe richtung bewegt. erst beim drücken einer anderen steuertaste wechselt der spieler die richtung. evtl. bräuchte man dann auch noch ne stoptaste, damit man auch mal inne halten kann.
weiß nicht, ob das so einfach geht und ob du noch lust dazu hast.. nur ein vorschlag und keine kritik an der jetzigen steuerung..
gruß
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Mi 30.11.11 21:26 
Ich habe nun die Steuerung für die Tastatur nochmal überarbeitet und nutze jetzt das SDL_KEYDOWN und das SDL_KEYUP - Event (statt SDL_GetKeyState), so wie es auch empfohlen wird. Ein sehr großer Vorteil: Auch bei sehr leichtem Antippen der Richtungstaste bewegt sich die Figur immer ein Feld in die entsprechende Richtung. Bin mir nicht sicher, ob die Steuerung nun wirklich besser ist!? Wäre schön, wenn jemand Lust und Zeit hätte, das zu testen. Im Anhang könnt ihr die neue exe-Datei runterladen. Einfach in den Ordner des Spiels kopieren und starten.

EDIT: Download entfernt. Die Version mit verbesserter Steuerung kann man nun im ersten Beitrag runterladen.

Dr. Hallo hat folgendes geschrieben:
vielleicht könnte man es so machen, dass eine steuertaste nur einmal kurz gedrückt werden muss, damit sich der spieler permanent in die selbe richtung bewegt. erst beim drücken einer anderen steuertaste wechselt der spieler die richtung. evtl. bräuchte man dann auch noch ne stoptaste, damit man auch mal inne halten kann.
Danke für den Vorschlag. Ich denke, dass das Spiel dadurch jedoch zu schwer wird.
Als Info: Die horizontale Bewegungsrichtung (links/rechts) wird immer der vertikalen Bewegungsrichtung (oben/unten) vorgezogen. Wenn man also z.B. rechts/unten drückt, wird sich der Spieler immer nach rechts bewegen.

Viele Grüße


Zuletzt bearbeitet von rushifell am Sa 03.12.11 13:11, insgesamt 1-mal bearbeitet
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Do 01.12.11 11:08 
ja, die steuerung ist jetzt wirklich besser. das steigert ganz prima den spielspass. eigendlich leuchtet mir aber nicht ein, warum sdl_getkeystate das nicht bringt, denn eigendlich sollten doch mit jedem sdl_pumpevents das keystate array aktuallisiert werden. letztere funktion tut ja m.a.n. dann auch nichts anderes als keydown und keyup abzufragen um den entsprechenden key im array auf 1 oder 0 zu setzen. bei mir funktioniert das jedenfalls problemlos. aber dein spiel läuft auch prinzipiell anders ab.

egal durch die neue steuerung kann man etwas dynamischer unterwegs sein, das ist gut!

gruß
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Do 01.12.11 22:28 
Dr. Hallo hat folgendes geschrieben:
ja, die steuerung ist jetzt wirklich besser. das steigert ganz prima den spielspass.
Danke für's Testen :-)

Dr. Hallo hat folgendes geschrieben:
eigendlich leuchtet mir aber nicht ein, warum sdl_getkeystate das nicht bringt, denn eigendlich sollten doch mit jedem sdl_pumpevents das keystate array aktuallisiert werden.
Ich habe immer SDL_PollEvent statt SDL_PumpEvents benutzt, wobei ich dachte, dass das keinen Unterschied macht. Werde nochmal die Gamepad-Steuerung überarbeiten und dann das Spiel updaten.

Viele Grüße
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Fr 02.12.11 13:22 
prinzipiell sieht das bei mir so aus..

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
_keyarray = SDL_GetKeyState(NULL);

while(gamerun)
{
    //_keyarray aktualisieren..
    SDL_PumpEvents();
    ...
    
    while(SDL_PollEvent(&Event))
    {
        ...
    }
}


gruß..
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Sa 03.12.11 00:18 
Danke für Dein Beispiel.

Zitat:
SDL_PumpEvents gathers all the pending input information from devices and places it on the event queue. Without calls to SDL_PumpEvents no events would ever be placed on the queue. Often the need for calls to SDL_PumpEvents is hidden from the user since SDL_PollEvent and SDL_WaitEvent implicitly call SDL_PumpEvents. However, if you are not polling or waiting for events (e.g. you are filtering them), then you must call SDL_PumpEvents to force an event queue update.

Verstehe ich das richtig, dass SDL_PollEvent automatisch SDL_PumpEvents aufruft? Wenn also SDL_PollEvent(@event) benutzte, brauche ich SDL_PumpEvents nicht?

Gruß
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Sa 03.12.11 10:04 
also wenn ich sdl_pumpevents auskommentiere funktionierts trotzem, also übernimmt tatsächlich pollevents die aufgaben von pumpevents. das ist gut. hier pumpevents zu verwenden ist aber nicht auf meinem mist gewachsen; das habe ich so aus käuflich erworbener fachliteratur entnommen. voll doof. :)
gruß
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Sa 03.12.11 13:33 
Dr. Hallo hat folgendes geschrieben:
also wenn ich sdl_pumpevents auskommentiere funktionierts trotzem, also übernimmt tatsächlich pollevents die aufgaben von pumpevents.

Das SDL_GetKeyState hatte ich deshalb immer in der while SDL_PollEvent(@event) > 0 do- Schleife. Ich meine, ein zusätzliches SDL_PumpEvents schadet nichts, laut Dokumentation sollte es jedoch nicht notwendig sein (sofern ich das richtig verstehe).

Update auf Version 1.1 (Download wie immer im ersten Beitrag)
- Verbesserung der Steuerung
- Kleine Änderungen in den Menüs

Ich habe die Tastatur- und Gamepad-Steuerung überarbeitet. Bei einem leichten Antippen der Richtungstaste bewegt sich der Spieler nun immer ein Feld in die entsprechende Richtung. Vorher war meist ein längeres Halten der Richtungstaste notwendig, damit sich der Spieler bewegt. Im Menü "How to play" steht nun der Hinweis, dass man über den Restart-Button die Höhle neu beginnen kann, falls man eingeschlossen ist.

Weiterhin viel Spaß beim Zocken :-)

Viele Grüße
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Sa 10.12.11 15:45 
Ich habe nocheinmal die Steuerung überarbeitet. Es gibt nun keine bevorzugte Richtungstasten mehr, alle Richtungstasten werden gleichwertig behandelt. Dies gilt sowohl für die Tastatur als auch für den Joystick/das Gamepad. Das bedeutet, dass immer die zuletzt gedrückte Taste verarbeitet wird, falls mehrere Tasten gleichzeitig gedrückt werden. Wenn ihr z.B. die linke Pfeiltaste und rechte Pfeiltaste gleichzeitig drückt, hängt die Bewegunsrichtung davon ab, welche der beiden Tasten zuletzt gedrückt wurde.

Vorher war die bevorzugte Bewegungsrichtung eine horizontale Bewegung (links/rechts), wie im Original-Spiel. Ich denke jedoch, dass die aktuelle Steuerung besser ist.

Viele Grüße
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Mo 12.12.11 07:30 
So, die aktuellste (und hoffentlich letzte ;-) ) Version mit optimierter Steuerung könnt ihr im ersten Beitrag runterladen. Außerdem gabs ein kleines Update des Leveleditors, den ihr bei Bedarf von meiner Homepage runterladen könnt.
Zitat:
C64 import: correct cave selection table for bd1- & bd2-engine games is generated

Weiterhin viel Spaß beim Zocken.
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Mi 17.10.12 04:32 
Vielleicht erinnert sich der ein oder andere noch an dieses Projekt. Nachdem ich mein Projekt nach langer Zeit fertiggestellt hatte, machte ich mir Gedanken über eine Neuimplementierung mit OpenGL. Warum? SDL ist ganz nett, hat aber in seiner reinen Form erhebliche Einschränkungen. So ist es in SDL z.B. nicht ohne weiteres möglich, unterschiedliche Bildschirmauflösungen zu wählen. Leider gibt hierfür in SDL nur eine Softwarelösung, die selbst implementiert werden muss. Dementsprechend schlecht schlägt sich das dann entweder auf die Performance oder auf die Optik nieder (zu zweitem: siehe mein altes Projekt ;-) ). Das war Anfangs der eigentliche Grund auf OpenGL umzusteigen. Später lernte ich weitere Vorzüge von OpenGL kennen. Heutzutage würde ich SDL ohne OpenGL nicht mehr weiterempfehlen. Als ich mein Projekt 2006 startet, wusste ich es jedoch eben nicht besser. Viele Punkte ging ich bei meiner Neuimplementierung dann strukturierter an, weil ich genau wusste, welche Fehler aus meinem alten Projekt ich in meinem neuen Projekt vermeiden wollte.

Die Gameengine bleibt die gleiche. Hier habe ich nur kleine Änderungen vorgenommen. Die wesentliche Änderung ist nun, dass das Spiel eine variable Geschwindigkeit hat, die im Editor über das "Cave delay" eingestellt werden kann. Dementsprechend ist die Zeitmessung nun konstant. Wobei ich aus Kompatibilitätsgründen zum C64 sowohl das PAL-Timing (etwas langsamer) als auch das NTSC-Timing unterstütze (hier entspricht eine Sekunde einer Sekunde). Diese Einstellung kann im Editor für das Levelset festgelegt werden. Die meisten C64-Fanspiele wurden für PAL entwickelt, deshalb ist das die Voreinstellung.

Bildschirmauflöung: 640*480, 800*600,1024*768 und 640*480 im Vollbild (Umschalten zwischen Fenster und Vollbild jederzeit über ALT + Enter möglich).
Zoomen: Das Rein- und Rauszoomen ist im Spiel möglich.
Warp: Durch Halten der Warp-Taste kann man "vorspulen". Das ist vor allem hilfreich, wenn man das Wachsen der Amoeba beschleunigen möchte.
Das Spiel bietet eine volle Gamepad/Joystick-Unterstützung an. Das heisst, nach dem Start wird die Tastatur nicht mehr benötigt. Die Natigation in den Menüs ist über das Gamepad möglich. Keine Angst, natürlich unterstütze ich auch die Steuerung über die Tastatur ;-)

Weitere kleine Infos, u.a. über die Steuerung findet ihr im Unterordner "infos".

Wundert Euch nicht darüber, dass sich der Titel meines Projekts geändert hat und ich einen anderen Nick verwende.

Hier noch zwei Screenshots:

Spiel:
user defined image

Editor:
user defined image

Die Downloadlinks gibts im ersten Beitrag.

Viele Grüße
Dr. Hallo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 110
Erhaltene Danke: 13

XP
C/C++/C#
BeitragVerfasst: Do 18.10.12 23:01 
Hat sich gelohnt.. ich glaube, man ist jetzt auch etwas fixer unterwegs!
Die Sound-Lautstärken würde ich noch etwas aufeinander abstimmen. Teilweise ziemlich laut.
Gruß!
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1166
Erhaltene Danke: 81

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Fr 19.10.12 06:47 
Ist ein sehr schönes Spiel geworden. Hat mir beim anzocken die Nacht gut gefallen. Diese wachsenden Flächen "Amoebe" wenn ich nicht irre, ist das Absicht das die einem nichts tuen? Wenn ja, dann wenn die Zeit reicht einfach abwarten und dann gibt es eine reiche Ernte. Nur kann ich mir nicht vorstellen dass das Absicht ist.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 455
Erhaltene Danke: 85

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Fr 19.10.12 16:12 
IIRC war das im Original Boulder Dash doch auch so... Die Amöbe wuchs und wuchs bis sie sich in Diamanaten verwandelte. Geschadet hat sie dabei nicht - nur den Platz weggenommen.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: Fr 19.10.12 17:50 
Ersteinmal vielen Dank fürs postive Feedback. Das gibt immer wieder einen Motivationsschub, am Ball zu bleiben. :-)
Dr. Hallo hat folgendes geschrieben:
ich glaube, man ist jetzt auch etwas fixer unterwegs!

Ja, das stimmt. Die Spielgeschwindigkeit der einzelnen Höhlen ist nun variabel und kann im Editor eingestellt werden: Settings - Value - Cave Delay. Das "Cave Delay" entspricht im Prinzip einem Sleep oder in Turbo Pascal einem Delay ;-). Je höher das Cave Delay, desto langsamer ist die Spielgeschwindigkeit. Wobei ich natürlich kein Sleep benutze, sondern einfach den Speedfactor des Timebased Movement aus dem Cave Delay berechne.

Dr. Hallo hat folgendes geschrieben:
Die Sound-Lautstärken würde ich noch etwas aufeinander abstimmen. Teilweise ziemlich laut.

Das stimmt. Die Soundeffekte sind bezüglich der Lautstärke nicht gut aufeinander abgestimmt. Ich wollte bei Gelegenheit neue Soundeffekte erstellen (im Netz habe ich leider nichts passendes gefunden). Mir ist jedoch auch aufgefallen, dass unter Win7 die Soundeffekte während dem Spiel unterschiedlich laut sind. Dieser Effekt tritt bei mir unter Vista nicht auf. Bin mir nicht sicher, ob das an den Dateien oder eventuell doch an der bass.dll liegt.

Sinspin hat folgendes geschrieben:
Diese wachsenden Flächen "Amoebe" wenn ich nicht irre, ist das Absicht das die einem nichts tuen?

Ja, da hat OlafSt recht, das ist Absicht: die Amoebe schadet dem Spieler nicht, kann ihn jedoch einschließen. Nach Ablauf einer gewissen Zeit (Amoeba Time), wächst die Amoebe zudem noch schneller. Wird die Amoebe zu groß (Amoeba Max. Size), verwandelt sie sich in Steine. Die Amoebenzeit ist in der Regel so eingestellt, dass der Spieler immer eine gute Chance hat, genug Diamanten vor Ablauf der Zeit einzusammeln.

Sinspin hat folgendes geschrieben:
Wenn ja, dann wenn die Zeit reicht einfach abwarten und dann gibt es eine reiche Ernte.

Oder Du hälst einfach die Warp-Taste (Tab-Key ist die Standardeinstellung) gedrückt, um die Amoebe schneller wachsen zu lassen. Butterflies und Fireflies explodieren bei Kontakt mit der Amoebe, und Butterflies verwandeln sich in Diamanten.

Wenn ich es zeitlich schaffe, werde ich in den nächsten Tagen die Möglichkeit einbauen, Demos aufzuzeichnen, abzuspielen und sich in einer Highscore-Liste zu verewigen. ;-)
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1166
Erhaltene Danke: 81

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: So 21.10.12 15:11 
Ich kenne das Orginal nicht. Ich hatte als Kind/Jugendlicher andere Sachen im Kopf als vorm Rechner (sowas gab es auch garnicht) zu sitzen und mir Fett anzuzocken. Gibt es irgendwo eine Doku was die verschiedenen Spielelemente für eine Wirkung/Verhalten haben? Was fange ich mit den Voodoo Dolls an?

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.
rushifell Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 306
Erhaltene Danke: 14



BeitragVerfasst: So 21.10.12 17:36 
Sinspin hat folgendes geschrieben:
Ich kenne das Orginal nicht. Ich hatte als Kind/Jugendlicher andere Sachen im Kopf als vorm Rechner (sowas gab es auch garnicht) zu sitzen und mir Fett anzuzocken.

Das gabs und gibts bei mir auch nicht. Deshalb käme es für mich nie in Frage, mich an einem Rollenspiel oder Aufbauspiel zu versuchen. Ich bin nur ein Gelegenheitszocker, mal ne halbe Stunde zwischendurch, dann reichts mir schon wieder. Viel mehr Sorgen bereitet mir hingegen die viele Zeit, die ich beim Programmieren verschwende. Habe mir schon oft geschworen, damit aufzuhören, aber irgendwie ist es wie eine Sucht :-(

Ich kenne die Originale deshalb in und auswendig, da ich die Spiel-Physik ausgiebig studiert habe, um möglichst nah am Original zu sein. Die meiste Zeit habe ich jedoch nicht mit "Spielen" verbracht, sondern mit dem Auslesen und Analysieren der Hexdaten aus dem Speicher.

So, jetzt zu Deiner Frage:
Sinspin hat folgendes geschrieben:
Gibt es irgendwo eine Doku was die verschiedenen Spielelemente für eine Wirkung/Verhalten haben? Was fange ich mit den Voodoo Dolls an?

Ja, gibt es. Dem Download des Editors liegt eine chm-Hilfedatei bei. Dort findest Du unter Editor - Elements eine kurze Beschreibung aller Elemente.
Zitat:
A voodoo doll will be destroyed in contact with an enemie and the player will explode. Some voodoo dolls can collect falling diamonds.

Im levelset "Richidash 2" werden alle Eigenschaften der Voodoo-Doll ausgenutzt. Das Spiel enthält jedoch viele Puzzle und ist sehr schwer. Sobald ich das Speichern und Laden von Replays/Demos unerstütze, werde ich eine Demo mitliefern.

So, und es gibt wieder eine kleines Update. Ich habe nun die Highscore-Unterstützung eingebaut. Genauere Beschreibungen findet ihr im Unterordner Infos. Der Eintrag in die Highscore-Tabelle ist sowohl über Eintippen mittels Tastatur als auch über das Gamepad möglich. Deshalb gibt es eine Auswahl aus dem Zeichensatz. Download ist wieder im ersten Beitrag. Hier noch zwei Screenshots:

user defined image

user defined image

Das Spiel ist übrigens auf Englisch, weil mir bei der Umsetzung ein paar Leute geholfen haben, die kein deutsch sprechen.

Viele Grüße
Sinspin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1166
Erhaltene Danke: 81

Win7
DXE2 Prof, Lazarus
BeitragVerfasst: Mo 22.10.12 15:07 
Dankeschön, die Hilfe ist zwar sehr knapp aber sie hat geholfen. Ich finde es sehr schön das man die Zeit abschalten kann. Denn ich hasse es unter Druck zu arbeiten. Lieber knoble ich Stundenlang an einer Lösung bis ich es raushabe.
Ich denke mal, das Spiel könnte bei meiner Mutter ein großer Renner werden. Dazu wäre es aber sehr toll wenn es das Spiel auch in deutsch gäbe.

_________________
Solange keine Zeile Code geschrieben ist, läuft ein Programm immer fehlerfrei.
Ich teste nicht, weil ich Angst habe Fehler zu finden.