欢迎来到 Mario Forever 百科!编辑前请创建一个账号,或使用现有的账号登录;并认真阅读用户须知

自2020年7月14日起,未验证邮箱的用户将无法编辑页面。请前往参数设置验证邮箱,谢谢您的配合。

Geography Engine

出自Mario Forever 百科
於 2021年7月25日 (日) 16:08 由 马里奥X7討論 | 貢獻 所做的修訂 →‎更新一览
跳至導覽 跳至搜尋

是時候該來一個讓用戶都能說靈活且好用的引擎了 ——作者

Geography Engine 地理引擎
Logo Remade.png
引擎作者 電童Isamo
開發環境 Clickteam Fusion Developer 2.5+
發布時間 2020年11月14日(舊版)
2021年5月14日(新版)
最新版本 b0.4
下載地址 點我下載,提取碼:genb

引擎介紹

Geography Engine 是電童lsamo(原名:瑪利歐X7)於2020年10月14日開工,2020年11月14日完成的第二個1.5次開發引擎,也是該作者第一個幾乎完全從零開工的引擎。

相較於其另外兩個開源引擎——Cauldron Engine(舊版本稱Mario Forever Engine Everybody)和Star Engine,Geography Engine 既保留了CaE的RE式編寫操作,同時又吸收了其他引擎的接口操作與模塊化處理,使得本引擎在製作DIY物品時簡便靈活。

2021年三月,由於 Geography Engine 的大量不盡人意的缺陷,作者重寫了這款引擎,於2020年5月14日發布 Geogrpahy Engine Remade 公測版。

然而,由於CTF2.5+的一嚴重bug,導致之前版本的大部分obj都暫時無法完善其中一部分機能,待CTF修復後將會儘快恢復。

引擎優劣點

優點:

  • 保留了Rainbow Engine式的行為編寫風格,但又有自己獨特的模塊化操作。
  • 基本不使用CTF自帶運動和Every計時器,以保證在低幀率條件下最大限度地減少因計時器與幀率異步而導致的一系列bug
  • 原生支持帶彩條的反重力,這一點SE和RE都是沒有的,完全屬於作者自摸(出於各種因素的考慮,在GER里反重力在核心引擎中被取消,但保留了其接口,屆時可以從模組包中獲得反重力效果)
  • 踩平台更加精確,更不易出現玩家錯位bug
  • 平台邊界非常靈活,你甚至可以做出一定形狀或一定範圍內運動的平台(注意:若是漸變轉向的平台,請勿將速度調太大,以免導致因轉向不及時造成出界)。原生自帶圓周運動平台
  • 同SE一樣支持添加多角色
  • 不再使用 Player 2 和 Player 3 來記錄玩家積分等數據,多人遊戲可能(你想多了= =)
  • 角色的彩條判定更加精確可靠,徹底解決了磁鐵牆問題
  • 滾屏簡單易用:確定滾屏左上角和滾屏右下角,配合刷新滾屏控件即可。(為了增強實用性和便捷性,在GER中則轉換為了UEL式滾屏放置)
  • 獎勵可通過在編輯器中與問號塊完全重疊而實現
  • 通過大小通關器的位置關係而自動確定左右過關方式,通過角色觸發過關變量時其與通關停止點的位置關係而確定過關行走方向
  • 徹底避免卡機高跳,同時又給該引擎增加了原版所沒有的特性

