Workshop Game plan
We gaan een game maken, waarbij wij (de programmeurs) de meeste lol zullen hebben en daarbij zelf ook de meeste waardering van ons werk aan onszelf zullen geven. We gaan zoveel mogelijk handigheden programmeren. De game die ik samen met u wil maken kan en moet misschien nog verder ontwikkeld worden. Draag daarom gerust ideeën aan. We zijn in september gestart met het introductiescherm (Workshop sessie 1) waarin we gewag deden van de door ons te demonstreren programmeurs mogelijkheden en onze skills daarin. Ons introscherm zal als het goed is wat muziek en geluid op de achtergrond hebben en effecten van inzoomen en vervagingen van vensters bezitten. En uiteraard ook animatie. In de komende sessies gaan we eerst een "strategische" game voor oudgedienden op beginners niveau maken. U bent ontwerper en maker van deze game en u bent ook het eerste grote publiek.</>
Naast het introductie scherm (dat is het startvenster waarmee u reeds kennis hebt gemaakt) bevat de game zes actie schermen.

  • CONTROL ROOM
  • WARP-CENTER
  • PLANNING-ALLOCATION
  • SHORT-RANGE Database
  • DOCKING area
  • DEFENCE ROOM


Het start-hoofdscherm is de COMMAND BRIDGE (CONTROLE KAMER).
Vanuit dit scherm kunt u naar 5 verschillende spellocaties (Actieschermen). Telkens als u een actie-scherm verlaat keert u automatisch terug in deze CONTROLE-KAMER. De computer kan u helpen bij het navigeren naar het WARP-CENTER en de PLANNING en ALLOCATION. (schakelpanelen 2 en 4) VoorJanHCC1
De groene banen (zijn de energielijnen die lopen de vanaf 5 schakelpanelen naar 3 super computers) die de hoeveelheid energie aangeven, die elke computerunit momenteel gebruikt. Het is op dit punt in de game mogelijk om over te stappen op handmatige bediening door het (Auto-Pilot OFF) schakelen van de schakelpanelen (computers) waardoor minder kostbare energie nodig is, maar waardoor de speler minder adviezen en hulp geeft.

Natuurlijk kan de speler ook kiezen voor een mix (gedeeltelijke Auto-Pilot) tot volledige Auto-Pilot. Zonder energie is het spel verloren. De computer zal adviseren om elke 4de beurt energie op te halen vanaf cargo ruimteschepen nabij sterrenstelsels waar veel vriendschappelijke planeten liggen. Natuurlijk wordt je door de vijand geschaduwd. Als je "SCHIELDS" niet meer voldoende bescherming bieden, wordt je aangevallen. Als je zelf aanvalt moet je je "SCHIELDS" volledige power aan zetten.

Het is niet eenvoudig (tijdrovend) om SPRITES (animatie), vervaging en teksten op plaatjes te programmeren. Wat zeg ik? Natuurlijk is het eenvoudig als je LibertyBASIC gebruikt en veel kennis hebt van Windows. Maar ik kies voor een groot (en wat ouder) publiek. Het gaat om het plezier van een eigen programma te schrijven en dankbaar publiek om je kunnen te demonstreren. Programmeren is tijdrovend maar vooral verslavend. Ik zal hier proberen hulp (tijd) van je te vragen en daarvoor in de plaats wat kennis en achtergrond van een computertaal te geven. Van LibertyBASIC v4.5.1 en zo u wilt JustBASIC v2.0.
In deze game kun je hier op een willekeurige plek klikken van het CONTROL ROOM hoofdscherm klikken, waarna er een popup-menu verschijnt voor het instellen van de Auto-Pilot. Trouwens de schakelaars staan boven in het venster. De gebruikers van JustBASIC kunnen in plaats van een popup-menu, een CONFIRM-scherm of een NOTICE-scherm dat zeg ik omdat ik niet weet of popup-menu's bij JustBASIC v2.0 geïmplementeerd zijn). Ook kan JustBASIC de lichtuitstraling uit het hoofdscherm niet wijzigen (doen vervagen), omdat daarvoor een tekening-laag van het scherm zal moet vervagen en dat gaat zelfs in Liberty BASIC alleen met een Windows API. JustBASIC kan zoals ik eerder vertelde die API (functie uit een DLL bestand) niet aanroepen. De berichten (mededelingen van de computer) komen telkens 3 seconden op het grote zwarte scherm te staan.

