Perimeter is a real-time strategy video game with unique gameplay elements such as terraforming deformable terrain, morphing units, energy network, protective shield and surreal worlds.

Related tags

Game Perimeter
Overview

Периметр | Perimeter

Perimeter

Linux Build Windows MSVC amd64 Build Windows MSVC amd64 Build Windows MSYS amd64 Build Windows MSYS amd64 Build

Join the chat at https://t.me/PerimeterGame

About

Perimeter is a real-time strategy video game with unique gameplay elements such as terraforming deformable terrain, morphing units, energy network, protective shield and surreal worlds.

Game needs assets/resources (3D models, textures, sounds, texts, configs, etc.) to run which can be obtained from purchased games in physical copies or digital stores.

Some parts may still need fixing or be experimental, expect some unexpected behavior, artifacts, bugs or crashes.

Issues for feature requests, suggestions, propositions, bugs, pull requests and other contributions are welcomed.

Лицензией | License

© ООО "КД ВИЖЕН" (Калининград) | © LLC "KD VISION" (Kaliningrad)

Весь код, за исключением сторонних библиотек, публикуется под лицензией GPLv3. Код сторонних библиотек (где указана иная лицензия) публикуется под лицензией этих библиотек.

The whole code, except 3rd-party libraries, is published under the GPLv3 license. Code of 3rd-party libraries (where another license is specified) is published under the license of these libraries.)

Compiling and installing

There is instructions available in:

English

Enhancements from original game

  • Bugfixes
  • Right click on morph units to request basic units required
  • Automatic game assets searching in these paths order:
    • Path from content= command argument
    • Linux: $HOME/.local/share/KD Vision/Perimeter/Content
    • Executable path
    • Windows: %AppData%\Roaming\KD Vision\Perimeter\Content
    • Previous used content stored in settings
  • Addons system that overlay files in original resources without altering them:
    • Example: file placed in Addons/AddonName/Resource/Icons/logo.tga will replace usage of Resource/Icons/logo.tga file.
    • Uses may include adding custom textures, models, resolutions, maps, scripts...
    • Perimeter ET Scripts and Resources can also be added as an addon to include extra units in main game
  • 64 bits support
  • Frame selection in battle/multiplayer menu and new colors
  • Experimental widescreen and custom resolutions support:
    • Game scans Resource/Icons/intf for XxY named folders such as 1920x1080 and adds as selectable option
    • Custom resolutions uses the height to load Resource/Icons/MainMenu/ and Resource/Icons/Portraits/ with folder name xY such as x1080 with above example. This allows reusing same height menu elements that still use 4:3 aspect ratio
    • Both .ini and resx= resy= command arguments accept custom resolutions, these will use the closest UI resolutions upscaled/centered to maintain visual consistency.
  • Experimental resizable windows (Enabled by default unless Graphics ResizableWindow in Perimeter.ini or resizablewindow= is 0)
  • Experimental support for Perimeter Emperor Testament

