Zeus Revenge Diskussionsthread

Antworten
muenzspielfreund
Beiträge: 34667

Re: Zeus Revenge Diskussionsthread

Beitrag von muenzspielfreund »

Hier einmal so ein kleiner Appetizer aus einem aktuell in der Entwicklung befindlichen Projekt. Die unten zu sehende kleine SUB (Routine) dient dazu, an bestimmten Stellen des Bildschirms nach und nach - mit ein bisschen Animation und Sound - Diamanten aufzureihen. Du siehst beispielsweise auch, dass mit dem Befehl "CALL" aus der SUB heraus mehrmals eine weitere Routine aufgerufen und abgearbeitet wird, die eine andere Funktion aufweist (in diesem Falle "Scatterspeicherdisplays").

Um den gesamten Code-Text zu sehen, musst Du innerhalb des Fensters scrollen. Am besten kannst Du die SUB lesen und verstehen, wenn Du sie an einem Stück siehst. Dazu musst Du im Fester auf "CODE: ALLES AUSWÄHLEN" klicken und den Text am besten in den einfachen Windows-Editor hineinkopieren (die kleine SUB passt auf eine Bildschrimseite).

Code: Alles auswählen

'--------------------------
SUB DiamantenAufbauen
'--------------------------

DIM n AS LOCAL LONG
DIM n2 AS LOCAL LONG
DIM n3 AS LOCAL LONG

    FOR n=0 TO 2
        Diamantenspeicher(n)=0
    NEXT


    FOR n=1 TO 5
        FOR n2=0 TO 2
            IF WildMatrix(n,n2)=1 THEN
                INCR Diamantenspeicher(n2)
            END IF
        NEXT
    NEXT

    FOR n=0 TO 2



            IF Diamantenspeicher(n)>0 THEN

                    FOR n2=1 TO Diamantenspeicher(n)
                        GRAPHIC COPY Hintergrund_Kopie,0,(955,411)-(1171,484) TO (955,411+133*n)
                        FOR n3=1 TO n2
                            GRAPHIC COPY Diamant,0,(0,0)-(42,79) TO (1022+n3*44-n2*22,411+n*133)
                        NEXT
                        Playsound (NameSound + "Diamant.wav",0,1)
                        scspd=n
                        scspd_dunkel=1
                        CALL ScatterspeicherDisplays
                        GRAPHIC REDRAW
                        SLEEP 100
                        CALL ScatterspeicherDisplays
                        GRAPHIC REDRAW
                        SLEEP 100
                    NEXT n2
            END IF


    NEXT

SLEEP 500


END SUB 
Zuletzt geändert von muenzspielfreund am 16.05.2018, 21:15, insgesamt 9-mal geändert.
zumindest zugedröhnt glaub‘ ich mir des…

Benutzeravatar
Esteka
Beiträge: 28305

Re: Zeus Revenge Diskussionsthread

Beitrag von Esteka »

Jeder GRAPHIC Befehl, z.B. COPY zum Kopieren von Bildausschnitten, schreibt in einen Zwischenspeicher. Die REDRAW Anwesung frischt den Bildschirmspeicher damit auf. So können beliebig viele Bildelemente zusammengetragen werden, auch übereinander, ehe das sehr zeitaufwändige Anzeigen für den Benutzer stattfindet.

Auf diese Weise besteht ein Grossteil der Programmroutinen aus dem Hin- und Herschieben von rechteckigen Bitmaps. Bei den Walzen könnt Ihr Euch das bestimmt gut vorstellen.
Zuletzt geändert von Esteka am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Spieler sind Menschen, die dem Glück eine Chance geben. (Werner Mitsch)

huettenjung
Beiträge: 265

Re: Zeus Revenge Diskussionsthread

Beitrag von huettenjung »

Grundsätzlich würde es mich auch interessieren mich da mal wieder etwas einzuarbeiten.
Esteka hat geschrieben:Bei 800p Einsatz pro Dreh explodiert die Maschine natürlich, das ist nichts für die Gastronomie Aufstellung. Die 247oo auf dem Punktespeicher kann er Dir in 2 Minuten absaugen :)
Von wegen - er hat mir bei der Gelegenheit nochmal die blauen Pferdchen gegeben - weitere 97 GGs ^^
Eine beobachtung ist mir noch eingefallen, beim Aufzählen hat er bei 1.000 Punkten aufgehört zu zählen und dann irgendwann 185 GGs gewonnen angezeigt.

