Menu

Show posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Show posts Menu

Topics - Steinbock

#1
Hi all

After few projects I did with Unity it's time to do something for RETRO-memories.
And what's better to program this as GlBasic? Well, I found nothing.
I started a new game project. It's still very early state but if you like you can watch the actual state on my site mountainsoft.ch.



Edit 01.05.2018: @post #11 short demo for download
#2
Hallo

Ich würd gerne einen neuen Blog starten.
Aber unter der Rubrik Member-Blog erscheint der Schalter 'New Topic' erst, wenn man in einem bereits bestehenden Blog ist.
Kann mir da bitte einer weiterhelfen?

Danke!
#3
Hallo zusammen

Gibt es in GLBasic die Möglichkeit direkt in den Bitmapbuffer eines Sprites zu schreiben auser mit SETPIXEL?
#4
Hi, all

With this tutorial i would like to share my experiences with programming in GLBasic.
It's a framework for a horizontal shooter game and contains routines like intro, startmenu, 2-layer scrolling, collision or sound.

My english is not very well. But nevertheless i hope you will understand it.
If you have any questions or suggestions then please do not post them in this thread but here:http://www.glbasic.com/forum/index.php?topic=2949.0 Thanks.

I will split this tutorial into different parts. So you will have time to learn step by step.
A short example of how it looks at the end is avalable for download here:
Windows version:http://www.zshare.net/download/5735249659b47d37/
GP2X version:http://www.zshare.net/download/57352743c3fbf5c9/

EDIT 27.07.2009: added a simple tilemap editor with sourcecode in attachement

Code (glbasic) Select

control->GP2X:
  startmenu:  pad up/down       = menucursor up and down
              B-button          = select menuentry
  game:       pad               = move
              B-button          = shoot
              START-button      = return to startmenu
control->WIN:
  startmenu:  cursorkey up/down = menucursor up and down
              "x"-key           = select menuentry
  game:       cursorkey up/down = move
              "x"-key           = shoot
              ENTER-key         = return to startmenu


In the first part we start with the program body:

Code (glbasic) Select

//=============================================================================
//  T Y P E S
//=============================================================================


//=============================================================================
//  C O N S T A N T S
//=============================================================================

// application states
GLOBAL  AS_INTRO%       =   1
GLOBAL  AS_MENU%        =   2
GLOBAL  AS_LEVEL00%     =   10
GLOBAL  AS_EXIT%        =   255
// button map
GLOBAL  BUTTON_RIGHT%   =   205
GLOBAL  BUTTON_LEFT%    =   203
GLOBAL  BUTTON_DOWN%    =   208
GLOBAL  BUTTON_UP%      =   200
GLOBAL  BUTTON_A%       =   44
GLOBAL  BUTTON_B%       =   45
GLOBAL  BUTTON_R%       =   54
GLOBAL  BUTTON_START%   =   28
GLOBAL  BUTTON_VOLI%    =   201
GLOBAL  BUTTON_VOLD%    =   209


//=============================================================================
//  V A R I A B L E S
//=============================================================================

// application
GLOBAL  AppState%       =   AS_INTRO

LOCAL   done            =   FALSE


//-----------------------------------------------------------------------------
//  I N I T
//-----------------------------------------------------------------------------
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN

//-----------------------------------------------------------------------------
//  M A I N L O O P
//-----------------------------------------------------------------------------
    WHILE done=FALSE
        SELECT AppState
            CASE AS_INTRO   ; AppState=RunIntro()
            CASE AS_MENU    ; AppState=RunMenu()
            CASE AS_LEVEL00 ; AppState=RunLevel00()
            CASE AS_EXIT    ; done=TRUE
            DEFAULT         ; done=TRUE
        ENDSELECT
    WEND
//-----------------------------------------------------------------------------
//  D E I N I T
//-----------------------------------------------------------------------------
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN



First we reserve place for type definitions which we will add later.
Thereafter follows the constants which we will write always BIG in our program. With AS_INTRO etc. we describe the current state of the program (AS = Application State). Then follows some constants for assignment of keys.
Now we define the variables, whereby we write GLOBALS with a big and LOCALS with a small initial letter. We initialise the global variable AppState with AS_INTRO because we start our program with a little intro.
Then we clear the framebuffer.

Now the mainloop of the program:

If inside the loop
Code (glbasic) Select

WHILE done=FALSE
  ...
WEND

the value of variable done is set to TRUE, we clear the framebuffer again and the program ends.

Code (glbasic) Select

        SELECT AppState
            CASE AS_INTRO   ; AppState=RunIntro()
            CASE AS_MENU    ; AppState=RunMenu()
            CASE AS_LEVEL00 ; AppState=RunLevel00()
            CASE AS_EXIT    ; done=TRUE
            DEFAULT         ; done=TRUE
        ENDSELECT

Here we check the program module to be performed. As we have setted the value of AppState to AS_INTRO it calls the module RunIntro().
The different modules are FUNCTIONS which will return a value. This value will be stored again in variable AppState. On next pass of loop, it will be checked again.

So. That's for first. In the second part we will deal with the intro.





