Giter Club home page Giter Club logo

falltergeist's Introduction

Falltergeist Build Status Version Discord

Opensource crossplatform Fallout 2™ engine writen in C++ and SDL. https://falltergeist.org/

Dependencies

Compilation

CMake options:

  • USE_CLANG_TIDY - if set then clang-tidy checks are enabled

Linux

cmake . && make

Linux (Debian/Ubuntu)

sudo apt-get install  build-essential libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libglew-dev libglm-dev zlib1g-dev

cmake . && make

Windows (Visual Studio x64)

You could add dependencies manually but it is easier to use Conan.

First, set up your Conan profile to match your compiler or let conan autodetect your settings (conan profile new vs --detect and use --profile=vs when running conan install). Visual Studio 2019 profile should look like this:

[settings]
os=Windows
os_build=Windows
arch=x86_64
arch_build=x86_64
compiler=Visual Studio
compiler.version=16
build_type=Debug

If using VS2017 or building on Release then use: compiler.version=15, or build_type=Release respectively.

To be able to download conan SDL2 packages, further configure your conan instance by introducing a new remote:

conan remote add bincrafters https://bincrafters.jfrog.io/artifactory/api/conan/public-conan

Then open 'Developer PowerShell for Visual Studio' and execute the following commands:

mkdir build
cd build
conan install .. --build missing
cmake .. -G "Visual Studio 16 2019" -A x64
devenv /build Debug falltergeist.sln

Or open and build the solution in Visual Studio instead of running the devenv command. If using VS2017 or building on Release then use: “Visual Studio 15 2017 Win64”, or devenv /build Debug respectively.

Running

Put master.dat and critter.dat files into the falltergeist data directory, that is

  • ~/.local/share/falltergeist/ or /usr/local/share/falltergeist (for global installs) on Linux,
  • ~/Library/Application Support/falltergeist on OS X,
  • %APPDATA%/falltergeist on Windows,

or mount CD-ROM with original game, then run ./falltergeist on *nix or .\bin\falltergeist.exe on Windows.

Development roadmap

This is a pretty highlevel roadmap to get to a playable game. The idea behind it is to step by step get closer to the full game.

  • Worldmap support
  • Elevators
  • NPCs
  • Combat AI
  • Full scripting support
  • Skills

falltergeist's People

Contributors

667bdrm avatar adamfx990 avatar adamkewley avatar aleksvor avatar alexeevdv avatar cynicrus avatar dreamer-dead avatar drizt avatar eirnym avatar gungravekoga avatar hhirsch avatar ids1024 avatar isage avatar janisozaur avatar jansimek avatar kozintsev avatar mixaill avatar mrcool92 avatar neuro-sys avatar phobos2077 avatar poxu avatar rohit-n avatar s7jones avatar sandsmark avatar shsorbom avatar smaximov avatar teep0 avatar vlad-saritasa avatar vvbalashoff avatar zervox avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

falltergeist's Issues

Missing information to fill InventoryState

Отсутствует следующая информация для полноценного заполнения InventoryState:

  1. Информация о одетой броне (нужна для отображения иконки в поле ARMOR, а также её характеристики используются для получения процентов Damage Resistance).
  2. Информация о всех предметах в "рюкзаке" -- нужны для отображения предметов и прокрутки их.
  3. Информация об оружии в правой, левой руках:
    3.1. Для отображения его иконки.
    3.2. Характеристики этого оружия -- его damge, range, ammo текущий/max, тип патронов.
    3.3. Если оружие отсутствует в руке, нужна сила damage (руки-ноги)
  4. Вес текущего барахла / вес максимально возможный переносимый.

charcter creator. missing line

Отсутствует линия, подчёркивающая название перка и отделяющаяя его описание

Missing text in NewGameState

fallout_2_ pc _07
Добавить вывод недостающих параметров персонажа слева от биографии

Inventory up/down arrows smart disable

В оригинале если нельзя осуществлять прокрутку инвентаря вниз/вверх, вместо жёлтых стрелок (сейчас это тип TYPE_INVENTORY_UP_ARROW и TYPE_INVENTORY_DOWN_ARROW) подставляется ненажимая кнопка с серой стрелкой (invupds.frm и invdnds.frm).
это отслеживается как при первом вызове инвентаря, так и динамически при прокрутке объектов.

