Skip to content

Latest commit

 

History

History
67 lines (55 loc) · 3.66 KB

README.md

File metadata and controls

67 lines (55 loc) · 3.66 KB

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.