cover of episode WipEout with Dominic Szablewski

WipEout with Dominic Szablewski

2024/12/11
logo of podcast Software Engineering Daily

Software Engineering Daily

People
D
Dominic Szablewski
J
Joe Nash
Topics
Dominic Szablewski: 我从孩提时代起就对《Wipeout》这款游戏充满热情,这促使我踏上了漫长的游戏开发旅程。起初,我使用Quick Basic在486电脑上编写游戏,后来转向了更复杂的Windows游戏开发,最终在Steve Jobs宣布iPhone不支持Flash之后,我看到了HTML5游戏引擎的机遇,并取得了一定的成功。在2022年《Wipeout》源代码泄露后,我决定对这款经典游戏进行重写,目标平台包括Windows、Linux、macOS和WASM。重写过程中,我面临着诸多挑战,例如原始代码的混乱、不同平台版本和控制器的差异、以及PAL和NTSC制式的差异。我选择使用C语言进行重写,因为它能够让我更深入地理解程序运行的细节,并享受编程过程中的挑战。在渲染方面,我最初使用了排序表机制来处理PlayStation缺乏Z缓冲区的问题,后来将其替换为更现代的三角形渲染方法。在内存管理方面,我使用了碰撞分配器来避免显式内存分配和释放,这对于《Wipeout》这种具有明显场景的游戏非常有效。尽管重写版本已经发布,但我仍然计划修复一些物理错误,并改进图形效果,例如在隧道中添加灯光效果和更宽容的碰撞响应。我的梦想是能够得到索尼的资助,将重写版本打磨成一个更加精良的作品。 Joe Nash: 本次访谈主要围绕Dominic Szablewski对经典PlayStation游戏《Wipeout》的重制项目展开。Dominic Szablewski是一位经验丰富的工程师、游戏开发者和黑客,他参与开发了Voidcall、Quake VR和Q1K3等项目。此次重制项目基于2022年泄露的《Wipeout》源代码,Dominic Szablewski几乎从零开始重写了游戏,使其能够在Windows、Linux、macOS和WASM等多个平台上运行。在访谈中,我们探讨了Dominic Szablewski的游戏开发历程、重制项目的动机、以及重写过程中遇到的技术挑战和解决方案。我们还讨论了原始源代码的质量、NTSC和PAL制式的差异、PlayStation架构对游戏开发的影响、以及Dominic Szablewski在内存管理和渲染方面所做的创新。此外,我们还展望了未来,探讨了Dominic Szablewski对重制项目未来的规划以及他对其他游戏开发项目的展望。

Deep Dive

Key Insights

Why did Dominic Szablewski decide to rewrite Wipeout in C instead of JavaScript?

Dominic enjoys writing C in his free time because it provides a more hands-on, detailed programming experience compared to high-level languages like JavaScript. C forces him to think about all the details, which he finds enjoyable and challenging.

What was the state of the leaked Wipeout source code when Dominic first saw it?

The source code was described as a mess, with global variables scattered across files, ad-hoc additions for different platforms, and a lack of abstraction. However, despite its poor structure, the game was playable and never crashed on the PlayStation.

What was the main technical difference between the NTSC and PAL versions of Wipeout?

The primary difference was the frame rate. NTSC ran at 60 Hz, while PAL ran at 50 Hz. This required adjustments in the game's physics and rendering to ensure smooth gameplay across different regions.

How did Dominic handle the PlayStation's lack of a Z-buffer in the Wipeout rewrite?

Dominic implemented a modern rendering approach that abstracts the renderer, allowing for easier porting to different platforms. He replaced the PlayStation's ordering table with a more modern triangle function, making the rendering process more efficient.

What was Dominic's approach to memory management in the Wipeout rewrite?

Dominic used a bump allocator, which allocates memory linearly and resets the pointer when a scene or level ends. This approach simplifies memory management by avoiding the need to free individual objects, making it ideal for games with distinct scenes like Wipeout.

What challenges did Dominic face when porting Wipeout to WebAssembly?

The main challenge was ensuring the game could run within the constraints of the web, where infinite loops are not allowed. Dominic had to refactor the code to use callbacks like requestAnimationFrame, allowing the browser to regain control between frames.

What future improvements does Dominic plan for the Wipeout rewrite?

Dominic wants to fix a physics bug that occurs at high frame rates, add graphical effects like lighting on ships, and make the collision response more forgiving. He also dreams of a polished remaster if Sony were to commission it.

What other projects is Dominic working on besides the Wipeout rewrite?

Dominic is currently rewriting his old JavaScript game engine, Impact.js, in C. He has already ported one of his games, Biolab Disaster, to run on the new C engine, which can compile to WebAssembly.

Chapters
Dominic Szablewski, a game developer with a passion for retro gaming, embarked on a project to rewrite the classic PlayStation game Wipeout. He discusses his game development background, his early experiences with Wipeout, and the game's cultural impact.
  • Dominic's early game development experiences
  • Wipeout's cultural significance
  • The game's unique features: fast gameplay, striking art direction, and licensed electronic music

Shownotes Transcript

WipEout is a futuristic racing game that was originally released in 1995 for the PlayStation. The game fused fast gameplay, striking art direction, and licensed electronic music. It was a cultural phenomenon and an early showcase for 3D graphics in console gaming.

Dominic Szablewski) is an engineer, game developer and hacker who has released projects such as Voidcall, Quake VR, and Q1K3 which is a 13 kilobyte version of Quake written in JavaScript.

A version of the WipEout source code was leaked in 2022 and Dominic created a nearly complete rewrite of the game that compiles to Windows, Linux, macOS and WASM.

Dominic joins the podcast to talk about the project.

)

Joe Nash is a developer, educator, and award-winning community builder, who has worked at companies including GitHub, Twilio, Unity, and PayPal. Joe got his start in software development by creating mods and running servers for Garry’s Mod, and game development remains his favorite way to experience and explore new technologies and concepts.

Please click here to see the transcript of this episode.)

Sponsorship inquiries: [email protected])

The post WipEout with Dominic Szablewski) appeared first on Software Engineering Daily).