map scroll works only for 640x480 area

Работает неправильно для любого разрешения, кроме исходного.
мышь отслеживается в 640x480

Create CritterDialogReviewState

Нужно создать класс CritterDialogReviewState по аналогии с InventoryState

Параметры стейта:
fullscreen = true
modal = true

Стейт должен центрироваться на экране при разрешении больше 640х480.
Расположить элементы интрефейса (кнопки\надписи) без обработки событий взаимодействия с ними (таких как клик).
Кроме одной. При нажатии соответствующей кнопки должен вызываться метод
Game::getInstance()->popState();
для возвращения в предыдущее состояние.

Изображения с элементами интерфейса нужно найти в art/intrface/*.frm
Для этого можно воспользоваться софтинкой DAT Browser с сайта http://www.teamx.ru/site_arc/utils/index.html

Fix checkbox in SettingsState

Починить чекбокс в настройках чтобы он сохранял свое состояние

"DatFile::items() - wrong file size" when compiling with Clang

Latest git revision of Falltergeist throws this exception on startup on Mac OS X Mavericks:

[GAME] - Falltergeist 0.1.0 (Apple)
[GAME] - Opensource Fallout 2 game engine
Looking for Fallout data files
CD-ROM detection not supported
Searching in directory: /Users/jansimek/Development/falltergeist master.dat [NOT FOUND]
Searching in directory: /Users/jansimek/.falltergeist master.dat [FOUND]
Searching in directory: /Users/jansimek/.falltergeist critter.dat [FOUND]
[VIDEO] - SDL_Init - [OK]
[VIDEO] - SDL_SetVideoMode 640x480x32 - [OK]
DatFile::items() - wrong file size

For some reason unix macro is not recognized by Clang on my OS X, so I had to add this in src/Engine/CrossPlatform.cpp:

#elif defined(__unix__) || defined(__APPLE__)
    #include <unistd.h>
#endif

Use C++11

Я так понимаю, ты собираешь проект с помощью gcc. Версия 4.8 поддерживает С++11 (надо только добавить ключ -std=c++11). Clang тоже поддерживает C++11. Visual Studio поддерживает только частично, но обещают сделать к новому году кажется. Кроме того под Windows проект прекрасно собирается с помощью mingw (gcc для Windows).
Использование C++11 существенно облегчит разработку, было бы здорово его включить.

Create screenshot feature

Create screenshot feature for SDLRenderer and OpenGLRenderer.
Screenshot file must be named %SDL_Ticks%.bmp

SettingsMenuState must be calculated using render size

Сейчас жёстко привязано к 640x480, в связи с этим на больших разрешениях вместо центрирования по экрану, сдвигается в левый верхний угол

SmallCounter widget

ss_aa0796c1f5fa4f4b3547cad5f0936bd7a0479816 1920x1080 1
Создать SmallCounter виджет расширяющий класс UI для отображения HealthPoints и ArmorClass. По аналогии с BigCounter На данный момент без анимации

Fix TextArea to show leading spaces

Необходимо исправить TextArea.cpp, чтобы в строках, которые начинаются с пробелов, эти пробелы не обрезались. Сейчас при формировании строк ВСЕГДА добавляются слова. Пробел словом не считается, потому алгоритм игнорирует его.

MainMenuState must be calculated using render size

Сейчас жёстко привязано к 640x480, в связи с этим на больших разрешениях вместо центрирования по экрану, сдвигается в левый верхний угол

Transparency of elements

Прозрачность некоторых элементов (в частности, при наложении шрифтов на панели) не полностью соответствует оригиналу

Доработка TextArea

src/UI/TextArea.cpp
Необходимо доработать класс TextArea таким образом, чтобы вывод текста осуществлялся согласно заданным в классе параметрам.

Список параметров которые должны учитываться в классе:
_horizontalAlign - выравнивание текста по горизонтали в границах виджета. Может принимать четыре значения: выравнивание по левому краю, по правому краю, по центру и по ширине. По-умолчанию выравнивание идет по левому краю. Сейчас работает только по левому краю

_verticalAlign - выравнивание текста по вертикали в границах виджета. Может принимать четыре значения: выравнивание по верхнему краю, по нижнему краю, по центру и по высоте. По-умолчанию выравнивание идет по верхнему краю. Сейчас работает выравнивание только по верхнему краю.

_width и _height - высота и ширина виджета. Если не заданы, то должны высчитываться из содержимого текста с учетом переноса строк и слов(wordWrap).

_backgroundColor - фоновый цвет виджета

_wordWrap - перенос по словам. Если установлено в true, то слова выходящие за границы виджета должны переноситься целиком, а не по буквам как сейчас.

Create CritterBarterState

Нужно создать класс CritterBarterState по аналогии с InventoryState

Параметры стейта:
fullscreen = false
modal = true

Стейт должен центрироваться горизонтально на экране при разрешении больше 640х480. По вертикальной оси должен быть прижат к нижнему краю.

Расположить элементы интрефейса (кнопки\надписи) без обработки событий взаимодействия с ними (таких как клик).
Кроме одной. При нажатии соответствующей кнопки должен вызываться метод
Game::getInstance()->popState();
для возвращения в предыдущее состояние.

Изображения с элементами интерфейса нужно найти в art/intrface/*.frm (в частности, barter.frm)
Для этого можно воспользоваться софтинкой DAT Browser с сайта http://www.teamx.ru/site_arc/utils/index.html

character creator. still image

При переключении perks, skills и пр. картинка остаётся неизменной. Текст меняется, а картинка -- нет.

SDL header include ( MinGW bug)

Если у тебя mingw не находит SDL добавленную в виде #include "SDL.h",
то это по идее должно быть вызвано тем, что Cmake не находит SDL и соответственно не инициализирует SDL_INCLUDE_DIR .
Такое будет, если не указана переменная окружения SDLDIR, но тогда cmake должен ругнуться, что SDL найти не получается и остановить сборку.
Если cmake работает нормально, а ошибка выскакивает только после команды mingw32-make, то это странно.
Есть вариант, что SDL находится, а include_directories(${SDL_INCLUDE_DIR}) отрабатывает с ошибкой.
Вставь пожалуйста перед include_directories(${SDL_INCLUDE_DIR})
строку message(${SDL_INCLUDE_DIR}) чтобы посмотреть, что в переменной.

Scripts Virtual Machine refactoring

У нас есть класс VM/VM.cpp. В нем сейчас вывод происходит через std::cout. Нужно переделать это на вызов функции CrossPlatform::debug(message, level). Level параметр должен в данном случае равняться константе DEBUG_SCRIPT

PlayerEditState must be calculated using render size

Сейчас жёстко привязано к 640x480, в связи с этим на больших разрешениях вместо центрирования по экрану, сдвигается в левый верхний угол

InventoryState

Отображать интерфейс инвентаря при нажатии на кнопку инвентаря на панели

TextArea height() and width() must return actual widget size

Эти методы должны возвращать вручную заданное значение(если оно было задано). В противном случае они должны возвращать реальную занятую виджетом высоту

ExitConfirmState

Когда находимся в локации, то при выборе в меню Exit или при нажатии F10. Нужно отображать окно подтверждения действия.

Create PipBoyState

Нужно создать класс PipBoyState по аналогии с InventoryState

Параметры стейта:
fullscreen = true
modal = true

Стейт должен центрироваться на экране при разрешении больше 640х480.
Расположить элементы интрефейса(кнопки\надписи) без обработки событий взаимодействия с ними(таких как клик)

Изображения с элементами интерфейса нужно найти в art/intrface/*.frm
Для этого можно воспользоваться софтинкой DAT Browser с сайта http://www.teamx.ru/site_arc/utils/index.html

hitPoints = 0 after start first location

При старте новой игры вне зависимости от того был выбран готовый персонаж или создан свой, hitPoints = 0.

SkillsState

Отображать список умений при нажатии на красную кнопку SkilldexState на панели

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.