EDIT: Und die GGs waren wohl nicht 3 stellig vorgesehen. In den Goldseriespielen ist die Zahl sehr weit nach rechts gerutscht - ich sage wieder bescheid wennn ich die 4 stellig habe :lol:
Zuletzt geändert von huettenjung am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Original Spielescout

Benutzeravatar
Esteka
Beiträge: 28305

Re: Zeus Revenge Diskussionsthread

Beitrag von Esteka »

ja stimmt, solche Riesenwerte habe ich nicht vorgesehen. Ist aber nur ein optisches Problem?
Zuletzt geändert von Esteka am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Spieler sind Menschen, die dem Glück eine Chance geben. (Werner Mitsch)

Benutzeravatar
Günter
Beiträge: 2825

Re: Zeus Revenge Diskussionsthread

Beitrag von Günter »

kobayashi hat geschrieben:P.S. ich habe beim Spielen von Zeus Revence auf der neuen Lord-Hardware ein merkwürdiges Phänomen, dass die Prozessortemperatur massiv ansteigt (90-100°C). Dies tritt bei den anderen Spielen nicht auf. Testhalber habe ich das Board in der CPU Frequenz etwas gedrosselt, dann hält sich die Temperatur in Grenzen.
An sich sollten solche Temperaturen gar nicht auftreten. Evtl stimmt da etwas bei der Kühlung nicht. Ich hatte mal einen Kühlkörper falsch angebracht. Der Prozessor traf nicht auf die vorgesehene Kupferfläche, sondern daneben auf das Aluminium. Das machte gleich 20 Grad aus.
FrankBln hat geschrieben:Da hätte ich Lust drauf. :-) Leider habe ich nur Amiga Basic erfahrung und ist schon ne Weile her. :-(
Da solltest Du Dir keinen Kopf machen. Die grundsätzlichen Befehle haben sich über die Jahre kaum verändert.

Fensteroberflächen sind dazu gekommen. Man fragt heute nicht mehr die Tastatur ab, und schreibt in den Bildschirmspeicher. Da gibt es einen Fenstermanager, der auf Eingaben in einem Fenster aufmerksam macht, den man bittet, etwas dazustellen.

Günter
Zuletzt geändert von Günter am 16.05.2018, 21:15, insgesamt 9-mal geändert.

Benutzeravatar
Esteka
Beiträge: 28305

Re: Zeus Revenge Diskussionsthread

Beitrag von Esteka »

Man fragt heute nicht mehr die Tastatur ab, und schreibt in den Bildschirmspeicher. Da gibt es einen Fenstermanager, der auf Eingaben in einem Fenster aufmerksam macht, den man bittet, etwas dazustellen.
aber nicht bei Powerbasic. Da musste ich einen eigenen Thread mit eigenem Timing schreiben, der alle 50ms die Tastatur abfragt und Tastendrücke verarbeitet. Übel ist, dass manche Tastendrücke als 1 Byte im Tastaturpuffer stehen, andere Tasten aber in zwei Bytes. Solche Routinen sind natürlich fertig und portabel, um sie in jedem Spiel wiederzuverwenden.
Zuletzt geändert von Esteka am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Spieler sind Menschen, die dem Glück eine Chance geben. (Werner Mitsch)

Benutzeravatar
Günter
Beiträge: 2825

Re: Zeus Revenge Diskussionsthread

Beitrag von Günter »

Gibt es keine Call-Back-Funktionen, die aufgerufen werden, wenn in einem Fenster so etwas, wie ein Tastendruck stattfindet?

Günter
Zuletzt geändert von Günter am 16.05.2018, 21:15, insgesamt 9-mal geändert.

Benutzeravatar
Esteka
Beiträge: 28305

Re: Zeus Revenge Diskussionsthread

Beitrag von Esteka »

ja, man kann die Windows Message Queues abfragen, aber das erfordert ein Standard Windows Fenster mit dickem Rand und Statuszeile. Das sieht doch doof aus für eine Slotmachine. Ich habe die Fenster lieber selbst programmiert und nehme meine eigene Tastenabfrage.
Zuletzt geändert von Esteka am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Spieler sind Menschen, die dem Glück eine Chance geben. (Werner Mitsch)

Benutzeravatar
kobayashi
Beiträge: 4897

Re: Zeus Revenge Diskussionsthread

Beitrag von kobayashi »

Das ist auch ein Performance Problem. In Delphi habe ich auch erst versucht sauber über die Windows-Api's zu programmieren. Die Windows Rahmen sind da kein Problem, die kann man per API abschalten.

Aber die Performance geht dann so gar nicht. Der neue Weg per "Andorra" die DirectX Schnittstelle zu nutzen um direkt in den Bildspeicher zu schreiben ist deutlich performanter. CPU Leistung ist (fast) nicht mehr erforderlich, dafür muss die GPU der Grafikkarte etwas mehr können.

@Günther : Nochmal zur Temperatur, dieser Temperaturanstieg tritt ausschließlich bei Zeus auf, sonst nie. Das kann nicht am Kühler liegen, was ich außerdem schon gecheckt habe. Neue Paste drauf usw.

@Esteka : Bei der Integrierung des Games Stars in mein Lord Projekt habe ich manchmal das Problem, dass das Spiel nach dem Menuaufruf keinen Focus bekommt (sowohl bei Deinem als auch meinem Menu), sondern die Windows Task Bar. Das ist am PC kein Problem, ein Mausclick holt ja den Focus. Das Lordgehäuse wird aber keine Maus haben, sondern nur Tastaturcode für die Tasten erzeugen. Diese werden aber nur abgefragt wenn die Anwendung bereits den Focus hat.

In meinem nachgebauten Menu habe ich das einfach gelöst und bei Programmstart führt die Anwendung einen "Setfocus"-Befehl auf sich selbst aus. Wie kann ich das aber bei Deinen fertigen Programmen hinbekommen ?

Da das hier nun inzwischen etwas Off-Topic wird, kannst Du diesbezüglich vielleicht wirklich mal einen neuen Bereich im Forum einrichten, wo programmiertechnische Dinge besprochen werden können.
Zuletzt geändert von kobayashi am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Merkur Magie Spielescout 2011


Wulff : Trianon, Regent 100, SuperJoker
BallyWulff : Winplay SL, Round Runner, Gloria SL, Wide Wall Red Hot Firepot
Löwen : Big Bang
Adp: Bahia, Taifun Quick, ShowDown, Impuls, Merkur Ergoline TR3 Paket
Auf "Halde" :
NSM : Super70
Bergmann : Grand Bonus
Die Antiken : Astoria Supra, Wulff Duplomat
Projekt: Computereinbau in Rotomat Lord

Benutzeravatar
Esteka
Beiträge: 28305

Re: Zeus Revenge Diskussionsthread

Beitrag von Esteka »

Ich habe seit einiger Zeit in jedem Programm beim Start mehrere SetFocus Befehle drin, aber auch damit funktioniert es leider nicht zuverlässig. Testhalber habe ich SetFocus bei jedem Buchungsvorgang, jede Sekunde, drin gehabt, aber das war nicht gut. Wenn man doch mal nebenbei in ein anderes Programm wechselte, z.B. um Goldserie zu schauen, drängelte sich das Spiel dauernd in den Vordergrund.
Zuletzt geändert von Esteka am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Spieler sind Menschen, die dem Glück eine Chance geben. (Werner Mitsch)

Benutzeravatar
kobayashi
Beiträge: 4897

Re: Zeus Revenge Diskussionsthread

Beitrag von kobayashi »

Esteka hat geschrieben:Ich habe seit einiger Zeit in jedem Programm beim Start mehrere SetFocus Befehle drin, aber auch damit funktioniert es leider nicht zuverlässig.
Hmm, da hätte ich Dich gebeten genau diese beim nächsten Programmupdate einzubauen, aber wenn genau diese Befehle schon drin sind muss es andere Gründe haben.

Mal sehen ob man rauskriegt wodurch der Focusverlust, bzw. die nicht funktionierenden Beschaffung des Focus liegt. Werde mal expierimentiren sobald die neue Menusoftware auf den Lord aufgespielt ist. Zur Zeit läuft alles noch in meiner Entwicklungsumgebung.

Mal sehen ob es mit Delphi möglich ist einem anderen "nicht geerbten" Prozess den Focus zu geben. Das könnte dann das Menüprogramm machen bevor es sich selbst terminiert. Vielleicht führt aber auch die Terminierung des Menü-Programmes zum Focusverlust, weil die SetFocus Anweisung beim Programmstart des Spiels bereits vorbei ist bis die Terminierung komplett ist.

Denkbar wäre auch in die Spiele eine zeitverzögerte SetFocus Routine einzubauen. Hierzu würde sich die Phase des Titelbildes eignen. Hier warten die Spiele doch am Ende des Titelbildes/-sound auf einen Tastendruck. Während dieser Wartezeit könnte man SetFocus-Befehle "spammen". Dann sollte die Focus Übergabe sicher sein. Nach Ablauf der Titelphase erfolgt kein Setfocus mehr, so dass das Spiel nicht mehr den Focus aggressiv an sich reißen würde.

Könnte dann grob so aussehen :

Code: Alles auswählen


:  ZeigeTitel;
:  Repeat 
:     Form1.Setfocus;
:  Until Form1.Keypressed;
:
:  Keyauswertung;
:  If Startkeypressed 
:    then Spielstart; 


Grüße Alex.
Zuletzt geändert von kobayashi am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Merkur Magie Spielescout 2011


Wulff : Trianon, Regent 100, SuperJoker
BallyWulff : Winplay SL, Round Runner, Gloria SL, Wide Wall Red Hot Firepot
Löwen : Big Bang
Adp: Bahia, Taifun Quick, ShowDown, Impuls, Merkur Ergoline TR3 Paket
Auf "Halde" :
NSM : Super70
Bergmann : Grand Bonus
Die Antiken : Astoria Supra, Wulff Duplomat
Projekt: Computereinbau in Rotomat Lord

Benutzeravatar
Esteka
Beiträge: 28305

Re: Zeus Revenge Diskussionsthread

Beitrag von Esteka »

ich schaue zu Hause nach, an welcher Stelle ich SetFocus eingebaut habe

Ich könnte natürlich eine Spezialversion für bestimmte Umgebungen machen, z.B. Dein Lord-Projekt, wo ja nichts anderes läuft, und dort jede Sekunde den Focus auffrischen. Genauso wie ich auch schon Spezialversionen fertig habe mit Geldeinwurferkennung und Hopperansteuerung.
Zuletzt geändert von Esteka am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Spieler sind Menschen, die dem Glück eine Chance geben. (Werner Mitsch)

Benutzeravatar
FrankBln
Beiträge: 1140

Re: Zeus Revenge Diskussionsthread

Beitrag von FrankBln »

Eine Ähnlichkeit zum Amiga Basic ist ja da. Es wird nicht leicht sich nach der langen Zeit (1995) sich wieder einzuarbeiten aber irgendwie juckt es in den Fingern. :-)
Zuletzt geändert von FrankBln am 16.05.2018, 21:15, insgesamt 9-mal geändert.

