Game engines provide video game developers with a wide range of fundamental subsystems for creating games, such as 2D/3D graphics rendering, input device management, and audio playback. Developers often integrate these subsystems with other applications or extend them via plugins. To integrate or extend correctly, developers need a broad system architectural understanding. However, architectural information is not always readily available and is often overlooked in this kind of system. In this work, we propose an approach for game engine architecture recovery and explore the architecture of three popular open-source game engines (Cocos2d-x, Godot, and Urho3D). We perform manual subsystem detection and use Moose, a platform for software analysis, to generate architectural models. With these models, we answer the following questions: Which subsystems are present in game engines? Which subsystems are more often coupled with one another? Why are these subsystems coupled with each other? Results show that the platform independence, resource management, world editor, and core subsystems are frequently included by others and therefore act as foundations for the game engines. Furthermore, we show that, by applying our approach, game engine developers can understand whether subsystems are related and divide responsibilities. They can also assess whether relationships among subsystems are appropriate for the game engine.
翻译:游戏引擎为游戏游戏开发者提供了广泛的创建游戏的基本子系统, 比如 2D/3D 图形显示、 输入设备管理、 音频播放。 开发者经常将这些子系统与其他应用程序整合起来, 或者通过插件扩展这些子系统。 要正确整合或扩展, 开发者需要广泛的系统建筑理解。 然而, 建筑信息并不总是容易获得, 并且往往在这种系统中被忽略。 在这项工作中, 我们建议一种游戏引擎结构恢复的方法, 并探索三种流行的开放源游戏引擎( Cocos2d-x、 Godot 和 Urho3D) 的架构。 我们执行人工子系统检测, 并使用软件分析平台Moose, 来生成建筑模型。 我们用这些模型回答以下问题: 游戏引擎中存在哪些子系统? 哪个子系统更经常相互结合? 为什么这些子系统相互结合? 结果显示平台独立、 资源管理、 世界编辑和核心子系统经常被其他人包括, 并因此成为游戏引擎的基金会。 此外, 我们通过应用我们的方法, 游戏引擎开发者可以理解子系统是否相关关系和分子系统。</s>