Repository contents

  • Source/ - Contains source code for the game and tools, most folders purpose can be guessed but some noteworthy:

    • Configurator - Unknown - GUI utility distributed with game that allows players to change language and other settings.
    • EasyMap - Unknown - Some kind of map demo.
    • EFFECTTOOL - Unknown - Seems to be a tool for editing effects
    • Exodus - Working - Contains helper code and libraries for porting game outside Windows/DirectX (unrelated to game Exodus faction)
    • Game/ - Working - Contains entry point for game in Runtime.cpp and other game related code.
      • Scripts - Working - Destination folder for generated hi/cppi files from .prm script files, these are compiled using XPrm
    • HT - Working - From "HyperTreading", contains some threading related stuff
    • Network - Windows - Contains high abstraction networking code which is used from other parts of game and also low level networking code used by higher abstraction networking code.
    • PlayOgg - Windows - Handles .ogg files loading and playing using a dedicated thread.
    • PluginMAX - Working - Handles game 3D models loading from M3D/L3D files. Name comes from "3ds Max" which was used originally for creating and exporting these models.
    • Render - Working - Provides graphics/rendering abstraction API, uses DirectX APIs under the hood which is provided by dxvk-native and Exodus outside Windows platform.
    • Scripts/ - Working - Contains .prm files that are compiled using XPrm tool, *Library files that are loaded by game at runtime which contain some game configs/data and Texts.tdb containing ingame texts. Some game copies may contain a copy of this folder.
      • Triggers - Trigger chains containing maps and AI triggers/behaviors.
    • Sound - Windows - Provides sound effects abstraction API, uses DirectSound under the hood.
    • Terra - Working - Seems to contain deformable terrain related code.
    • TriggerEditor - Unknown - A GUI providing library which could be called from debug builds of game to edit Trigger chains.
    • tx3d - Working - "Procedural 3D Texture Library", used by Terra and SCodeInterpreter
    • UserInterface/ - Working - Handles game UI such as main menu and submenus, ingame HUD and inputs.
      • SCodeInterpreter - Working - Interpreter for chain history files seen during main menu and campaign.
    • Util - Working - Utilities for game and other modules.
    • XPrm - Working - Tool for compiling .prm into declaration/implementation files such as hi/cppi.
    • XUtil - Working - Previously a separate library containing various X* named helpers for different projects, currently only the essential stuff for the game remain. Some removed stuff may be need to ported from original XUtil sources for the rest of tools.
  • XLibs.Net/ - Contains some library headers and binaries

  • MSDXSDK_02_06/ - DirectX SDK used by the game

