同一款游戏要同时上 Steam 和 Epic,两边的 SDK、插件、部分逻辑都不一样。最干净的做法是拆成两个独立的 game project,但移植项目往往没有这个自由度,只能在一份工程里做兼容——这篇记录这套兼容方案怎么落地。
三个拆分点
1. 用宏拆分逻辑代码。 给 Steam / Epic 各自的逻辑加编译宏区分。
一个坑:不要把这个宏定义写在 Game.Build.cs 里,然后又在引擎工程里用它。一旦引擎代码依赖了定义在 game 侧的宏,引擎工程就没法脱离 game 工程单独编译了。宏的定义位置要和使用位置的模块边界对齐。