Ausgabe Nr. 7
(8-2000)
Willkommen in der neuen Ausgabe der QBasic-Times.
Es had leider einige Zeit gedauert, aber
nun ist sie da und das auch noch in eienem neuen Design.
Dieses mal gibt es Projekt-News, das beste
Programm und beste Spiel wird vorgestellt.
Außerdem gibt Tutorials über
Delays, Keyboard, RPG und Bits und Byte.
Viel Spaß beim Lesen!
Project News:
- Cyber Chick
WisdomDude hat ein tolles Spiel in der
Entwicklung, CyberChick.
CC ist ein Metroid-Clone, mit guter Grafik.
Das Spiel ist noch
sehr schwer, WisdomDude sollte das Spiel
noch etwas entschärfen.
Hersteller: WisdomDude
Homepage : http://petesqbsite.hypermart.net/
Release : Unbekannt
- SOP 2 Engine
Master Creating wird leider keinen 2.
Teil von SOP machen, doch
immerhin hat Merlin die (mögliche)
Engine von SOP2 releast. Die
Engine ist ein Mix aus mehreren Librarys
und läuft sehr schnell.
Für angehende RPG-Programmierer vielleicht
ein guter Grundstein.
Hersteller: Master-Creating
Homepage : http://www.master-creating.de/
Release : ---
- GABasic
Gabriel Fernandez stellt einen neuen Compiler
vor: GABasic.
Es ist ein Compiler der im "Protected
Mode" arbeitet. Man hat
Zugriff auf EMS, XMS und RAM, ist sehr
schnell und hat
High-Res/High-Col-Support.
Hersteller: Gabriel Fernandez
Homepage : http://www.master-creating.de/gab/
Release : Unbekannt
- Elite Forces
Stefan Hendriks, der Hersteller von Arrakis,
hat ein neues Spiel
angekündigt. Es soll ein Counter-Strike-ähnliches
Spiel mit der
Grafik von "C&C 2: Alarmstufe Rot"
werden.
Hersteller: Stefan Hendriks
Homepage : http://www.qb45.com/
Release : Unbekannt
- Damnation
Von den deutschen 3iD Studios wird bald
ein RPG-Projekt kommen.
Die Engine sieht schon sehr vielversprechend
aus, jetzt muss man
schauen was sie aus dem technischen Grundgerüst
machen.
Hersteller: 3iD Studios
Homepage : http://www.3idstudios.de/
Release : Unbekannt
- Wipeout-Clone
Dieter Malfurt, bekannt durch die eindrucksvollen
Engines Kaboom und
Qmanche, will einen Wipeout-Clone machen.
Das Spiel wird die Qmanche-
Engine benutzen, doch das Spiel wird schneller
sein als Qmanche.
Hersteller: Dieter Malfurt
Homepage : http://www.angelfire.com/id2/qworlds/
Release : Unbekannt
- Zeta
Aethersoft hat einem ausgewählten
Kreis von QB-Programmierern schon
die 2. BETA von Zeta gezeigt. Die Leute,
die die BETA sahen waren
alle begeistert. Ich habe leider nur ein
paar Screenshots gesehen, doch
diese waren wirklich eindrucksvoll.
Hersteller: Aethersoft
Homepage : http://www.crosswinds.net/~aethersoft/
Release : Unbekannt
Game of the Month:
- Promzone
Promzone (PZ) zeigt mal wieder was man
aus QBasic alles herausholen
kann (mit der Hilfe von Librarys, in diesem
Fall DQB). PZ hat gute
Grafiken und schöne Animationen.
Auch die Steuerung geht leicht von
der Hand und ist schnell begriffen. Einer
der Schwachpunkte des Spieles
ist der nicht vorhandene Sound und Musik.
Hiermit hätte man nochmals
mehr Atmosphäre in das Spiel zaubern
können. Auch der etwas hoch
geratene Schwierigkeitsgrad könnte
für einige Spieler ein Hindernis
sein. Eins noch am Rande: Obwohl der Programmierer
offensichtlich
DirectQB benutzt (DirectQB.BI im Verzeichnis,
Standart-DQB-Error-
Messages) wurde kein Credit gegeben. Eigentlich
gewöhnlich in der
Qmmuntity. Doch trotz dieser wenigen Schwachpunkte
ist das Spiel sehr
gut.
Hersteller: SV Reanimator
Homepage : Nicht vorhanden
Download : http://www.qb45.com/files/download.cgi?download=35&page=platform
Tool of the Month:
- Multilib
Multilib ist ein nützliches Programm
mit dem man mehrere Librarys
zu einer machen kann. Dieses Tool macht
diesen normalerweise etwas
komplexen Akt ganz leicht. Man kann mit
Multilib unendlich viele
Librarys zusammenlinken, was nützlich
sein kann, wenn man z.B. die
Future.Library und eine MIDI-Routine benutzen
will. Das Programm
hat eine einfache (Maus)Steuerung, die
man sehr schnell versteht.
Mit Bugs hatte ich auch keine Probleme.
Hersteller: Kevin Coots
Homepage : http://www.rainbowtel.net/~pitman/
Download : http://www.rainbowtel.net/~pitman/multi300.zip
Sinnvolle Delays
von Fabian Schwahn
Viele, in QB geschriebene Spiele, haben
kein DELAY und laufen
auf neueren Rechnern viel zu schnell.
Das liegt entweder daran
das der Programmierer kein DELAY eingebaut
hat oder es so macht:
FOR DELAY=1 TO 10000: NEXT DELAY
Diese Methode ist aber sehr ungeeignet
da sie auf jedem PC
unterschiedlich läuft da es von der
Rechner-Geschwindigkeit abhängt,
wie lange die Verzögerung dauert.
Hier kommt nun eine Methode die auf allen
PCs gleich-schnell läuft:
Fügt diesen Code in eure Main-Schleife
ein:
...
DO
' Start der Main-Schleife
delay# = TIMER
...
FOR DELAY=1 TO 10000: NEXT DELAY
LOCATE 1, 1: PRINT TIMER-delay#
LOOP
Verändert den Befehl "FOR DELAY =
1 TO XXXXX: NEXT DELAY" so lange
bis ihr eine geeignete Geschwindigkeit
für euer Spiel habt.
Jetzt merkt ihr euch die Zahl die ausgegeben
wurde. Wir nehmen
in diesem Beispiel 0.56 . Später
muss dort eure Zahl eingefügt werden.
...
DO
delay# = TIMER
...
DO: LOOP UNTIL (TIMER - delay#)
=> .56
LOOP
Was macht das Programm jetzt?
Nun, nehmen wir 3 Beispiele:
Tim spielt dein Spiel auf einem Pentium
500. Das Spiel braucht
0.11 Sekunden um das Spiel zu berechnen.
Also wartet das Programm
noch 0.45 Sekunden und macht weiter.
Jim spielt dein Spiel auf seinem alten
486er.
Das Spiel braucht 0.49 Sekunden um dir
Berechnungen und alles andere durchzuführen.
Jetzt wartet das Programm noch 0.07 Sekunden
und arbeitet weiter.
Kim hat jetzt auch Lust dein Spiel zu
spielen und probiert es auf seinem alten 286er.
Nun, das Programm braucht 0.77 Sekunden
um durch das Spiel darzustellen und so weiter.
Das Programm merkt das es schon länger
als 0.56 Sekuden gedauert hat das Spiel zu berechnen und macht ohne Pause
weiter.
So, das war mein kleines Mini-Tutorial
über Delays. Wer noch Fragen
oder Anmerkungen hat der soll diese an
mich mailen.
Fabian
Schwahn
Keyboard-Handler
von Fabian Schwahn
Viele Spiele in QBasic scheitern an der
Steuerung. Da INPUT langsam
ist und mit piepen anfängt wenn man
längere Zeit auf einer Taste
bleibt ist es sehr ungeeignet für
schnelle Action/Arcade Spiele.
Nun, hier habe ich eine Routine die das
piepen verhindert und
mehrere Tasten gleichzeitig erkennt. Diese
Routine ist zwar nicht ganz
perfekt, doch für Leute die ohne
ASM auskommen wollen ist geeignet, da
es viel besser als INPUT ist. Hier der
Code:
...
DO
DO: LOOP UNTIL INKEY$ = ""
' Um das BEEPEN zu verhindern
Taste% = INP(96)
...
LOOP UNTIL Taste% = 1
' ESC
Die Codes für die Tasten kann man
der QBasic-Hilfe entnehmen.
Wer noch Fragen oder Anmerkungen hat der
soll diese an mich mailen.
Fabian
Schwahn
RPG-Tutorial
by Fabian Schwahn (based
on the Tut of DarkDread)
Hallo zum meinem RPG-Tutorial. Ich plane
im Moment 3 Teile, doch wenn
ich genug Feedback bekomme können
es auch noch mehr werden. Nun, hier
ist der erste Teil:
Viele von euch werden diesen Teil hassen,
doch es muss halt auch sein:
Bevor wir anfangen zu coden, machen wir
erstmal einen Plan. Die Story,
die Charaktere, ...
1.1 Die Story
Der wichtigste Teil eines RPGs ist die
Story. Denn eine tolle Technik
beeindruckt zwar am Anfang, aber wenn
die Story schlecht ist, dann
spielt man das Spiel nicht sehr lange.
Die Story muss einen von Angang
an in ihren Bann ziehen. Hier ein paar
Anhaltspunkte:
- Die Story muss originell sein. Keiner
will ein Spiel spielen dessen
Story er schon 1000 gehört
hat.
- Die Story muss den Spieler in den Bann
ziehen, nicht mehr loslassen.
So kann der Spieler nicht aufhören,
bevor er das Ende der Story
erfährt.
- Man sollte die Richtlinien verfolgen,
denen auch gute Bücher
unterliegen. Die Charaktere müssen
für ihre Handlungen einen
Hintergrund haben, sie müssen
einen Grund haben etwas zu tun.
Alles in der Story sollte genauestens
geplant sein.
1.2 Die Charaktere
So, als zweites muss man die Charaktere
planen. Jeden einzelnen.
Welche Vergangenheit haben sie? Welche
Eigenschaften? Aber der
Charakter darf sich während der Story
auf keinen Fall verändern.
Und wenn er sich verändert braucht
er dafür eine wirklich guten Grund.
In einem Dialog zwischen einem guten und
bösen Charakter muss man
allein an der Sprache erkennen wer der
gute und wer der böse ist.
Wenn ihr damit fertig seid könnt
ihr damit anfangen die Dialoge
zwischen den Charakteren zu planen.
1.3 Das Gameplay
So, die Story ist jetzt komplett geplant.
Jetzt entscheidet ihr über
das Gameplay in dem Spiel. Welche Engine?
Tile-Engine, 3D-Engine, oder
etwas ganz anderes? Wenn ihr euch entscheidet
dann bezieht auch eure
Programmier-Fähigkeiten mit ein.
Wenn ihr noch nie was von 3D gehört
habt, dann ist diese Perspektive auch
nicht geeignet.
Und wie laufen die Kämpfe ab? In
Echtzeit, Rundenbasiert, oder eben
doch ein revolutionäres, neues?
Und wieviel Charaktere steuert ihr? Einen
das ganze Spiel über, eine
ganze Party, oder abwechselnd verschiedene
Charaktere?
1.4 Bis zum nächsten mal
Jetzt haben wir euer RPG völlig durchgeplant.
Jetzt wird es Zeit für
ein bischen Praxis. Im nächsten Teil
beginnen wir mit der
Programmierung einer Tile-Engine.
Fabian
Schwahn
Bits und Byte
Alles über digitale Zahlen.
by Soeren Dressler
Wie ist der Computer in der Lage Zahlen
zu benutzten? Er besteht doch nur aus Chips, Schaltkreisen und einer menge
Kabelsalat.
Das Stichwort ist Binärsystem oder
auch Dualsystem genannt.
Bei diesem System gibt es nur zwei Ziffern:
die 0 und die 1.
Und diese zwei Ziffern können mit
einem Stromkabel dar gestellt werden.
Bei 1 fließt ein Strom und bei 0
fließt er nicht.
Diese 0 und 1 sind unsere Bits. Wie bekannt,
besteht ein Byte aus 8 Bits. Es ist also eine achtstellige Dualzahl.
Ein Byte könnte so aussehen: 10001011
Aber wie funktioniert das nun?
00000000 ist 0
00000001 ist 1
00000010 ist 2
00000011 ist 3
00000100 ist 4
00000101 ist 5
00000110 ist 6
00000111 ist 7
00001000 ist 8
......
00010000 ist 16
......
00100000 ist 32
......
01000000 ist 64
......
10000000 ist 128
11111111 ist 255
So lassen sich nun 256 verschiedene Zahlen
mit Hilfe von 8 Kabeln darstellen.
Welchen Wert die 1 oder 0 hat, hängt
von ihrer Position ab.
Ganz Rechts ist die 1. Dann kommt die
2. Danach kommt die 4, dann 8, danach 16 usw.
Je nach dem ob das Bit eine 1 oder 0 ist
addiert man die Werte zusammen und erhält die eigentliche Zahl.
Bsp.:
10011010
Das zweite, das vierte, das fünfte
und achte Bit sind 1. Das heißt wir addieren 2 + 8 + 16 + 128.
Das sind 154.
Anders kann man auch rechnen.
2^2 + 2^4 +2^5 +2^8 = 154.
Noch ein anderes Beispiel.
01101101
Wir addieren 1 + 4 + 8 + 32 + 64 = 109
Oder 2^1 +2^3 +2^4 +2^6 +2^7 = 109
Wenn das erste Bit, also des Rechte, eine
1 ist kann man sicher sagen, dass die Zahl eine ungerade zahl ist.
Und wenn es eine 0 ist, ist es immer eine
gerade Zahl.
Nun kann der Computer auch mit größeren
Zahlen arbeiten.
In dem Fall benutzt er 16Bit Zahlen. Das
sind entweder Integer Zahlen oder Word Zahlen.
Der unterschied ist das Vorzeichen. Bei
Word gibt es nur positive Zahlen von 0 bis 65535.
Bei Inzteger gibt geht es von 32000 bis
+32000.
Es gibt aber auch noch 32Bit Zahlen. Das
sind DubbleWord und LongInteger.
Um nun eine negative Zahl darzustellen
wird einfach das letzte Bit also das linke auf 1 gesetzt.
Was ist dann also
1111111111111111 ist 1
1111111111111110 ist 2
1111111111111101 ist 3
1111111111111100 ist 4
1111111111111011 ist 5
1111111111111010 ist 6
1111111111111001 ist 7
1111111111111000 ist 8
1111111111110111 ist 9
1111111111110110 ist 10
1111111111110101 ist 11
1111111111110100 ist 12
usw.
Ich hoffe das war soweit verständlich.
Soeren
Dressler
So, das wars für diese Ausgabe. Ich
hoffe das die QBasic-Times in Zukunft genauso gut ankommt wie bisher.
Also, wenn ihr etwas habt, was unbedingt
mit in die nächste Ausgabe soll (Werbung für eurer Spiel oder
Tool oder ein Tuturial ...),
dann schick es mir einfach.
Bis zum nächsten Mal!
|