Skip to content

Starcraft map editor backed by Qt, ChkDraft, and OpenBW. Inspired by Starforge.

Notifications You must be signed in to change notification settings

heinermann/ChkForge

Repository files navigation

ChkForge

Starcraft map editor backed by Qt, ChkDraft, and OpenBW. Inspired by Starforge and SCMDraft.

Some code snippets from Starforge are used (i.e. terrain).

Libraries & Technologies Used

Credits

Code and Vision

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

Translations were sourced from the following:

Development

Developer Setup

  1. Install Visual Studio Community 2019.
  2. Install Qt for Open Source Development.
    1. Use the Qt Online Installer to install the following:
      • Qt 6.5.1 - MSVC 2019 64-bit
      • Qt Creator (any version)
  3. Install Qt Visual Studio Tools in Visual Studio (the application) under Extensions -> Manage Extensions.
  4. In Visual Studio, go to Tools -> Options... -> Qt -> Versions and add a qt version called 6.5.1_msvc_2019_64 pointing to your Qt/6.5.1/msvc2019_64 directory.
  5. git clone --recurse-submodules [email protected]:heinermann/ChkForge.git
  6. Open Chkforge.sln with Visual Studio 2019.

Some Class Info

  • 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 a MapContext. There can be more than one MapView 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.

Things to Keep in Mind

  • 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).

Libraries to Investigate

  • 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.

About

Starcraft map editor backed by Qt, ChkDraft, and OpenBW. Inspired by Starforge.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages