Inhoudsopgave:

Algemene kamers in touw met Sugarcube - Ajarnpa
Algemene kamers in touw met Sugarcube - Ajarnpa

Video: Algemene kamers in touw met Sugarcube - Ajarnpa

Video: Algemene kamers in touw met Sugarcube - Ajarnpa
Video: Живое прослушивание: полная коллекция #BringYourWorth (официальное аудио) 2024, November
Anonim
Algemene kamers in touw met Sugarcube
Algemene kamers in touw met Sugarcube

Hallo hallo en welkom bij mijn tutorial over het bouwen van Wumpus Hunt in Twine met Sugarcube!

Twine is een heel eenvoudig hulpmiddel, ontworpen voor het maken van tekstavonturenspellen! Mijn favoriete nichtje heeft ervoor gekozen om een spel met Twine te maken voor haar afstudeerproject, en ik mag helpen, dus maak ik deze reeks tutorials!

Deze serie is minder bedoeld als project op zich, maar meer als referentie voor gamedesign met touw. Ik ga enkele van de functies van Twine laten zien en hoe je ze kunt gebruiken als onderdeel van je spel.

Als je me wilt volgen terwijl ik Hunt the Wumpus bouw, moedig ik je aan om dingen te veranderen terwijl we gaan. Probeer functies toe te voegen of dingen op nieuwe manieren te gebruiken. Op die manier kun je je eigen spel maken, in plaats van alleen het mijne te volgen.

Nu hebben we een Wumpus om op te jagen!

Stap 1: Omwille van de beknoptheid…

Kortheidshalve…
Kortheidshalve…

In deze zelfstudie wordt ervan uitgegaan dat u bekend bent met enkele basisprincipes. Normaal gesproken maak ik mijn tutorials graag zo laagdrempelig mogelijk, maar deze keer moet ik naar het vlees en de aardappelen gaan omwille van mijn lieve neefje.

Ik neem aan dat je Twine maar enigszins bekend bent; dat je weet hoe je het moet downloaden (of de online versie gebruikt), en dat je nieuwe passages weet te maken en aan elkaar te koppelen. Ik ga er ook vanuit dat je bekend bent met enkele basisprogrammeerconcepten, namelijk variabelen en functies, en hoe ze worden gebruikt in Sugarcube.

Ik moet aannemen dat je bekend bent met het spel Hunt the Wumpus. Het is een moeilijk concept om in woorden te beschrijven, en om uit te leggen in foto's zou een eeuwigheid duren. Ik heb geprobeerd een video of iets dergelijks te vinden waarin het werd uitgelegd, maar ik kon er geen vinden die alleen maar verhaalloze gameplay was. Ik denk dat het een van die dingen is die gewoon van generatie op generatie worden doorgegeven, en iedereen gaat er gewoon van uit dat je het weet. Ik denk dat ik daar niet mee help.

Stap 2: Het idee

Het idee
Het idee

Het idee achter dit project is dat we de doorgangen van Twine als individuele kamers kunnen gebruiken. De speler kan die kamers doorkruisen via de links, en de code zal de tekst van de kamer veranderen, afhankelijk van of de Wumpus er is of niet.

Dit concept bleek uiteindelijk uitdagender dan ik had verwacht, maar over het algemeen denk ik dat het vooral in het stuurhuis van Twine past.

Stap 3: Maak enkele kamers

Sommige kamers maken
Sommige kamers maken
Sommige kamers maken
Sommige kamers maken
Sommige kamers maken
Sommige kamers maken
Sommige kamers maken
Sommige kamers maken

Zoals je hierboven kunt zien, ben ik begonnen met het maken van een 3x3 raster van kamers. Ik heb ook een introductiepassage waar de speler zal beginnen, en die linkt naar een kamer op de grid. De code hiervoor is erg basic, alleen wat tekst en links. Ik heb een beetje geformatteerd om de links in elke kamer te ordenen (zoals je kunt zien in de derde foto), maar ik heb het minimaal gehouden.

De sleutel tot deze stap is minimalisme. Je zult de meeste van deze dingen regelmatig opnieuw willen doen, dus je wilt niet een hele hoop werk opnieuw moeten doen. Houd het bij minder dan 10 kamers in totaal, houd kamerbeschrijvingen kort, maak de dingen nog niet mooi. Ze hoeven alleen functioneel te zijn.

Als je de code eenmaal werkend hebt, kan het mooi zijn.

Stap 4: Voeg een Wumpus toe

Voeg een Wumpus toe
Voeg een Wumpus toe

Om onze Wumpus toe te voegen, moeten we een StoryInit-passage maken.

Deze passage is uniek voor SugarCube en wordt uitgevoerd voordat de speler de startpassage ziet. Het wordt gebruikt om variabelen en objecten in te stellen die moeten worden gemaakt voordat het spel begint. Het is erg belangrijk dat de passage de titel "StoryInit" heeft en hoofdlettergevoelig is.

We declareren onze Wumpus-variabele als een tekenreeks en kennen er een willekeurige kamertitel aan toe. We kunnen de functie of() gebruiken om er een willekeurige string aan toe te wijzen uit een lijst met strings. Zo start de Wumpus altijd in een willekeurige kamer.

Stap 5: Controleer op een Wumpus

Controleer op een Wumpus
Controleer op een Wumpus

Aan elk van de kamers voegen we een ""-statement toe dat controleert of de Wumpus zich in de huidige kamer bevindt. Als dat zo is, wordt er een korte string afgedrukt. Als dat niet het geval is, verschijnt er niets.

