Skip to content

Latest commit

 

History

History
187 lines (186 loc) · 15.2 KB

readme.md

File metadata and controls

187 lines (186 loc) · 15.2 KB

GMS2的YoYoYo引擎

这是一个用于GameMaker Studio 2.3.x的"I Wanna"引擎。

最新稳定版本

最新版本

1.0.1

版本1.0.0

此版本不是可用的
最初版本。
几乎是用于GameMaker: Studio的那个YoYoYo引擎的完全复制品。

版本特性

  • 修正了砖、水重叠时,kid贴砖碰水的bug。
  • 没有办法实现蝴蝶结延迟。
  • 没有办法进行原先由ds_map_secure_save实现的安全存档。
  • 其他同原版YoYoYo引擎。

使用注意

  • 应该保证所有房间有实例层world

  • 应该保证所有关卡房间有实例层player

  • 建议在房间中合适的图层上摆放实例。通常:

    • kid开始点应该在player层上。
    • 水应该在above_player上。
    • 机关应该在trigger上。
    • 图块应该在tile上。
    • 图块背景应该在tile_background上。
    • 其他实例应该在below_player上。

    这些层由浅到深排序为:world > above_player > player > below_player > tile > trigger > tile_background

  • 不需要摆放objPlayMusic, objCameraobjSmoothCamera。在scrOther - room_get_property函数中设置房间的属性。

    • 增加新的case段来增加新的房间。
    • cameraMode赋值来决定房间的相机模式。它的值应该是CameraMode的枚举值之一。
      • NONE表示不做处理。
      • SNAPPED表示分面跟随kid。
      • SMOOTH表示平滑跟随kid。
  • global.deathMusicMode的值应该是DeathMusicMode的枚举值之一。

    • NONE表示不播放死亡音乐。
    • PAUSE表示播放死亡音乐并暂停当前音乐。
    • FADE表示播放死亡音乐并淡出当前音乐。
  • 其他改变见修改清单。

  • 其他同原版YoYoYo引擎。

