Starcraft map editor backed by Qt, ChkDraft, and OpenBW. Inspired by Starforge and SCMDraft.
Some code snippets from Starforge are used (i.e. terrain).
- Qt for GUI and other utilities.
- Qt-Advanced-Docking-System for better docking UI.
- MappingCoreLib (ChkDraft) and its dependencies for map/chk management.
- OpenBW for rendering and simulation.
- StormLib for MPQ management.
- CascLib for Casc loading.
- oxygen-icons-png for icons.
Code and ideas sourced from the following:
- tscmoo for OpenBW
- TheNitesWhoSay for MappingCoreLib
- Jon Cable (Heimdal), Carlos Pastor (Clokr_), and Sam Wilkins for Starforge: Ultimate (unreleased)
- Henrik Arlinghaus (Suicidal Insanity) for SCMDraft
Translations were sourced from the following:
- Qt
- Polyglot Gamedev Project
- Starcraft: Remastered
- Starcraft 1.16.1
- Starcraft JP
- Korean Fan Translation (VIRUSGOD?)
- Install Visual Studio Community 2019.
- Install Qt for Open Source Development.
- Use the Qt Online Installer to install the following:
- Qt 6.5.1 - MSVC 2019 64-bit
- Qt Creator (any version)
- Use the Qt Online Installer to install the following:
- Install Qt Visual Studio Tools in Visual Studio (the application) under Extensions -> Manage Extensions.
- In Visual Studio, go to Tools -> Options... -> Qt -> Versions and add a qt version called
6.5.1_msvc_2019_64
pointing to yourQt/6.5.1/msvc2019_64
directory. git clone --recurse-submodules [email protected]:heinermann/ChkForge.git
- Open Chkforge.sln with Visual Studio 2019.
MapContext
is the class that bridges ChkDraft and OpenBW between each other, and is used to programmatically interact with the map and openbw "game".MapView
is the window that shows aMapContext
. There can be more than oneMapView
with the same map context.MainWindow
is self explanatory.- Different UI components are separated as follows:
- Tool Windows (minimap, item tree, etc)
- Property Dialogs (unit, sprite, location properties w/ enter key)
- Other Dialogs (New Map, Unit Settings, etc)
- ChkDraft classes are used for chk manipulation, but in general we should only be doing things through
MapContext
to also reflect those changes in OpenBW. - OpenBW classes are just a mess of header files.
- Use
tr()
for strings to create translatable strings in-code. (more info) - Only interact with maps through
MapContext
, and not directly through ChkDraft/OpenBW. - Avoid globals.
- Try to keep the boundaries between ChkForge and OpenBW separate (as much as possible, i.e. don't start using QString in OpenBW).
- QSimpleUpdater for automatic updates?
- Possibly some sound library for ogg, but Qt might support it already, though Qt doesn't support directional sound or sound mixing.