All Projects → darkf → Darkfo

darkf / Darkfo

Licence: apache-2.0
DarkFO, a post-nuclear RPG remake (of Fallout 2)

Programming Languages

javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to Darkfo

Corona
Solar2D Game Engine main repository (ex Corona SDK)
Stars: ✭ 1,679 (+1440.37%)
Mutual labels:  game, game-engine
Hellspawner
The OpenDiablo2 toolset
Stars: ✭ 69 (-36.7%)
Mutual labels:  game, game-engine
Q3lite
Q3lite, an OpenGL ES port of Quake III Arena for embedded Linux systems.
Stars: ✭ 64 (-41.28%)
Mutual labels:  game, game-engine
Visualuieditor
基本electron跨平台,wcDocker的dock组件的开源UI编辑器
Stars: ✭ 50 (-54.13%)
Mutual labels:  game, game-engine
Starruler2 Source
4X Space Strategy game Star Ruler 2's open source distribution.
Stars: ✭ 1,267 (+1062.39%)
Mutual labels:  game, game-engine
Lamiae
Lamiae - A Most Prestigious RPG Engine/Simulator derived from Cube 2 (Sauerbraten) and friends
Stars: ✭ 57 (-47.71%)
Mutual labels:  game, game-engine
Pharaohstroy
A maplestory IDE which can develop the multi-platform maplestory game
Stars: ✭ 69 (-36.7%)
Mutual labels:  game, game-engine
Dodgem
A Simple Multiplayer Game, built with Mage Game Engine.
Stars: ✭ 12 (-88.99%)
Mutual labels:  game, game-engine
Novelrt
A cross-platform 2D game engine accompanied by a strong toolset for visual novels.
Stars: ✭ 81 (-25.69%)
Mutual labels:  game, game-engine
Mage
Magic Another Game Engine
Stars: ✭ 1,180 (+982.57%)
Mutual labels:  game, game-engine
Racingworld
💥 A multiplayer online 3D game about racing 💥
Stars: ✭ 50 (-54.13%)
Mutual labels:  game, game-engine
Opendiablo2
An open source re-implementation of Diablo 2
Stars: ✭ 10,057 (+9126.61%)
Mutual labels:  game, game-engine
Cosmo Engine
A new game engine to play the MS-DOS game "Cosmo's Cosmic Adventure" on modern systems
Stars: ✭ 38 (-65.14%)
Mutual labels:  game, game-engine
Ksframework
QQ Group:538722494,KSFramework = KEngine + SLua(or xLua) , Unity3D Framework/Toolsets focus on hot reload
Stars: ✭ 1,119 (+926.61%)
Mutual labels:  game, game-engine
Intrinsic
Intrinsic is a Vulkan based cross-platform game and rendering engine. The project is currently in an early stage of development.
Stars: ✭ 984 (+802.75%)
Mutual labels:  game, game-engine
Vulkust
An engine for Vulkan in Rust, tries to implement modern graphic features. (suspended for now)
Stars: ✭ 64 (-41.28%)
Mutual labels:  game, game-engine
Korge
KorGE Game Engine. Multiplatform Kotlin Game Engine
Stars: ✭ 780 (+615.6%)
Mutual labels:  game, game-engine
Lantern
(DEPRECATED, SEE README)
Stars: ✭ 12 (-88.99%)
Mutual labels:  game, game-engine
Engine
C++11 and SDL2 lightweight 2d game framework
Stars: ✭ 71 (-34.86%)
Mutual labels:  game, game-engine
Openra
Open Source real-time strategy game engine for early Westwood games such as Command & Conquer: Red Alert written in C# using SDL and OpenGL. Runs on Windows, Linux, *BSD and Mac OS X.
Stars: ✭ 10,220 (+9276.15%)
Mutual labels:  game, game-engine

DarkFO

A post-nuclear RPG remake

This is a modern reimplementation of the engine of the video game Fallout 2, as well as a personal research project into the feasibility of doing such.

It is written primarily in TypeScript and Python, and targets a modern (HTML 5) Web browser.

Status

DarkFO is not a complete remake at this time. A lot of core functionality works, but major parts are missing or need work.

If you're looking for documentation on how Fallout 2 works, or documentation on certain file formats, or just want some tools to work with them, this project will be useful to you as well.

