Movatterモバイル変換


[0]ホーム

URL:


Skip to main content

itch.ioitch.io logo & titleitch.io logo

Browse GamesGame JamsUpload GameDeveloper LogsCommunity
Log inRegister
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
My First Game Jam: Summer 2022 »Community

Update

I'm starting to reach the point where the visual programming interface of GB Studio is becoming a hindrance. Scripting interactions with monsters involves some complex conditionals, which I find hard to read when they aren't in text.

A screenshot from GB Studio. The portion of the screen shown is in the scripting sidebar, which shows a snippet of a script that is five layers deep into a nested conditional. Statements that are visible include calling a script called "RollUnder", which rolls a d20 and checks to see if the result is less than a target number, a statement decrementing the character's hit points, and a dialog box displaying speech from a goblin.

So I decided to step back and write out the first of these in pseudocode, which helped a lot with planning the control flow:

ON Trigger.ENTER {If GOBLIN_COMPLETE is False {    If GoblinActive is False {        Display "The goblin is asleep… Try to sneak past? {Stealth}"        Display.Choice Set Temp0 {            True : "Yes"            False : "No"        }        If Temp0 is True {            Call RollUnder(Temp0, PC_Stealth, Temp1)            If Temp1 is True {                Display "{Stealth: $Temp0} Success!"                Scene.change(D1_R2, 16, 9)                Stop            }            Else {                Display "{Stealth: $Temp0} Failure!"                Goblin.StopOnUpdate                Goblin.Emote(Shock)                Display(avatar=Goblin) "Zzz--wha? Whozzat?"                Goblin.Move(5,9)                Display "The goblin approaches!"                GoblinActive = True            }    }    Loop {        If Goblin_HP <= 0 {            Stop        }        Else If GoblinComplete is True {            Stop        }        Else If PC_HP <= 0 {            Display "You collapse from exhaustion and injury!"            Call PCdead            Stop        }        Else {            Display "What do you do?"            Display.Menu Set GoblinWhatDo {                Attack:1,                Scare:2,                Friend:3,
                Trick:4,                Escape:0            }        }        If GoblinWhatDo == 1 { \\Attack            Call RollUnder(Temp0, PC_Attack, Temp1)            If Temp1 is True {                Display "{Attack: $Temp0} Success!"                Goblin_HP = Goblin_HP - PC_Damage - Equip_Damage                Display "You strike at the goblin with your weapon!"                Display(avatar=Goblin) "Arrgh!"            }            Else {                Display "Attack $Temp1 Failure!"                Call RollUnder(Temp0, PC_Armour, Temp1)                Display "The goblin counterattacks!"                If Temp1 is True {                    Display "You evade damage!"                }                Else {                    PC_hp -= 1                    Display "The goblin hits! (1 Damage)"                }            }        }        Else If GoblinWhatdo == 2 { \\Scare            If GoblinScared == 2 {                Display "The goblin isn't afraid of you."            }            Else {                Call RollUnder(Temp0, PC_Scare, Temp1)                If Temp1 is True {                    Display "{Scare: $Temp0} Success!"                    Display "You frighten the goblin, suggesting that
                         they might be cut to shreds or blasted into                         goo if they attack."                    Display(avatar=Goblin) "Okay, okay! I don't want                                no trouble!"                    Goblin.move(15, 6)                    GoblinComplete = True                    GoblinScared = 1                    Stop                }                Else {                    Display "{Scare: $Temp1} Failure"                    Display "You try to scare the goblin with threats and                         promises, but they aren't impressed."                    Display(avatar=Goblin) "Heh, you think that's scary?                                Say hello to my little, uh, my
                                knife!"                    Display "The goblin brings the knife a little too                             close to you and grins menacingly. But they                         don't attack yet."                    GoblinScared = 2                                }        }
        Else If GoblinWhatDo == 3 { \\Friend[...]
Now that I have that mapped out, I can actually implement it in the engine.

Here's the goblin in question, for fun. It's an edit of a sprite from the roguelike repository linked earlier.

An animated GIF of a goblin pixel art sprite doing an idle animation. The goblin is dark green skinned, wearing gold-toned armour, and carrying a gold knife. The idle animation has the goblin tap their foot and wiggle their arms.

itch.io on Twitteritch.io on Facebook
AboutFAQBlogContact us
Copyright © 2025 itch corp ·Directory ·Terms ·Privacy ·Cookies

[8]ページ先頭

©2009-2025 Movatter.jp