[attachment deleted by admin]
#5
Here you can post your questions and suggestions according to the Horizontal Shooter Tutorial
#6
Hier k?nnt Ihr eure Fragen, Meinungen oder Anregungen zum Horizontal Shooter Tutorial http://www.glbasic.com/forum/index.php?topic=2937.0 posten.
#7
Hallo miteinander

Ich m?chte mit einem kleinen Tutorial meine Programmiererfahrungen mit GLBasic weitergeben.
Es handelt sich um ein Grundger?st f?r einen Horizontal-Shooter das Routinen wie Intro, Men?, 2-Layerscrolling, Kollision oder Sound beinhaltet.

Falls ihr Fragen oder Anregungen habt dan postet die bitte nicht in diesem Thread sondern da: http://www.glbasic.com/forum/index.php?topic=2948.0. Danke.

EDIT 27.07.2009: Habe nun einen einfachen Tilemap-Editor inkl. Quellcode im Anhang hinzugef?gt.

Damit man auch was lernen kann werde ich das Tutorial aufteilen.
Wie das Ergebnis des Tutorials etwa aussieht k?nnt Ihr hier runterladen.
Windows Version:http://www.zshare.net/download/5735249659b47d37/
GP2X Version:http://www.zshare.net/download/57352743c3fbf5c9/
Steuerung->GP2X: Schuss=B
Steuerung->Win:   Schuss=X

Im ersten Teil beginnen wir mit dem Programmrumpf:

Code (glbasic) Select

//=============================================================================
//  T Y P E S
//=============================================================================


//=============================================================================
//  C O N S T A N T S
//=============================================================================

// application states
GLOBAL  AS_INTRO%       =   1
GLOBAL  AS_MENU%        =   2
GLOBAL  AS_LEVEL00%     =   10
GLOBAL  AS_EXIT%        =   255
// button map
GLOBAL  BUTTON_RIGHT%   =   205
GLOBAL  BUTTON_LEFT%    =   203
GLOBAL  BUTTON_DOWN%    =   208
GLOBAL  BUTTON_UP%      =   200
GLOBAL  BUTTON_A%       =   44
GLOBAL  BUTTON_B%       =   45
GLOBAL  BUTTON_R%       =   54
GLOBAL  BUTTON_START%   =   28
GLOBAL  BUTTON_VOLI%    =   201
GLOBAL  BUTTON_VOLD%    =   209


//=============================================================================
//  V A R I A B L E S
//=============================================================================

// application
GLOBAL  AppState%       =   AS_INTRO

LOCAL   done            =   FALSE


//-----------------------------------------------------------------------------
//  I N I T
//-----------------------------------------------------------------------------
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN

//-----------------------------------------------------------------------------
//  M A I N L O O P
//-----------------------------------------------------------------------------
    WHILE done=FALSE
        SELECT AppState
            CASE AS_INTRO   ; AppState=RunIntro()
            CASE AS_MENU    ; AppState=RunMenu()
            CASE AS_LEVEL00 ; AppState=RunLevel00()
            CASE AS_EXIT    ; done=TRUE
            DEFAULT         ; done=TRUE
        ENDSELECT
    WEND
//-----------------------------------------------------------------------------
//  D E I N I T
//-----------------------------------------------------------------------------
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN
    DRAWRECT 0,0,320,240,0
    SHOWSCREEN



Als erstes machen wir Platz f?r Type-Definitionen welche wir sp?ter hier einsetzen werden.
Anschliessend kommen die Konstanten welche wir im Programm immer GROSS schreiben werden. Mit AS_INTRO etc. beschreiben wir den jeweiligen Status des Programms (AS = application state). Danach folgen die Konstanten f?r die Tastenbelegung welche wir sp?ter noch ben?tigen werden.
Jetzt folgen die Variablen, wobei wir globale mit grossem und lokale mit kleinem Anfangsbuchstaben schreiben. Die globale Variable AppState initialisieren wir mit AS_INTRO da wir unser Programm mit dem INTRO starten wollen.
Dann l?schen wir den Framebuffer.

Nun kommt die Hauptschleife des Programms:
Wenn innerhalb der Schleife
Code (glbasic) Select

WHILE done=FALSE
  ...
WEND

der Wert der Variable done auf TRUE gesetzt wird, l?schen wir wieder den Framebuffer und das Proramm endet.

Code (glbasic) Select

        SELECT AppState
            CASE AS_INTRO   ; AppState=RunIntro()
            CASE AS_MENU    ; AppState=RunMenu()
            CASE AS_LEVEL00 ; AppState=RunLevel00()
            CASE AS_EXIT    ; done=TRUE
            DEFAULT         ; done=TRUE
        ENDSELECT

Hier ?berpr?fen wir das auszuf?hrende Programmmodul. Da wir den Wert von AppStateauf AS_INTRO gesetzt haben wird nat?rlich das Modul RunIntro() aufgerufen. Die verschiedenen Module sind Funktionen welche wiederum einen Wert zur?ckgeben, der dann sofort wieder in der Variable AppState gespeichert wird. Beim n?chsten Schleifendurchlauf wird diese erneut abgefragt.

So. Das w?rs mal f?r's erste. Im zweiten Teil werden wir uns mit dem Intro besch?ftigen.





[attachment deleted by admin]