強大的解謎原型制作工具:PuzzleScript 上手指南
(本文翻譯自PuzzleScript官方文檔)
PuzzleScript?網址(在線制作游戲):https://www.puzzlescript.net/
PuzzleScript 是一個幫助你制作基于網格的游戲的工具。
最著名的網格解謎游戲是推箱子:

推箱子有一條規(guī)則:
如果玩家嘗試走向箱子,那么推動它。
PuzzleScript 讓你能夠很簡潔地表達這個規(guī)則:
?[ > Player | Crate ] -> [ > Player | > Crate ]
PuzzleScript的引擎會去查找符合左邊規(guī)則的地方,并替換成右邊的形式。
>?是一個定向符號. 4個定向符號為?<,?>,?^, ?v。
看看下面的語句,猜猜會發(fā)生什么:
?[ < Player | Crate ] -> [ < Player | < Crate ]
這表示,當你遠離箱子的時候,箱子會朝你靠近。
在每一個游戲的回合,引擎的是這樣工作的:
player 被標記為想要運動的物體(響應玩家輸入)。
每一條規(guī)則會盡可能地執(zhí)行多次,然后才會繼續(xù)下一條。
執(zhí)行被標記的各個運動。
一個額外的階段,用于執(zhí)行一些額外的規(guī)則。
額外的階段可以做什么?一個例子:?如果你希望三個箱子靠在一起后會消除,你可以這樣寫:
?late [ Crate | Crate | Crate ] -> [ | | ]
如果不在前面加late關鍵詞,三個箱子將在下回合開始時才會消除。
這是一個跟著你的幽靈眼珠:
?[ Eyeball | ... | Player ] -> [ > Eyeball | ... | Player ]
這是一個頑皮的傳送精靈,每當她看到你時,她就會和你交換位置:
late [ Sprite | ... | Player ] -> [ Player | ... | Sprite ]
等等!這不對!這會導致這條規(guī)則不斷地執(zhí)行,玩家和精靈不斷地交換位置,應該改成這樣:
?late [ Sprite | ... | Player ] -> [ Temp | ... | Sprite ] late [ Temp ] -> [ Player ]

如果你是一個喜愛水果的小喵?
?[ > Kitty | ... | Fruit ] -> [ | ... | Kitty ]?
?[ > Kitty ] -> [ Kitty ]
上述第二行是為了貓咪移動到水果上的時候不會再額外的進行正常的移動。

如果你想讓箱子只能被水平推動?
?Horizontal [ > Player | Block ] -> [ > Player | > Block ]
horizontal表示只在移動方向為水平的情況下匹配這個規(guī)則?.??你也可以改成豎直方向(vertical?).

把你可以同時寫幾個模式,而不僅僅是一行。這個例子是一個相撲手在模仿你的移動:
?[ > Player ] [ Sumo ] -> [ > Player ] [ > Sumo ]

這大約涵蓋了所有基礎知識。?你現在可以嘗試修改這些示例了。?如果你愿意,還有很多要閱讀的內容,但我建議你在有需要的情況下學習其余部分。?
沒有必要了解 PuzzleScript 的所有細節(jié)——它是一種制作游戲的工具,如果你不使用它,那么引擎就無法實現它的目的。