将两款 1996 年 Bethesda 射击游戏移植到 Godot 4
A Godot 4 port of two 1996 Bethesda shooters

原始链接: https://github.com/nemo22/skynet-godot

这个 Godot 4 移植版忠实还原了 1996 年 Bethesda 推出的两款射击游戏《SkyNET》和《Future Shock》。开发者没有凭空猜测游戏机制,而是通过对原版 DOS 可执行文件进行逆向工程,确保游戏玩法、AI、物理效果和任务脚本与原版完全一致。 该引擎可在运行时解码原始资产(BSA 存档、高度图、纹理和音乐),这意味着用户需要自行提供游戏文件。在保留地道的 DOS 时代视觉效果的同时,该移植版还加入了动态光照、边缘平滑和灵活渲染比例等现代增强功能。主要特性包括: * **完整战役与多人模式:** 包含全部八个任务、任务简报、原始载具操控,以及支持机器人的局域网死斗模式。 * **广泛的兼容性:** 支持《SkyNET》和《Future Shock》的数据,并提供针对 Windows、Linux、macOS 和 Android 的导出预设。 * **辅助功能:** 包含用于调试和自动化测试的高级命令行参数。 本项目是一项开源(GPLv3)的爱好者劳动成果,不包含任何受版权保护的数据。若要进行游戏,只需将引擎指向您现有的游戏安装目录即可。请访问官方发布页面下载适配您平台的构建版本。

Hacker News | 最新 | 过往 | 评论 | 提问 | 展示 | 招聘 | 投稿 | 登录 两个 1996 年 Bethesda 射击游戏的 Godot 4 移植版 (github.com/nemo22) nemo22 发布于 1 小时前 | 9 点 | 隐藏 | 过往 | 收藏 | 1 条评论 Sweepline 58 分钟前 | 下一条 [–] 直接从 DOS 可执行文件中读取游戏规则,而不是去猜测,这似乎是能确保冷门交互逻辑保持原汁原味的关键细节。 回复 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请加入 YC | 联系 搜索:
相关文章

原文

A Godot 4 port of the two 1996 XnGine shooters by Bethesda Softworks — SkyNET and Future Shock. The engine is rewritten in Godot; the game itself is read from your own copy of the original data: the BSA archives, the WLD heightmaps, the TEXTURE files, the maps, the sounds and the HMI music, all decoded at run time.

Nothing from the original games is included here. You need the games.

Out of the canyon, mission 1

Mission one: out of the canyon, and the complex comes into view.

Left to right, top to bottom: mission 1's canyon under the moon; the ruined city; the Cyberdyne building; the jeep with its own HUD; the HK flying the highway with the convoy ahead; a deathmatch seen through the TERMINATOR class's machine vision; the network setup screen, whose left box turns the body you will play as; and the render settings, cut out of the original dialog art.

  • The campaign — all eight missions, the DOS mission scripts, the objective counter, briefings with the original art and voice lines.
  • The world as the original drew it: DOS heightmap terrain, the entity meshes, billboard sprites, palette-accurate textures, the night sky with the moon, the dusk dome on missions 5–8.
  • The rules read out of the DOS executable, not guessed: door and lift movers, proximity gates and chains, destructibles with their damage stages, teleports, water levels that rise and fall, spawn points, the jeep's and the HK's handling, enemy AI states and their animation scripts, weapon cadences and ammo pools, cheats.
  • Vehicles — the jeep and the HK, with the DOS cockpits.
  • Deathmatch over LAN with bots, HUMAN and TERMINATOR classes, machine vision and the motion detector, the original arenas.
  • Looks the original could not manage, each off by default so the port still starts as DOS drew it: dynamic lights from the gunfire, the explosions and the rounds in flight (which also lights the street lamps the DOS renderer only drew as bright pixels — 93 of them on the highway map), edge smoothing, smooth texture filtering, the game's own 640x480 HUD and weapon art, a brightness dial, and a render scale that can go above the window.
  • Save and load, the pause menu, the DOS options screens, the automap, statistics.
  • Future Shock data works too: point the game at that install and it plays those maps and menus.

There is also an Android export preset. It builds and runs, but it gets far less testing than the desktop builds.

  1. Download the build for your platform from the Releases page.
  2. Start it. On the first run it asks where the original games are installed:
    • the SkyNET folder — required. Point it either at the install root or at its GAMEDATA directory; both work. It is recognised by MDMDMAP2.BSA.
    • the Future Shock folder — optional, recognised by MDMDMAPS.BSA. Give it and the menu can start that game as well.
  3. The first start converts the original data into a cache next to it. That takes a couple of minutes and only happens once.

Both paths are remembered, so you are asked once. Start the game with --setup to point it somewhere else later.

Platform notes:

  • Windows — a single SkyNET.exe.
  • Linuxchmod +x SkyNET.x86_64 after downloading.
  • macOS — the .app inside the zip is not signed (it is built on Windows), so Gatekeeper will refuse it: open it once with right-click → Open, or clear the quarantine flag with xattr -dr com.apple.quarantine "SkyNET Godot Port.app".
Option What it does
--gamedata=DIR use this data directory for this run
--setup ask for the game folders again
--map=MAP.230 start straight on a map, no menu
--host=MAP.605 --bots=3 host a deathmatch at once
--join=ADDRESS[:PORT] join one
--import build the asset cache and quit
--solve[=SECONDS] let the solver play the mission and report
--screenshot=FILE save a frame and quit (for automation)

Godot 4.7.2 (standard build, no C#). Open godot_project/ in the editor, or export from the command line:

godot --headless --path godot_project --export-release "Windows Desktop" build/windows/SkyNET.exe
godot --headless --path godot_project --export-release "Linux"          build/linux/SkyNET.x86_64
godot --headless --path godot_project --export-release "macOS"          build/macos/SkyNET.zip

The project has three headless test suites that run the real game code:

godot --headless --path godot_project res://scenes/action_smoke_test.tscn
godot --headless --path godot_project res://scenes/game_smoke_test.tscn
godot --headless --path godot_project res://scenes/net_smoke_test.tscn

Every rule that could be measured was taken from the original DOS build (SkyNET v1.01) rather than reinvented: the action handler table, the mover families, the AI state handlers, the weapon table, the mission tables, the water and border-box code. Where the port and the original disagreed, the disassembly decided. The test suites above exist so those findings stay fixed.

Copyright © 2026 Marek Draškaba.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3 as published by the Free Software Foundation. It is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY — without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE for the full text.

The licence covers this port's own code. It says nothing about the original games' data, which belongs to its rights holders and is not distributed here.

A fan project, not affiliated with or endorsed by Bethesda Softworks or any rights holder of the original games. All trademarks belong to their owners. No original game content is distributed here — the port only reads data you already own.

联系我们 contact @ memedata.com