Omdat we dit aan het bouwen zijn, zullen we ook wat foutopsporingsinformatie toevoegen. We willen graag van tevoren weten waar onze Wumpus is en of hij naar behoren werkt.

Je moet deze code voorlopig in elke kamer afzonderlijk kopiëren en plakken. Daarom heb ik je gezegd dat je je aan slechts een paar kamers moet houden.

Stap 6: Testen

Toets
Toets
Toets
Toets

We testen onze code door deze af te spelen. En ja hoor, we kunnen zien waar de Wumpus zich bovenaan het scherm bevindt. Als we niet in die kamer zijn, is de "A Wumpus hier!" tekst verschijnt niet.

Door naar de juiste kamer te navigeren, kunnen we de tekst laten verschijnen. Dit is hoe we onze Wumpus voor elk spel aan een willekeurige kamer zullen toewijzen!

Stap 7: Algemene kamercode toevoegen

Algemene kamercode toevoegen
Algemene kamercode toevoegen
Algemene kamercode toevoegen
Algemene kamercode toevoegen

Al dat kopiëren en plakken om elke kamer te laten controleren op de Wumpus is vervelend. Terwijl we dit spel ontwikkelen, willen we deze code behoorlijk veranderen. We hebben een betere manier nodig om dat te doen. Laten we een generieke kamercode maken.

Maak een passage en noem het iets speciaals. Ik noem de mijne gewoon "kamer", met allemaal kleine letters. Misschien wilt u speciale tekens of hoofdletters gebruiken om de uwe uniek te maken, zodat deze niet lijkt op uw echte kamernamen.

We knippen en plakken onze ""-verklaring in deze algemene kamercode. Gebruik vervolgens in elk van uw echte kamers een ""-statement. Dit zal letterlijk de inhoud van onze "kamer"-passage kopiëren en plakken in dat deel van elke kamer. Op die manier kunnen we de machine de vervelende dingen laten doen, terwijl wij ons concentreren op de code!

U kunt meer lezen over "" en andere uitspraken op de Sugarcube 2-documentatiepagina.

Stap 8: Testen

Toets
Toets
Toets
Toets

Dit uittesten levert natuurlijk dezelfde resultaten op als voorheen, maar het is belangrijk om regelmatig te testen. Bevredigend ook.

Het wijst echter wel op een ongelukkig neveneffect van al onze codering dat we nu beter kunnen aanpakken. Je zult misschien merken dat naarmate we meer code aan elke passage toevoegen, we meer en meer lege ruimte in ons spel krijgen. Die gaan we hierna regelen.

Stap 9: Waarom zijn er lege regels?

Waarom zijn er lege regels?
Waarom zijn er lege regels?
Waarom zijn er lege regels?
Waarom zijn er lege regels?

Je kunt hierboven zien hoe ik backslashes heb toegevoegd aan de uiteinden van bepaalde regels code. Waar en wanneer ik die gebruik, is heel bewust, en om dat te begrijpen, moet je begrijpen waarom we in de eerste plaats vreemde regeleinden krijgen.

Het is de aard van code in Twine om zich te vermengen met gewone tekst. De punthaken (deze dingen:) vertellen Twine dat wat erin staat code is en geen tekst. Laat me het probleem hiermee illustreren. Stel dat je de volgende code hebt:

<> Normale tekst die in het spel verschijnt… <> Meer speltekst…

Veel tekstverwerkers hebben een optie waarmee je witruimtetekens kunt bekijken; dingen zoals spaties, tabs en regeleinden. Twine niet, maar als dat wel het geval was, zou het er ongeveer zo uitzien:

Normale˙tekst˙verschijnt˙in˙game…¶ ¶ Meer˙game˙tekst…

Zie je die alineamarkeringen? (¶) Die staan niet tussen de punthaken. Dat betekent dat Twine denkt dat het normale tekst is en ze in je spel stopt. Daarom ziet het er als je het spel speelt als volgt uit:

Normale tekst die in het spel verschijnt…

Meer speltekst…

Om ze kwijt te raken, kunnen we een backslash-teken gebruiken om Twine te vertellen dat we die regeleinde daar niet willen hebben. In je code ziet het er ongeveer zo uit:

Normale˙tekst˙verschijnt˙in˙game…¶ \¶ Meer˙game˙tekst…

Dit zal verschijnen zoals je zou verwachten in je spel:

Normale tekst die in het spel verschijnt…

Meer speltekst…

Houd er rekening mee dat alleen regeleinden buiten punthaken dit nodig hebben. Als we bijvoorbeeld de volgende code hadden:

We zouden alleen die ene backslash nodig hebben, omdat de eerste regelafbreking (¶) binnen de punthaken () staat.

Ten tweede zijn backslashes () anders dan forward slashes (/), en je moet voorzichtig zijn met welke je waar gebruikt, omdat ze verschillende dingen doen.

Stap 10: Testen

Toets
Toets

Je test zou moeten uitwijzen dat je de foutieve lege ruimte hebt geëlimineerd! Schitterend!

Stap 11: Dat is alles voor nu

Dat is het voor nu
Dat is het voor nu

Dat is alle tijd die ik nu heb. Tot nu toe is alles vrij basic Twine-dingen. Generieke kamercode is een handige truc om het kopiëren en plakken te verminderen dat je moet doen, en die backslashes zijn absoluut noodzakelijk om je passages er schoon uit te laten zien en je code leesbaar te houden.

Vanaf hier gaat het snel!

Goede jacht!

Aanbevolen: