Many academic institutions are turning to free and accessible gaming platforms such as Unreal Engine and Unity for research and educational purposes. In the Human Factors Group at the University of Michigan Transportation Research Institute (UMTRI), a multidisciplinary team of 19 students is developing an Unreal Engine-based driving simulator as a research tool to investigate the difficulty of driving roads, among other purposes. For those unfamiliar, Unreal Engine is a real-time 3D development platform that provides visual programming via its Blueprint system. Development on Unreal Engine can be done with C++ as well, but that was not commonly the case for this team.
Throughout the course of the project, five significant documentation-related pain points were identified: (1) a lack of consistent documentation formatting and guidelines, (2) a lack of structure to keep information searchable and accessible, (3) code fragmentation and redundant logic, (4) a steep learning curve for new contributors, and (5) debugging inefficiencies in Blueprint environments. To address these pain points, the team initiated a three-week development freeze and constructed documentation guidelines tailored to Unreal Engine’s Blueprint graphical programming framework.
The resulting guidelines emphasize (1) consistent naming conventions (e.g., forbidden characters, conventions for Boolean and non-Boolean variables), (2) clear flow of Blueprint logic diagrams (e.g., no spaghetti code, align wires and not nodes, provide return nodes), (3) rules for commenting on nodes (including formatting and where they should be provided) and code blocks (cluster of nodes), and (4) format requirements for guidelines. To aid in understanding the guidelines, sample screenshots, and the complete set of guidelines are provided in the appendix. This material should complement the Blueprint Best Practices [1].
Since implementation, the team's productivity has approximately doubled, developer frustration has been reduced, and the onboarding time of new members has been cut in half.