Here is a very rough list of what is known to work:

  • Map loading
  • Walking, running
  • Talking to NPCs
  • Bartering
  • Some quests (a lot of the scripting works, majors quests can be completed)
  • Some party members
  • Some skills (lockpicking and repair, and some passive skills)
  • Sound (scripted sound effects, music; not hardcoded sound effects, yet)

Some features are more middle ground:

  • Combat works at an extremely basic level but not to a great degree (only the SMG and spear is really tested, you cannot swap ammo, etc.)
  • No equippable armor
  • The world map is rough and buggy, and on the area screens entrances are misplaced
  • Random encounters work, but not all of the setups are implemented
  • Lighting works, but has some minor bugs and inaccuracies. It is also particularly slow, especially outside of the WebGL backend.
  • Saving and loading is at an alpha stage: it works to a basic degree, but is missing some features and is not tested. As such, consider it experimental.
  • Some animations are off, particularly related to combat
  • Leveling up (including XP, leveling stats/skills, etc) partially works

Some features are not implemented at all:

  • The PipBoy map

and other minor features here and there.

If you'd like to contribute, those might be major parts to look into.

Installation

To use this, you'll need a few things:

  • A copy of Fallout 2 (already installed)

  • Python 2.7

  • Pillow (just pip install pillow)

  • NumPy (Windows binaries available here.)

  • The TypeScript compiler, installed via npm install -g typescript (you'll need node.js).

You'll need an HTTP server to run (despite being all static content) due to the way browsers sandbox requests. If you're comfortable with setting up nginx, lighttpd, or Apache, go for that. If not, a simple way is to use Python:

  • Python 2: python -m SimpleHTTPServer (Python 2 is already required anyway)
  • Python 3: python -m http.server

Alternatively, Firefox can load directly from file://.

Once you've got all that, you can start trying it out.

Open a command prompt inside the DarkFO directory, and then run:

python setup.py path/to/Fallout2/installation/directory

This will take a few minutes, it's unpacking the game archives and converting relevant game data into a format DarkFO can use.

NOTE: You may need to use python2 instead, as some Linux distributions package python as Python 3. Run python --version to check!

Then run tsc to compile the source code.

Browse to http://localhost/play.html?artemple (or whatever port you're using). If all went well, it should begin the game. If not, check the JavaScript console for errors.

Review src/config.ts for engine options. Be sure to re-compile if you change them.

OPTIONAL: If you want sound, run python convertAudio.py. You'll need the acm2wav tool (you can get it from No Mutants Allowed).

FAQ

  • Q: Why TypeScript? Why a browser?

    A: Everyone has a browser: it's a portable platform for running code with more features than people expect. There are other projects that use native code already... and are already seeing segfaults. :)

    The project started out in JavaScript and was ported to TypeScript as it was continuing to grow. TypeScript strikes an excellent balance between useful and safe.

  • Q: But why Python?

    A: Python is actually quite fast when written well, despite many peoples' expectations. It is very elegant and allows me to write backend code like file parsers and exporters with tiny code, very few troubles, and that I know is portable and safe.

  • Q: Why do I need acm2wav for sound?

    A: Because it hasn't been ported to Python yet. If you're willing to contribute, give it a shot: the original Pascal source code is available online.

    Additionally, FFmpeg might be able to transcode ACM audio, so give that a shot. (See #30.)

  • Q: Why convert all assets up front, why not load them directly?

    A: Because it would require more processing time to load them each time they're needed rather than having them already in a sane, modern format.

    By converting, for example, FRMs (a proprietary Interplay format) to PNGs (a ubiquitous, open modern format) we allow normal browsers or image viewers to open them, as well as edit them -- a huge win for modders. Other games or tools could take advantage of the new formats as well.

  • Q: Why do this at all?

    A: Why not? It's a fun project, and I love Fallout. Fallout 1 and 2 do not run particularly well on modern machines, even with engine hacks. They're also hard to mod -- I'd like to change that.

License

DarkFO is licensed under the terms of the Apache 2 license. See LICENSE.txt for the full license text.

Contributing

Contributions are welcome!

Testing is more than welcome: if you have issues running DarkFO, or if you find bugs, glitches, or other inaccuracies, please don't hesitate to file an issue on GitHub and/or contact the developers!

To contribute code, simply submit a pull request with your changes. Take care to write sensible commit messages, and if you want to change major parts of the code, please discuss it with other developers first (see the Contact section below). I apologize in advance for any injury sustained while reading the code. :)

Thanks!

Contact

If you have an issue, please file it in the GitHub issue tracker.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].