Unknown - Not tested, not compilable with modern compilers nor available in more platforms than Windows.`

Windows - Compilable with modern compilers but not available in more platforms than Windows.

Working - Compilable with modern compilers and available in other platforms such as Windows and Linux.

Meta issue for tracking code modernization/porting progress: https://github.com/KD-lab-Open-Source/Perimeter/issues/58

Comments
  • Поддержка широкоэкранных мониторов (wide screen)

    Поддержка широкоэкранных мониторов (wide screen)

    Используя наработки Wide screen мода (текстуры, 3D модели главного меню) добавить в игру поддержку большинства разрешений экранов современных мониторов, с соотношением сторон 16:9 (aspect 1.77), 16:10 (1.60) и возможно ещё пары более экзотических соотношений сторон.

    widescreen render ui 
    opened by DeltaDesignRus 10
  • Изменить все упоминания Завета Императора

    Изменить все упоминания Завета Императора

    Сейчас в исходниках можно встретить различную информацию о версии игры (1.0.0.1, v2.0.0), а так же название игры.

    1. Нужно выловить и заменить все упоминания Perimeter: Emperor`s Testament просто на Perimeter.
    2. Удалить иконку Per_Add.ico, вместо неё использовать Perim_icon.ico
    3. Изменить версию игры. Последняя версия Геометрии войны была 1.0.0.3 (в главном меню игры отображалось v1.0.3). Пусть вопрос о версии остается дискуссионным, а я предлагаю вариант - версия 1.0.0.4 (v1.0.4),
    opened by DeltaDesignRus 9
  • Краш игры, если произвести много Буравчиков и атаковать последовательно одну точку несколькими Буравчиками

    Краш игры, если произвести много Буравчиков и атаковать последовательно одну точку несколькими Буравчиками

    Как правило делается так:

    1. Строим 3+ Буравчиков
    2. Приказываем атаковать точку
    3. Строим 3+ Буравчиков
    4. Приказываем атаковать ту же точку

    Как правило, неизвестно после нескольких итераций игра падает

    gameplay bug critical 
    opened by mamontov-cpp 4
  • WIP VS2019

    WIP VS2019

    closes: #25

    compiles, but doesn't link yet

    • custom round definition conflicts with standard round function
    • std::round returns float, not int, so cast is required
    • non-standard headers were used: hash_map (replaced by unordered_map), slist (replaced by list), typeinfo.h (replaced by typeinfo)
    • ambigious definitions between std:: and boost:: for is_pointer, is_array, remove_const
    • some old features were removed from C++: mem_fun (replaced by mem_fn), bind1st (replaced by bind), not1 (replaced by unary_negate)
    • export is now a reserved word
    opened by SSE4 3
  • Предложение: проверка соответствия AttributeLibrary

    Предложение: проверка соответствия AttributeLibrary

    Перед началом сетевого матча сверять у игроков хэш-сумму файла с атрибутами юнитов ./Scripts/AttributeLibrary, дабы из-за этого не возникала десинхронизация.

    gameplay network replay 
    opened by AkakiyAndrew 3
  • ogg audio playback

    ogg audio playback

    there is a playogg library we don't have any sources for. it's used to play ogg/vorbis music files. we have to replace it with our own cross-platform implementation. it could be based on open-source, free of charge solutions:

    sound 
    opened by SSE4 2
  • Убрать поддежку Bink Video (*.bik) видео, и добавить что-то современное, открытое

    Убрать поддежку Bink Video (*.bik) видео, и добавить что-то современное, открытое

    Сейчас в игре используется библиотека binkw32.dll (”Bink Video” video codec for games, developed by RAD Game Tools, Inc.). Предлагаю выкинуть её, а на его место поставить что-то открытое и современное. Чтобы была возможность использовать видео с распространенными кодеками и форматами.

    video 
    opened by DeltaDesignRus 2
  • Fix include's containing \ instead of /

    Fix include's containing \ instead of /

    This changes include paths to use the standard / in includes, also fixes some case inconsistencies.

    Files in resources (.rc) were excluded, they should be changed too?

    opened by IonAgorria 2
  • WIP CMake - fixes #13

    WIP CMake - fixes #13

    This a work in progress changes to add CMake support to allow more portable/flexible build system and potentially support more platforms in future.

    On Linux Boost dependency detection works, not sure about Windows.

    Needs to be tested in Windows, as code doesn't compile fully yet on other platforms.

    opened by IonAgorria 2
  • Ошибка:

    Ошибка: "cVisGeneric::ErrorMassage() Cannot load font: ...."

    Выставляя ултра-высокое разрешение в игре (например 4к), на некоторых машинах можно наблюдать ошибку, говорящую нам о том, что не были найдены файлы шрифтов. По какой-то причине создавая текстурные атласы шрифтов (растровых), лежащих в папке cache_font, не создаются некоторые файлы, в моем случае это был russian_fonts_aero-100.tga. Стоило создать вручную этот файл, путем копирования наибольшего предыдущего, и переименованием его в russian_fonts_aero-100.tga игра запустилась. Отлавливал события в ProcessMonitor.

    Частичное, костыльное решение можно найти в дневниках разработчиков widescreen мода поиском по тексту: "18.09.2020 Найден вариант обхода для запуска игры в 4к разрешении".

    https://psy-effects.ru/psychosphere/wiki/index.php/Perimeter_Widescreen#.D0.9B.D0.BE.D0.B3_.D1.80.D0.B0.D0.B7.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8_.D0.B8_.D0.BF.D0.BB.D0.B0.D0.BD.D1.8B

    widescreen bug ui critical 
    opened by DeltaDesignRus 2
  • update vcpkg with last release tag (2022.01.01) version

    update vcpkg with last release tag (2022.01.01) version

    update vcpkg with last release tag (2022.01.01) version: https://github.com/microsoft/vcpkg/releases/tag/2022.01.01 for "Visual Studio 17 2022" support

    opened by q4a 1
  • Help, unsure how to install

    Help, unsure how to install

    Hi, I've been struggling to compile the files to copy over my installation, I ran generate_msvc and it completed, creating another directory outside called vcpkg, however, the next step is to "Open generate solution file for project", I couldn't find a visual studio project file so I just opened the directory itself (perimeter-3.0.10) but that's it, I'm just lost at this point, can someone help guide me through this?

    opened by Praktical1 0
  • "Lost" Basic Robots (Transformation Bug)

    Much like Frames Bunch, Pioneer, and Organ, basic robots are vanishing from the Chain without a trace. Perhaps also ending up in the Net of Worlds.

    When you transform a squad, some basic robots can disappear along the way, leaving you with less than the number of robots you queued originally. In one of my attempts at replicating this bug I lost 61 of 100 robots.

    Steps:

    1. Build 1 laser lab and 4 officer factories
    2. Queue up 100 officers and set your squad's position close to the factories
    3. Once production starts, click transform into sniper as fast as you can until production finishes.
    4. Compare actual basic robot count with what was queued

    Set the AI to your team so you can replicate the bug without interference.

    opened by XxBigManxX 0
  • Auto-repair enabling-disabling for buildmasters

    Auto-repair enabling-disabling for buildmasters

    Currently buildmaster always try to repair buildings regardless of what player wants, sometimes resulting in heavy loss when energy is actually needed for something else. So it would be nice to be able to disable auto-repair for buildmasters. I guess current repair button in buildmaster UI can be re-purposed for this, since its currently pretty much useless. And i guess right clicks on damaged building should still trigger repair, to not force player to constantly switch auto-repair option state.

    opened by nrader95 0
  • The new building

    The new building "Connector".

    The idea is to add a new structure that will unite the power systems of players / bots of the same clan. The first player / bot puts his Connector next to the Connector of another player / bot, after which an iridescent thread of energy communication appears between them.

    opened by Re-Doctor 0
  • Add settings for minimap

    Add settings for minimap

    I suggest to add different settings for the minimap:

    • Background settings:
      • Disable/enable background
      • Color seturation settings for background
      • Opacity settings for background
    • Energy field settings:
      • Disable/enable energy field
      • Color seturation settings for energy field
      • Opacity settings for energy field
      • Allow customize color for enemy and friendly energy field
    • Add settings to increase map size to 2x if it possible
    • Show a colored fraction icon above the frame when you're holding down Alt key

    Also suggest to remove gray from color selection because it is the worst to see on most maps.

    opened by Asvrat 0