修改清单

  • 增加了精灵:sprMegaManBack, sprStarsBack,分别代表洛克人背景和星星背景,对应原版的背景bMegamanbStars,因为GameMaker Studio 2没有背景资源类型。它们在background文件夹中。
  • 增加了精灵:sprAllTiles,代表所有砖图块,对应原版的背景bAllTiles,因为GameMaker Studio 2没有背景资源类型。它们在tile set文件夹中。
  • 删除了精灵:sprCamera, sprPlayMusic,因为物体objCamera, objSmoothCamera, objPlayMusic已经被删除。
  • 移动了精灵:sprPlayerStart。现在它在player文件夹中。
  • 移动了精灵:sprGameOver。现在它在world文件夹中。
  • 删除了精灵:sprPlayerKiller,因为它是无用的。
  • 删除了精灵:sprPlayerMaskFlip,因为新的重力翻转处理方式不需要它。
  • 修改了精灵:sprPlayerSliding,因为爬墙处理方式改变了。现在它是镜像翻转的。
  • 重命名了精灵:sprBlockMask。现在它的名称是sprBlock
  • 重命名了精灵:sprMiniBlockMask。现在它的名称是sprMiniBlock
  • 重命名了精灵:sprSlipBlockMask。现在它的名称是sprSlipBlock
  • 移动了精灵:sprKillerBlock。现在它在killer文件夹中。
  • 删除了精灵:sprBlock, sprBlock2
  • 增加了精灵:sprBossBlock, sprFakeBlock, sprHiddenBlock, sprRiseBlock, sprFallBlock,分别代表BOSS砖、假砖、隐藏砖、升砖、降砖。它们在block文件夹中。
  • 删除了精灵:sprPlatform,因为它很少被使用。
  • 修改了精灵:sprMovingPlatform。现在它的名称是sprPlatform,在block文件夹中。
  • 删除了精灵文件夹slopes和其所有子资源,因为它们很少被使用。
  • 重命名了精灵:sprCherryWhite。现在它的名称是sprWhiteCherry
  • 增加了精灵:sprRefreshWater,代表二段水。它在misc文件夹中。
  • 重命名了精灵:sprWalljumpR。现在它的名称是sprVineRight
  • 重命名了精灵:sprWalljumpL。现在它的名称是sprVineLeft
  • 增加了精灵:sprTree,代表树。它在misc文件夹中。
  • 重命名了精灵:sprTriggerMask。现在它的名称是sprTrigger
  • 重命名了精灵:sprButton。现在它的名称是sprButtonLeft
  • 增加了精灵:sprButtonDown, sprButtonRight, sprButtonUp,分别代表向下、向右、向左的按钮。它们在trigger文件夹中。
  • 删除了精灵:sprSpikeTriggerDown, sprSpikeTriggerLeft, sprSpikeTriggerRight, sprSpikeTriggerUp,因为新的机关设计方式不需要它们。
  • 增加了精灵:sprMoveTrigger,代表移动的机关。它在trigger文件夹中。
  • 删除了精灵:sprSaveMask,因为它的功能可以被存档点精灵代替。
  • 修改了精灵:sprSaveMedium, sprSave, sprSaveVHard, sprSaveMediumFlip, sprSaveFlip, sprSaveVHardFlip。现在它们的碰撞区是整个图像,并且sprSaveVHard被重命名为sprSaveVeryHardsprSaveVHardFlip被重命名为sprSaveVeryHardFlip
  • 重命名了声音sndDJump。现在它的名称是sndDoubleJump
  • 重命名了声音sndDeath。现在它的名称是sndDie
  • 没有背景资源。
  • 所有脚本资源被转换成函数并分开在几个脚本中。
    新脚本 函数 旧脚本
    scrPlayer player_jump scrPlayerJump
    scrPlayer player_release_jump scrPlayerVJump
    scrPlayer player_shoot scrPlayerShoot
    scrPlayer player_die scrKillPlayer
    scrPlayer player_flip scrFlipGrav
    scrInitializing(在新版本中被改为scrGame 立即执行 (在新版本中被改为game_init scrInitializeGlobals
    scrInitializing(在新版本中被改为scrGame 立即执行 (在新版本中被改为game_init scrSetGlobalOptions
    scrGame game_save_config scrSaveConfig
    scrGame game_load_config scrLoadConfig
    scrGame game_saves scrSaveGame
    scrGame game_loads scrLoadGame
    scrGame game_set_caption scrSetRoomCaption
    scrGame game_restarts scrRestartGame
    scrGame game_set_vsync scrSetVsync
    scrGame game_reset_window_size scrResetWindowSize
    scrControl control_get_key_name scrGetKeyBind
    scrControl control_get_controller_button_name scrGetControllerBind
    scrControl control_get_controller_button scrAnyControllerButton
    scrControl control_check scrButtonCheck
    scrControl control_check_pressed scrButtonCheckPressed
    scrControl control_check_released scrButtonCheckReleased
    scrMusic music_toggle scrToggleMusic
    scrMusic music_play scrPlayMusic
    scrMusic music_stop scrStopMusic
    scrOther draw_button_info scrDrawButtonInfo
    scrOther draw_text_outline scrDrawTextOutline
    scrOther make_shapes scrMakeShapes
    scrOther make_circle scrMakeCircle
  • 增加了枚举MenuMode, DeathMusicMode, Difficulty, CameraMode,分别代表菜单模式、死亡音乐模式、难度模式、相机模式。它们在脚本scrInitializing中。(枚举Difficulty在新版本中已经被删除,用宏代替)
  • 修改了函数scrPlayerJump的函数体,因为板子不再是砖的实例了。现在它分别检查是否与砖和板子碰撞,来决定能否一段跳。
  • 修改了函数scrPlayerShoot的参数,因为爬墙处理方式改变了。现在它的参数mirror表示是否朝反方向射击。
  • 修改了函数scrFlipGrav的函数体。现在它不再执行scrSetPlayerMasky坐标的翻转调整值从4变成3,并且翻转image_yscale的值。
  • 删除了脚本scrSetPlayerMask,因为新的处理方式不需要它。
  • 修改了函数scrSaveGame。现在它:
    • 保存kid的实际位置而不floor它们。
    • 不对存档位置卡砖的情况进行处理,因为这不可能发生。
    • 使用结构体和json_stringify,而非ds_mapjson_encode保存数据。
    • 不使用ds_map_secure_save保存数据。
  • 删除了脚本scrGetMusic。现在对房间音乐和相机模式进行设置,应该修改函数room_get_property
  • 增加了函数room_get_property,用来设置房间音乐和相机模式。它在脚本scrOther中。
  • 重命名了字体:fDefault30, fDefault24, fDefault18, fDefault12。现在它们的名称分别是fArialBold_30, fArialBold_24, fArialBold_18, fArialBold_12
  • 修改了物体:objWorld。现在它实现改变音乐和改变摄像机位置的功能。
  • 删除了物体:objCamera, objSmoothCamera, objPlayMusic。现在它们的功能由objWorld实现。
  • 移动了物体:objGameOver。现在它在world文件夹中。
  • 修改了物体:objPlayer
    • 变量jump2被重命名为airJump
    • 变量djump被重命名为doubleJump
    • 变量maxVspeed被重命名为maxFallSpeed
    • 变量xScale被删除。
    • 直接使用image_xscaleimage_yscale存储其水平和竖直拉伸比例。当kid面向左边时,image_xscale的值是-1;当kid的重力翻转时,image_yscale的值是-1
    • 不再创建物体objBow,因为它已经被删除。现在kid在绘制事件中绘制蝴蝶结以显示它。
    • 没有摧毁事件,因为没有蝴蝶结需要被摧毁。
    • 没有与斜面砖的碰撞处理程序,因为斜面砖已经被删除。
    • 进行射击处理后,使objBullet所有实例发生objBullet的0号用户事件。这个事件中处理子弹与存档点、按钮的碰撞。这是为了确保子弹与存档点的碰撞在kid与砖的碰撞之前发生,防止卡砖死档。
    • 增加了与重力翻转箭头和水的碰撞处理程序。
    • objPlayerKiller的碰撞处理被转移到步结束事件中。
    • 绘制事件中,不在绘制自身时进行y坐标修正,因为GameMaker Studio 2没有这个bug。
    • 绘制事件中,绘制可能存在的蝴蝶结。
  • 删除了物体:objBow,因为蝴蝶结的新显示方式不需要它。
  • 修改了物体:objBullet。现在它在0号用户事件中处理与存档点和按钮的碰撞。这个事件由objPlayer-Step中的一段程序触发。
  • 修改了物体:objBlockInvis。现在它的名称是objHiddenBlock,精灵是sprHiddenBlock
  • 修改了物体:objBlockFake。现在它的名称是objFakeBlock,精灵是sprFakeBlock
  • 修改了物体:objBossBlock。现在它的精灵是sprBossBlock
  • 修改了物体:objMovingPlatform, objMovingPlatformNoBounce, objBlockRise, objBlockFall。现在它们的名称分别是objPlatform, objPlatformNoBounce, objRiseBlock, objFallBlock,在block文件夹中。
  • 删除了物体文件夹slopes及其所有子资源,因为它们很少被使用。
  • 删除了物体:objPlatform,因为它是无用的。现在objMovingPlatform没有父物体。
  • 重命名了物体:objCherryBounceRandom。现在它的名称是objBounceRandomSpeedCherry
  • 删除了物体:objCherryBounceLat, objCherryBounceVert。因为它们没有被使用。
  • 修改了物体:objCherryEnemyTest。现在它的名称是objCherryBoss,在killer/boss/cherry文件夹中。
  • 删除了物体:objCherryEnemyTest,因为它没有被使用。
  • 增加了物体:objButtonDown, objButtonRight, objButtonUp,分别代表朝下、朝右、朝上的按钮。objButtonDown实现了objTriggerButton的功能,objButtonRightobjButtonUp的父物体是objButtonDown
  • 修改了物体:objTriggerButton。现在它的名称是objButtonLeft,父物体是objButtonDown,没有事件。
  • 修改了物体:objKillerTrigger。现在它的名称是objMoveTrigger,精灵是sprMoveTrigger,只能用水平和竖直速度设置其实例的启动方式,不能用速度和方向设置。
  • 删除了物体:objSpikeTriggerUp, objSpikeTriggerRight, objSpikeTriggerLeft, objSpikeTriggerDown, objCherryTrigger,因为它们的功能可以同样地被objKillerTrigger实现。
  • 删除了物体:objWater,因为它很少被使用。
  • 修改了物体:objWater2。现在它的名称是objWater,没有碰撞事件。它的功能由objPlayer-Step中的一段程序代替实现,以修复某个bug。
  • 修改了物体:objWater3。现在它的名称是objRefreshWater,没有碰撞事件。它的功能由objPlayer-Step中的一段程序代替实现,以修复某个bug。
  • 重命名了物体:objWalljumpR。现在它的名称是objVineRight
  • 重命名了物体:objWalljumpL。现在它的名称是objVineLeft
  • 修改了物体:objGravityUpobjGravityDown。现在它们没有事件。它们的功能由objPlayer-Step中的一段程序代替实现,以修复某个bug。
  • 修改了物体:objSave。现在它没有与objPlayerobjBullet的碰撞事件,因为这些功能已经被objBullet代替实现。
  • 重命名了物体:objSaveVHardobjSaveVHardFlip。现在它们的名称是objSaveVeryHardobjSaveVeryHardFlip
  • 修改了物体:objRoomChanger
    • 增加了变量warpPosition。布尔型,代表是否按坐标进行转移。原先的warpX == 0 && warpY == 0判断方式已经被代替。
  • 重命名了物体:objOutsideRoomChanger。现在它的名称是objBorderWarp
  • 删除了物体:objSecretIndicatorobjBossIndicator,因为它们没有被使用。
  • 删除了房间rSampleRoomrTest
  • 增加了图块集:tsAllTiles,代表所有砖图块。它是启动了自动贴图的。
  • 在不影响语义的前提下,修改了某些代码的写法。如使用array_copy代替循环语句来复制数组,使用?:运算符代替短小的if..else语句进行选择等。
  • 在所有绘制事件动作执行后恢复默认绘制参数,即:黑色,完全不透明,文字左、上对齐等。
  • 其他无关紧要的修改。

版本1.0.1

此版本可能不稳定
修复了一些bug。

版本特性

  • 修正了无法设置无限跳和调试无限跳的bug。
  • 修正了传送门选择难度无法正常进行使用的bug。
  • 修正了无法正常返回标题界面的bug。
  • 修正了Kid背靠砖时转身卡砖的bug。
  • 修正了子弹碰板子不消失的bug。
  • 实现了蝴蝶结延迟。

修改清单

  • 修改脚本:scrPlayer
    • player_jump函数中添加了无限跳和调试无限跳检查部分。
    • 添加player_mirror函数,实现转身。
  • 修改脚本:scrInitializing。用宏MEDIUM, HARD, VERY_HARD, IMPOSSIBLE代替了枚举Difficulty,并在objSave*, objPlayer, objWarpStart各个实例, objWarpAutosaveNext, objDifficultyMenu中所有使用处做了相应修改。
  • 修改脚本:scrInitializing, scrGame。前者中的立即执行代码被移动到后者中的game_init函数中。
  • 修改物体:objWorld。在游戏开始事件添加执行game_init函数的代码。
  • 修改物体:objPlayer
    • 在步事件修改代码,使用函数player_mirror而非直接设置image_xscale实现转身。
    • 在绘制事件添加代码,实现蝴蝶结延迟。
  • 修改物体:objBullet。增加了和objPlatform的碰撞事件,在其中执行摧毁自身的动作。