Benutzeravatar
kobayashi
Beiträge: 4897

Re: Zeus Revenge Diskussionsthread

Beitrag von kobayashi »

Esteka hat geschrieben: Genauso wie ich auch schon Spezialversionen fertig habe mit Geldeinwurferkennung und Hopperansteuerung.
Das wird dann irgentwann mal der nächte Schritt. Vielleicht kannst Du mir vorab schon mal mitteilen was da abgefragt wird. Tastaturcode oder spezielle Hardware (i/o Platine) ?

Für mich bin ich von der (Selbstbau-) I/O Platine erstmal wieder abgekommen, weil es Zugriffsprobleme unter Windows 7 gab. Ein direkter I/O Port Zugriff findet das Betriebssystem nicht so gut.

Im Moment habe ich eine Tastaur geschlachtet und baue ein Interface wo mir die Schalter/Tasten am GSG unterschiedliche Tastencode liefern werden. Das ist nicht so begrenzt wie eine I/O Karte und deutlich billiger zu realisieren.
Zuletzt geändert von kobayashi am 16.05.2018, 21:15, insgesamt 9-mal geändert.
Merkur Magie Spielescout 2011


Wulff : Trianon, Regent 100, SuperJoker
BallyWulff : Winplay SL, Round Runner, Gloria SL, Wide Wall Red Hot Firepot
Löwen : Big Bang
Adp: Bahia, Taifun Quick, ShowDown, Impuls, Merkur Ergoline TR3 Paket
Auf "Halde" :
NSM : Super70
Bergmann : Grand Bonus
Die Antiken : Astoria Supra, Wulff Duplomat
Projekt: Computereinbau in Rotomat Lord

Benutzeravatar
FrankBln
Beiträge: 1140

Re: Zeus Revenge Diskussionsthread

Beitrag von FrankBln »

kobayashi hat geschrieben: Im Moment habe ich eine Tastaur geschlachtet und baue ein Interface wo mir die Schalter/Tasten am GSG unterschiedliche Tastencode liefern werden. Das ist nicht so begrenzt wie eine I/O Karte und deutlich billiger zu realisieren.
Das ist die günstigste und einfachste Variante.
Zuletzt geändert von FrankBln am 16.05.2018, 21:15, insgesamt 9-mal geändert.

Antworten

Zurück zu „Game Star“