Releases(3.0.10)
  • 3.0.10(May 19, 2022)

    This PR fixes certain bugs and also tweaks previous changes like doubleclicking selection issue (now enabled for units but not for buildings)

    Source code(tar.gz)
    Source code(zip)
  • 3.0.9(Mar 20, 2022)

    This fixes several old annoying bugs present in original game and bugs introduced by recent changes, plus some extras:

    -Fix Command Center crashing game when changing owner while squad is mutating -Fix energy core not charging after capturing -Fix destroy frame squad and MMPs on capture -Reduce Exodus superweapon strength -Destroy squad and MMP with explosion instead of just dissapearing on frame destruction/capture -Fixed replays by storing previous replay data in save game, fixes https://github.com/KD-lab-Open-Source/Perimeter/issues/97 -Ensure replay save path exists and warn player if not to avoid crash -Fixed bugs with overriding certain texts that would cause losing audio path -Added scenario_locale.hst for locale specific scenario files -Added content_mapping.txt for allowing mods to virtually map files/dirs -Fixed map name translation in battle/multiplayer Tasks button -Use top align for briefing text and increase padding -Show chat with space press -Add support for more than 4 players maps -Command line args help -Add ingame button for language change -Add background for ingame chat to help text reading and mouse wheel for reading older messages -Add text pasting support (Ctrl+V) -Double-click now discarded if mouse moves -Shift must be pressed now while doubleclicking to select same type of units/buildings, fixes https://github.com/KD-lab-Open-Source/Perimeter/issues/96

    As these changes affect game logic side the version has to be bump to avoid desyncs with older clients

    Source code(tar.gz)
    Source code(zip)
Owner
null
Freelancer: HD Edition is a mod that aims to improve every visual, aural, and gameplay aspect of the game Freelancer (2003) while keeping the look and feel as close to vanilla as possible.

Freelancer: HD Edition Freelancer: HD Edition is a mod that aims to improve every visual, aural, and gameplay aspect of the game Freelancer (2003) whi

C.S. Melis 75 Jan 8, 2023
Symphony of the Empires is a RTS strategy game.

Symphony of the Empires Want to contribute or are interested in the development of the game? See our discord https://discord.gg/44QuvuDmCS Yeah, we al