缺陷

  • 由於功能太多,接口處理部分過於複雜,對一些自創要求高的作者可能需要消耗一定精力去消化有關代碼
  • 編寫量巨大,且每個功能/組可能與其他功能/組密不可分,對用戶會一定程度地造成使用上的不便
  • 強制滾屏雖然比RE更直觀易用,但必須配合強制滾屏節點使用,否則滾屏失效(在GER中通過打開Flag31就可以防止強制滾屏自動追蹤下一個目標
  • 莫名原因導致本人端ctf2.5不定期崩潰(具體請見簡介,目前已通過一些特殊方式暫時性修復,尚不確定其穩定性)

引擎作者的話

編寫這個引擎的初衷,是因為看到很多玩家使用RE時出現許許多多問題,包括磁鐵牆和有缺陷的平台補正。為了彌補這兩個問題,也因受到das無彩條判定的啟發,加之之前對於Star Engine的處理,我於是在10月14日晚,打開電腦,打開我的CTF2.5+,開始着手研究……從最初的「應用程序1」,到後來的「Geography Engine」,截至11月15日,已經工作了近四周的時間,每天至少4小時都在這上面。也因此,我這段時間每天晚上熬到幾乎12點才會上床……

然而,開發的過程十分坎坷。因為是第一次嘗試幾乎從0開發,我就利用我那三腳貓的代碼功夫,按着那瘋狂的想法,挖起了這浩然一坑。誰知,原本我認為的理想仍舊還是理想,現實卻更是比理想出人意料:大量的bug層出不窮,大量的代碼從頭重寫,大代碼閱讀量讓人難以忍受……可是,即便如此,我還是覺得,如果這個坑半途而廢了,那我這幾(十)天的努力也就隨波東流了。為此,我還要特別感謝das,在我開發前期,我向他求助,他基本上都接受,幫助我修bug、調試代碼……在如此高壓的學習環境中能抽空幫忙,我覺得是可恨可喜的——可恨的,是我傷害了我開發路上的「先賢」的學習之樹;可喜的,則是我在他的幫助與自己的無限努力嘗試中,得到了升華。

終於,在2020年的11月14日,GE華麗現身。

希望我這個用心且幾乎從0開發的引擎能夠幫助更多的MF作者實現他們的MF夢。

更新一覽

更新一覽
版本 更新日期 更新內容
0.1 2020.11.14 加入基本元素
0.2 2020.11.15 修復bugs:
  • 龜殼無法連擊
  • 水管傳送錯誤

改動:

  • 加入布布鬼和烏賊
  • 加入門傳送
0.3 2020.11.17 修復Bugs:
  • 庫巴運動不正常
  • 食人花在瑪利歐出水管時無法自動縮回

改動:

  • 添加了全跟蹤炮彈,補充上綠游魚生成事件
  • 現在含有general運動類型的instance可以走得更精確了
  • 瑪利歐跳躍手感更加復原MF了(不使用TimerX)
0.4 2020.11.19 改動:
  • 控件穩定優化——為了進一步防止ctf2.5+ r292.22的用戶在使用時會概率性崩潰,此次將控件所持有的分組上限縮小為3個,因此新增控件:平台,負責防止瑪利歐踩平台時出現漏判
  • 將地面與背景按需加入並同時條理化(此處指採用統一格式並進行適當整理)
0.5 2020.11.21 修復Bugs:
  • 瑪利歐過關後按住方向鍵會出現走動
  • 過關後time左側秒表仍在運動
  • 強制滾屏相關控件沒有隱形
  • 火球系實例無法擊碎冰塊
  • 庫巴打死後,若未放置停止滾屏,則會繼續滾屏

改動:

  • 壓頂刺(事件控制)
0.6 2020.11.25 改動:
  • 補入鏈條
0.7 2020.12.4 修復Bugs:
  • 冰塊無法被很好地擊碎
  • 冰球龜無法凍結金幣
  • 部分敵人橫向運動抽風
  • 瑪利歐跳躍時若頂到角落則可能會二段跳而導致其向上卡出天花板
  • 跳烏龜會概率性向上卡出天花板

改動:

  • 修改了實例組的運動方式,現在實例組的任何運動都支持子像素(小數速度)運動
  • 實例組新增字符串變量B和C這兩個string:String B:負責控制實例類型,一般為空或者bullet;String C:負責控制實例(在 String B 的情況下)的子類型/額外屬性,所有彈性火球均為fire。
  • 特別提醒:新改寫過的代碼在對火球適用時會極小概率觸發向下穿牆的bug,估測概率為0.1%
0.7.1 2020.12.6 修復Bugs:
  • 進一步修正了瑪利歐的運動手感
  • 石盾震屏中心不當
  • 綠飛龜踩不死
  • 多個【?】磚相距甚遠時無法被頂
  • 紅果、綠果出問號塊以後穿牆
0.7.2 2020.12.14 修復Bugs:
  • 音樂會被多次加載(即每次碰到音樂對象就會(重)加載一次)
  • 瑪利歐死亡後不會再加載音樂
  • 暫停時不暫停音樂的bug
  • 瑪利歐在開始轉向時如果鬆開與其運動方向相反的按鍵,則會繼續按照轉向處理速度
  • 忘記關掉顯示彩條及判定
  • 瑪利歐無法跟隨圓周平台,且之前版本中瑪利歐的y平台站位有問題
  • 有些敵人不會被龜殼打死但會被判定獎分
  • 黃飛龜沒有運動跡象
  • 食人花運動抽風
  • 如果瑪利歐踩上靜止的龜殼,有概率跳起
  • 噴火花火球落地太快,且噴火速度與原版誤差較大
  • general運動物體如果剛開始靠牆則可能會被卡上牆
  • 無敵星撞牆不會反向
  • 有些飛龜踩掉後方向有誤
  • 若存在多個飛魚生成範圍,則可能導致生成錯誤
  • 瑪利歐站在平台實心塊上位置錯誤
  • 多平台概率性抽風
  • 鏈條無音效

改動:

  • 全跟蹤炮彈現在默認速度為36
  • 圓周平台角速度現在默認速度為1
  • 現在懸浮平台會隨着玩家的反重力狀態而決定掉落方向
  • 新功能:主音樂,即無需音樂控件就能自動播放的音樂,在「場景事件控制」里找到「主音樂名」並賦值即可,需要帶上後綴名。恢復時只需要使用「還原主音樂」即可
0.8 2020.12.17 修復Bugs:
  • 瑪利歐無法在一格高的空隙中跳躍
  • 過關後玩家子彈只有火球會結算成分數
  • 瑪利歐部分動畫出錯
  • 武器龜冰球無傷害

改動:

  • 集中化了瑪利歐的代碼,現在用戶調用/修改起來更方便
  • 加入啃腳地鼠lol
  • 對過關設置進行了修改,加入了一部分全局功能,為以後加入大地圖的完整版提供接口
0.8.1 2020.12.21 修復Bugs:
  • 庫巴屍體掉落緩慢
  • 漩渦在水平方向上吸不動瑪利歐
  • 滾屏關卡如果瑪利歐在一側防走出滾屏外同時碰牆則會導致卡牆循環卡死遊戲,同時優化了滾屏時的卡牆
  • 部分平台標記可能對平台不起作用
  • 平台漸變轉向有問題
  • 死亡後音樂不再播放
  • 坦克滾屏瑪利歐不會跟隨地面,且會拖死瑪利歐
  • 大量foreach導致卡頓
  • instance對象頂頭判定無效
  • 瑪利歐從右側懸崖貼牆下落時向左卡出牆

改動:

  • 重寫了平台運動與實例運動:取消了大量的foreach,使遊戲運行更加流暢。為此,本人進行了RE與GE關於20*13個板栗的實驗:同樣是板栗,在20*13的板栗方陣中,允許6*13個剛開始就在遊戲窗口內部,其餘在外部。經測試,待運行穩定後,RE與GE的幀率均保持在50fps左右
  • 精確化了瑪利歐的彩條位置
0.8.2 2020.12.25 修復Bugs:
  • 瑪利歐頂頭卡死
  • 錘子龜運動方向錯誤
  • 火球在屏外發射時不激活
  • 有一個實例的屍體出屏後,其餘所有的實例屍體均不掉落
  • 連跳的代碼中條件不檢測蹲下的狀態
  • 跳烏龜、紅果會黏在天花板上
  • 紅果、綠果頂出後沒有音效,且紅果不會反向運動
  • 單次隱藏問號磚在玩家死亡後失效時,獎勵反而不會銷毀
  • 綠果、紅果屏外反彈會出音效

改動:

  • 集中化獎勵代碼
  • 加入四種不同風格的地刺(有害方塊),電珊瑚現在屬於此類
  • 對獎勵代碼進行解讀
  • 經本人考證後決定,瑪利歐的默認轉向減速度現在為4而不再是3(W10E中瑪利歐在轉向的同時也觸發了不按運動鍵時減速,由於轉向時減速3單位,不按鍵減速為1單位,則一共減速4單位)
0.9 2021.2.1 修復bug:
  • 若在強制滾屏關卡內瑪利歐碰到邊緣,則其判定會有錯位
  • 庫巴運動不正常
  • 壓頂刺事件不隱藏,且壓頂刺不跟隨屏幕運動
  • 玩家踩不上實例和玩家共用平台
  • 敵人頂不死
  • 噴火花同時噴火時會出問題
  • 震屏位置不對
  • 玩家運動手感在起步時有問題
  • 反向石盾在當下方(其頭頂)有障礙物時不會向上砸(但是也使得其初坐標被迫向上平移1像素)
  • 武器龜被冰球凍結後的冰塊大小不正確

改動:

  • 再次校正瑪利歐碰屏幕邊緣的停止範圍
  • 物件文件夾加入英文注釋,方便國際友人快速理解與尋找
  • 玩家左右卡牆判定與踩平台判定加粗,同時對左右卡牆判定的熱點進行了校正
  • 新加入「元素」組,負責集中處理冰火碰撞的事件,同時對碎冰事件進行改寫
  • 再度改寫敵人受傷,同時做出妥協:錘子不再可以得到連擊獎勵
  • 食人花伸出判定調整
0.9.1 廢棄 修復bug:
  • 火球龜/冰球龜在與冰塊完全重疊後發子彈會使子彈瞬移。且火球會在瞬移過程中消除冰塊且不會爆炸,待瞬移結束後立即爆炸。
  • 鬆開開火鍵以後瑪利歐不會減速
  • 滾屏中心的位置只能鎖定於(320,240)

改動:

  • 刪除了一些無用的控件,同時修改了初始化事件
  • 瑪利歐的「重力矢量倍數」改名為「重力方向倍數」
  • 去除了其他組的父類,同時增加了水實心塊
b0.1 2021.5.14 重寫 Geography Engine,並添加後綴名 Remade,從此版本開始,上述所有版本均不再更新,Remade版版本號以b和r開頭
b0.2 2021.6.2 機能重寫
  • 部分物件使用低配版坐標位移運算,以減小 run & build 時軟件崩潰的概率
  • 踩踏判定等價重寫,保證精確度,防止誤判

修復bugs

  • 部分可踩死的敵人踩死後不消失
b0.3 2021.6.16 機能重寫
  • 平台運動代碼規範化重寫

物件添加

  • 加入平台傳送控件與平台銷毀控件

修復bugs

  • 過關與發炮彈時都會觸發兩次音效
  • 玩家站在緩慢轉向的平台或圓周運動平台時會發生抖動
  • 部分獎勵物導致軟件崩潰(受軟件版本原因,該bug可能還會持續)
  • 玩家火球等子彈缺失運動
b0.4 2021.6.25 機能重寫
  • 敵人判定接口全面修改,回歸至GE時代類型。

機能性BUG修復:

  • 大量地在行為中使用分組導致軟件崩潰,現在能不使用分組的地方儘量使用foreach或對象解決
b0.4.1 2021.7.15 機能更新
  • 更新了check point的編號存儲方式
  • 更新了與RE和World10E的兼容方式
b0.4.2 2021.7.18 修復bugs
  • 平台反向運動組件失效(經典運動與圓周運動均失效)
  • 滾屏時如果貼近滾屏所朝向的邊緣跳躍時會導致遊戲卡死
  • 烏龜系敵人概率性判定為踩踏失敗(下方給出此bug的解決方法)
  • 單格磚無法被低速通過(被修復後產生可在縫隙上跳躍的不妥操作)

機能修改

  • 敵人組:新增700號變量,作用為敵人的踩踏判定偏移量(單位:pix),表示從敵人中心開始往下(正值)或往上(負值)偏移判定(修復第三個bug用)
b0.4.3 2021.7.19 補正修復bug
  • 單格磚現在以一種新的方式被修復
b0.5 2021.7.25 底層修改
  • 刪去了瑪利歐在出水管時的彩條位移

機能修改

  • 物理運動組:新增409號變量,用於決定該物件的恆常方向,不需要調用任何函數即可生效;新增了410號變量,用於決定是否自動根據玩家與該物件的位置關係來設置該物件方向,在修改410號變量後調用其「INIT DIR」函數來使其生效;新增「INTERACT」內部函數,用於處理玩家與該對象重疊時的動作。上述更新已應用於大部分有關對象當中

底板優化

  • 將大部分子彈類與特效類對象的屬性調整為:距離窗口過遠即消失或自動不激活,以最大限度地降低內存開銷

修復Bugs(加#表示上個版本未被修復但上上個版本已存在的bug,加$表示自發布以來一直未被修復)

  • #食人花噴出的火球的最大橫向速度偏高,現已作出調整
  • $金幣不能被頂掉
  • 鏈條容易在狹窄的轉彎處抽風
  • #debug mode默認為開啟
  • 圓周探照燈只有燈芯
  • #玩家扔出的甜菜沒有重力
  • #頂出來的甜菜瞬移會問號磚內(消失)