Het volgende hoofdscherm geeft een indruk van het WARP CENTER hoofdscherm.
Het heelal is groot. Je kunt er WARP(pen). Vanuit het hoofdscherm (COMMAND Bridge) kun je naar de overige hoofdschermen WARP center, Planning-Allocatie en het Defensie scherm gaan. Vanaf WARP kun je naar Short-Range en vanaf het Planning-Room scherm ga je naar het Docking center. VoorJanHCC2
WARP naar een mogelijk gunstige plek. De groene cijfers linksonder geven segment nummers aan in een onbekend heelal. Zet daarna je Short Range sensoren in. Blijf uit de buurt van zwarte gaten. WARP(pen) kost extra energie maar de computer laat in een lijst zien welke sterrenstelsels kansrijk zijn. De lijst bestaat uit duizenden sterrenstelsel-namen. Dit is echt een uitdaging om te programmeren. Want we gaan een database leren te manipuleren.

Zo ziet het SHORT-RANGE actie scherm er bijvoorbeeld uit.
Vier sterrenstelsels uit segment (202,266,423) en drie zwarte gaten, zijn geselecteerd. Dit scherm is belangrijk in de game, omdat hier enkele RND() getallen beinvloed worden. Random (willekeurige) getallen zullen in de game overal wat beinvloed worden. Dit SHORT-RANGE scherm is gekoppeld aan de WARP supercomputer. Volg de energielijnen uit de COMMAND BRIDGE maar. VoorJanHCC3
Linksboven in de SHORT RANGE AREA, zie je een uitvergroting van de drie groene een witte sterrenstelsels en drie zwarte gaten. Voordat je in een gekozen stelsel segment energie, ammunitie en dergelijke wilt ophalen en of andere spullen wilt afleveren, moet je naar de PLANNING en ALLOCATIE room om de koppeling met de ruimtevracht schepen voor te bereiden.

Hieronder zie je een voorbeeld van het PLANNING en ALLOCATION actie scherm.
Het middelpunt van de kleuren vijfster kan met de muis ver plaatst worden. De oppervlakten van de kleuren vlakken geven de opslagruimte verhouding van de te transporteren (afstaan) hoeveelheden aan. VoorJanHCC4
Ik merk dat de woordjes FOOD en REPAIR van plaats verwisseld zijn. De eenheid van energie is uitgedrukt in Terra SCRUMPX. De teksten Food, Repair, Arms, Shield, en Fuel moeten nog gunstiger komen te staan (tegen de buitenkant lijnen van de vijf-sterhoek). De teksten kan je onder een hoek schrijven, maar de individuele letters moeten ook onder die hoek staan. Dat laatste moet met een API van Windows. We zullen dus teksten op het scherm manipuleren. Teksten scheef schrijven, onderste boven enz. schrijven. In vele gevallen zal blijken dat de knappe Microsoft programmeurs het veel eenvoudiger hebben kunnen maken. Met wat Goniometrisch kennis zullen we vele API uit Windows na kunnen apen. We zullen bij het programmeren van deze module veel gebruik maken van de FLOODFILL functie van Windows. Natuurlijk kan JustBASIC dat niet. Maar we gaan dat anders oplossen. Trouwens LibertyBASIC heeft ook geen "native" (ingebouwde) FLOODFILL functie.

Een moment opname uit DOCKING AREA
Hier zie je er een voorbeeld van hoe we eerst aan moeten meren [lock on], voordat we na [fine tunning] echte kunnen transporteren (materiaal overzetten van of naar een transport ruimtevaart schip).Let op!! DOCKING Area kun je alleen bereiken door eerst naar PLANNING te gaan. VoorJanHCC5
Hierboven staat het Docking scherm. We gaan proberen het kruis op het groene sterrenstelsel precies op ons vizier kruis te laten vallen. De groene cirkel loopt met een vaste snelheid in een vaste richting. Schat in waar je de cirkel het beste kunt ontmoeten. Meestal moet jij de andere kant uit om hem te treffen. Boven in het scherm staat een soort 360 graden boog. Jouw ruimteschip gaat even hard als de cirkel(s) waarin de transport shuttle ruimtevaartuigen liggen.

Gewoon achter de DEFENCE computer gaan zitten? Zo ziet die eruit. Wat cargo ruimtevaartuigen. Niets in het vizier (midden scherm). PHOTON GUN midden onder aan het scherm. Jouw ruimtevaartuig staat ongeveer 15° ZENITH en 145° AZIMUTH
VoorJanHCC6
Dit scherm heeft een mix aan sprites en grafische tekeningen. Alleen de pijltjes toetsen gebruiken voor de besturing.

Met uitzondering van het laatste scherm, zijn de listings van de getoonde schermen elk nog geen hele A-4tje lang. Het spel is nog niet af. We schrijven het spel samen. Ik lever alle plaatjes (desgevraagd), maar met uitzondering van het hoofdscherm zijn alle schermen in BASIC geprogrammeerd. Op de Workshop behandel ik deze game aan de hand van de LibertyBASIC Debugger. Daarbij gebruik ik de "lesson" (LSN - functie) van LibertyBASIC om listings toe te lichten. Mijn eigen beginners "handboek" is inclusief 12 bijbehorende lessen.