null 85 Jan 6, 2023
Realtime strategy game for Gameboy Advance

Skyland Overview A Gameboy Advance game created, frantically, for a game jam, in about twenty days. A simple realtime strategy game where you build fl

Evan Bowman 37 Dec 27, 2022
A good & simple gameplay loop for C and SDL2.

FPSLoop A good & simple gameplay loop for C and SDL2. Dependencies A C compiler SDL2 Building The easiest way is just to run make, which will build th

Silent Tower Games 7 Jan 10, 2022
Rendering isometric terrain in the C language on the TI-84+ CE.

Iso-Render Rendering beautiful isometric terrain, using sprites, in C on the TI-84+ CE. This program is currently in progress, its mostly an experimen

Michael 17 Oct 3, 2022
This is a list of different open-source video games and commercial video games open-source remakes.

This is a list of different open-source video games and commercial video games open-source remakes.

Ivan Bobev 173 Jan 2, 2023
CRYENGINE is a powerful real-time game development platform created by Crytek.

CRYENGINE This repository houses the source code for CRYENGINE. Instructions on getting started with git can be found here, along with details on work

Crytek 931 May 10, 2022
Simple DirectMedia Layer (SDL) 1.2 for Symbian S60v1 devices such as the Nokia N-Gage.

SDL 1.2 Even though SDL 1.2 is outdated and officially no longer supported, this is an attempt to get it running on Symbian S60v1 devices such as the

N-Gage SDK. 4 Apr 4, 2022
Real-time Water - Fast Water Simulation for Games Using Height Fields

In this project a water-simulation was implemented based on the approach suggested in the presentation "Fast Water Simulation for Game

Henrik Patjens 137 Jun 4, 2022
Flexible, extensible, and scalable video game matchmaking.

Open Match is an open source game matchmaking framework that simplifies building a scalable and extensible Matchmaker. It is designed to give the game

GoogleForGames 2.7k Jan 9, 2023
Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve external game process read/write with minimum footprint.

Launcher Abuser Stealthy way to hijack the existing game process handle within the game launcher (currently supports Steam and Battle.net). Achieve ex

Ricardo Nacif 80 Nov 25, 2022
Game Boy, Game Boy Color, and Game Boy Advanced Emulator

SkyEmu SkyEmu is low level cycle accurate GameBoy, GameBoy Color and Game Boy Advance emulator that I have been developing in my spare time. Its prima

Sky 321 Jan 4, 2023
This is 2048, the video game that was embodied in C language.

2048 This is 2048, the video game that was embodied in C language. How to use Main Page Operation keys Operation keys are used on the game page. △ - Y

이종민 1 Dec 31, 2021
MMORPG Video Game of the year 1999 created in Visual Basic 6.0 by Pablo Marquez (Morgolock)

Argentum Online C++ MMORPG Video Game of the year 1999 created in Visual Basic 6.0 by Pablo Marquez (Morgolock), this game is open source under the "G

Gastón Martínez 6 Dec 26, 2022
A video game I created for one of my CS classes.

Eclipse This is a video game I created for one of my CS classes. It game will run on Mac or Linux. Requirements This game requires that Mednafen be in

null 2 Oct 29, 2022
Animation compression is a fundamental aspect of modern video game engines

Animation compression is a fundamental aspect of modern video game engines. Not only is it important to keep the memory footprint down but it is also critical to keep the animation clip sampling performance fast.

Nicholas Frechette 1k Jan 2, 2023
Classic video game revived with a new story, now available for your MySQL database.

mysql-snake Classic video game revived with a new story, now available for your MySQL database. A supermarket is giving out free buckets to visitors.

Ville-Markus Yli-Suutala 14 Feb 16, 2022
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World.

OpenXRay OpenXRay is an improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. S

null 2.2k Jan 1, 2023
Multi Theft Auto (MTA) is a software project that adds network play functionality to Rockstar North's Grand Theft Auto game series,

Multi Theft Auto: San Andreas Multi Theft Auto (MTA) is a software project that adds network play functionality to Rockstar North's Grand Theft Auto g

null 2 Oct 22, 2021