Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249409 (10845)
  Suchen
 Zurück zur Übersicht
 AutorThema: Erste Testversion von StoneMove
Marcel Pursche
Datum:04.10.01 12:00 Antwortenals Email verschicken (mp05@metropolis.de) 


Hallo!

Ich habe nun die erste Testversion von meinem Spiel StoneMove fertig. Es ist eine Logik-Spiel und hat bis jetzt drei simple Level.Es benutzt für die Grafik DirectDraw, für den Sound MCI.
Ich würde gerne für die Steuerung DirectInput verwenden, muß dazu aber einen GUID erstellen.
Wie macht man das in Profan (in C++ nimmt man DEFINE_GUID)?

Wenn jemand mein Spiel testen will dem kann ich es per E-Mail zuschicken(1,03 MB).



Jörg Sellmeyer
Datum:04.10.01 12:26 Antwortenals Email verschicken (joerse@gmx.d) 


Hallo,
In PrFellow gibt es eine Vorlage dazu:
makeGUID.prv
Jörg


Marcel Pursche
Datum:04.10.01 14:57 Antwortenals Email verschicken (mp05@metropolis.de) 


Hallo,
danke für deine Hilfe, aber das ist nicht das was ich gemeint habe. Ich muss folgende C++-Anweisung igendwie in Profan umsetzen: DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);

Dieses GUID brauche ich um mit CreateDevice ein DirectInputDevice zuerstellen.

Beta-Version von StoneMove ist jetzt unter folgender Adresse downloadbar: zwirny.bei.t-online.de/stmove.zip


Marcel Pursche
Datum:04.10.01 15:04 Antwortenals Email verschicken (mp05@metropolis.de) 


Bei der Adresse muss das S und das M in StMove.zip großgeschieben werden.


Frank Abbing
Datum:04.10.01 20:10 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo.

War ziemlich gespannt auf dein Spiel, lief aber leider nicht, aber ich hab' auch nur eine olle 2 MB 3DFX-Karte. Braucht das Spiel soviel Speicher oder könntest du auch eine abgespeckte Variante erstellen ???

Gruss, Frank


Marcel Pursche
Datum:05.10.01 11:57 Antwortenals Email verschicken (mp05@metropolis.de) 


Hallo Frank!
Dass das Spiel nicht bei dir läuft könnte daran liegen das deine Grafik-Karte kein Double-Buffering unterstützt. Ich werde versuchen eine Version mit Single-Buffering zu erstellen.


Marcel Pursche
Datum:08.10.01 13:20 Antwortenals Email verschicken (mp05@metropolis.de) 


Hallo,
ich habe es geschaft das Stone Move jetzt auch mit älteren Grafikkarten läuft. Die Bilder werden nun anstatt in den Grafikkartenspeicher
in den Systemspeicher geladen. Dadurch läuft Stone Move sogar auf meinem 166MHz Notebook mit einer 2MB Chips & Tech. Grafikkarte.


Frank Abbing
Datum:08.10.01 17:18 Antwortenals Email verschicken (frankabbing@12move.de) 


Hallo.

Irgendwie paßt noch nicht alles.
Jetzt wird das Spiel zwar schon (hin und wieder) gestartet, aber es steigt auch genausooft grundlos wieder aus.
Ach ja, ein Registry-Fehler kommt beim Starten auch immer.

Schade...

Gruss, Frank


Marcel Pursche
Datum:09.10.01 10:05 Antwortenals Email verschicken (mp05@metropolis.de) 


Hallo,
ich hab vergessen zu sagen das man jetzt vor dem ersten start des Spiels die Setup.exe starten muß. Sie schreibt in die Registry wo sich das StoneMove-Verzeichnis befindet(unter HKEY_CURRENT_USER\Software\StoneMove\DIR).


Sebastian König
Datum:05.10.01 12:15 Antwortenals Email verschicken (webmaster@sekoenig.de) 


Hallo,

um die GUID zu erstellen, kannst Du die Funktion CLSIDFromString benutzen. (CLSID's sind GUID's)

Hier ein kleines Beispiel:
DEF CoTaskMemAlloc(1) !"OLE32","CoTaskMemAlloc"
DEF CLSIDFromString(2) !"OLE32","CLSIDFromString"
DEF MultiByteToWideChar(6) !"KERNEL32","MultiByteToWideChar"

declare guid$,olestr&
declare GUID_SysKeyboard&

let olestr& = CoTaskMemAlloc(128)
let GUID_SysKeyboard& = CoTaskMemAlloc(16)

let guid$ = "{6F1D2B61-D5A0-11CF-BFC7-444553540000}"
MultiByteToWideChar(0,0,Addr(guid$),Len(guid$),olestr&,128)

CLSIDFromString(olestr&,GUID_SysKeyboard&)


Ich hoffe, das hilft Dir weiter.

MfG

Sebastian


Marcel Pursche
Datum:09.10.01 11:02 Antwortenals Email verschicken (mp05@metropolis.de) 


Hallo,
beim erstellen eines Quellcodes der DirectInput benutzt ist bei mir ein weiteres Problem augetreten. Ich muß per SetDataFormat angeben welches Format das Input-Device hat. Als Parameter muss ich die vordefinierte Struktur c_dfDIKeyboard vom Format DIDATAFORMAT übergeben. In C++ wird sie per "extern const DIDATAFORMAT c_dfDIKeyboard;" erstellt. Wie bekomme ich heraus welche Werte in der Struktur stehen?


Sebastian König
Datum: 11.10.01 18:45 Antwortenals Email verschicken (webmaster@sekoenig.de) 


Hallo,

diese Struktur ist in der statischen Bibliothek dinput.lib definiert, die beim Linken mit dem Programm, das DirectInput nutzt, verbunden wird. Mit Profan²-Programmen funktioniert das leider nicht, da Profan² keinen nativen Code erzeugt... :-(

Ich habe mir die Struktur mal mit einem Debugger angesehen. Die ersten 5 Elemente sind Konstanten und könnten einfach in eine Bereichsvariable geschrieben werden.
Das Problem ist das 6. Element: Ein Zeiger auf ein Array von DIOBJECTDATAFORMAT-Strukturen mit 256(!) Elementen. Jede DIOBJECTDATAFORMAT-Struktur enthält als erstes Element einen Zeiger auf eine GUID (128-Bit Integer).

Abgesehen davon, dass ich mit meinem Debugger nur das erste Element des Array's auslesen kann, wäre es ein enormer Aufwand, die Struktur mit Profan² zu erzeugen: Man müsste für die Struktur insgesamt 258 (!!) Bereichsvariablen verwenden: c_dfDIKeyboard# (24 Byte), rgodf# für das Array (4096 Byte) und 256 GUID's á 16 Byte

Ich fürchte, Du wirst für die Eingabe in deinem Spiel "profanere Mittel" statt DirectInput verwenden müssen...

MfG

Sebastian


 Zurück zur Übersicht