Recent gepasseerde galaxy's [Docking status] Details Details
GALEX-Worm UGC 09128 [Locked on 2 times] FUEL cargo shuttle [34%] No extra details
UGCA 438 (ESO 407-018) [--] ENERGIE cargo shuttle [94%] No extra details
Kronos-SwirL UCW Tscale [--] FUEL cargo shuttle [23%] No extra details
ICIGARigar 3104 IB(s)m [--] Empty cargo shuttle [98%] No extra details
  [--] No extra details No extra details
  [--] No extra details No extra details



Voor het bouwen van de game starten we direct met Windows vensters. De lessen uit het handboek starten fundamenteler, dus al snel met Variabelen e.d. Om wat te oefenen maken we extra opgaven zoals een Morsetekens programma. Omdat morse tekens uit punten en strepen bestaan en karakter tekens in de computer omgezet en opgeslagen worden in nullen en enen, geeft dat de mogelijkheid om een morse teken programma te maken dat de digitale vorm van computer tekens omzet in puntjes en strepen. Daarmee krijgen we een idee van hoe hele getallen opgeslagen worden. Verder zullen we een kassa programma maken dat wisselgeld in de juiste biljetten en munten aangeeft, daarmee bekijken de opslag van variabelen weer en vooral de MOD-functie. MOD is een getal dat de rest na een deling geeft. Functies behandelen we vooral aan de hand van een extra programma om Romeinse cijfers en getallen om te zetten. Voor tegenstaanders van "schiet spelletjes" zullen (kunnen) we ook een Bingo programma schrijven.

Spelstrategie: Probeer in maximaal 20 beurten, 30 vijandige ruimteschepen te verslaan. Je wordt geholpen en hoeft alleen maar een strategische logistiek te volgen. Lever op strategische plekken Energie, Wapens en Grondstoffen (voedsel) af of haal Energie enz. op. Let op dat je zelf nooit zonder (of te weinig) Energie of Voedsel hebt. Je kunt ook zelf aanvallen, maar dat vergt behendigheid en veel geluk. De vijand vecht niet graag, maar vlucht en geeft een natrap. Het opsporen van de vijand kost ook veel energie en geluk. Zwarte gaten en negatieve energie stormen bepalen gedeeltelijk ook je lot. Je kunt je supercomputers inschakelen, hetgeen extra Energie vergt. Maar de computers houden wel de conditie van jouw ruimteschip in de gaten en geven veel informatie over de vijanden en vrienden.

Mocht je de uitdaging niet aangaan, dan kun je ook een eenvoudig Bingo programma helpen schrijven.


VoorJanHCC7
Inhoud van de Workshop sessies:

  1. Installatie en voorkeuren. Inleiding en documentatie .Starten en debuggen.
    • Vensters, knoppen, plaatjes, listboxen, menu's enz.
    • en het introscherm (Call sub, RND(0)).
  2. Events, toetsenbord, variabelen, bits en bytes, lussen, beslisstructuren.
    • En de stuurcabine deel 1 (Bridge of Controle Room).
  3. Demo sprites, geluid, Windows API voorbeeld voor stuurcabine deel 2
    • Warp-Center (XOR lijnen en boxen)
  4. Herhaling en details van sessie 1-2-3 (uitreiking documentatie enz.)
  5. Sub en RND en goniometrie met global, ByValue en ByRef
    • Short Range plaatjes genereren.
    • De speldelen aan elkaar knopen.
  6. Allocatie scherm met Windows opvul routines
    • Herhaling sessie 2 en 3
    • Database bestand met namen van sterrenstelsels.
  7. Het Docking scherm
    • Speldelen koppelen.
  8. Game details uitwerken en installeren van LBGfx (LB graphics extra is een eigen DLL van een LB gebruiker)
    Deze DLL gebruikt dezelfde Windows DLL's als LB, maar is krachtiger dan de SPRITE routines van LB.
  9. Game afronden.
    • Testen en herhalen van sessie 5-6-7
  10. Vakantie


Ik maak bijna elk jaar een Nieuwjaars wenskaart voor familie en vrienden. Ik hoop dat, dit jaar niet te hoeven te doen, omdat ik hoop geen tijd ervoor te hebben. Sessie 4 is in januari 2020. Sessie 9 is juni 2020. Tot ziens op een Workshop met laptop en USB stick en veel geduld en enthousiasme. De meeste sessie zijn al tot in details uitgewerkt. In 2020 komt LibertyBASIC versie 5 waarschijnlijk uit.