Skip to content

JWGpro/pcwkt

Repository files navigation

pcwkt

A work-in-progress Advance Wars clone written in Kotlin with libGDX/KTX, for PC and Android.

The primary focus of this project is to enable user-defined gamemodes and customisation (mods) to create turn-based games which share common logic. To this end, gamemode logic is defined in separate Kotlin plugins, which can be loaded from the core via a PF4J-based api. This approach has been POCed on Android, but is not yet fully supported there. It contrasts with the deprecated implementation pcw_libGDX, which defined gamemode logic in Lua/Teal scripts.

Some features implemented:

  • Attempts at design patterns; Command for "replays" (the ability to play back and rewind played games), State.
  • A* pathfinding written from scratch for evaluating valid routes
  • Input mapping, multiplexed event handling
  • A primitive map maker which can serialise to files
  • TODO: Networking

The standard game mode Classic (plugin wrapper here) is intended to be mostly a straight reimplementation (clone) of core Advance Wars gameplay, excluding COs, and with some alterations. A fog-of-war mode is planned as a separate gamemode with considerable changes to mechanics and available units. Hexagonal grids are also considered, either as an option to existing gamemodes, or as separate gamemodes.

Assets (maps, SFX, UI skins, unit and terrain sprites etc.) are loaded at runtime from an external directory pcwkt, making them user-definable. None of these assets have been included in this repository yet.

The entry point on desktop is here.

Importing and Running

Standard libGDX instructions apply: https://libgdx.com/dev/import-and-running/

If you have issues with Gradle sync or ./gradlew build, ensure your Android SDK has installed build tools 32.0.0.

You'll probably also need an Android debug keystore; move this to ~/.android:

$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000

Since gamemode logic exists as a plugin, that has to be built before running the application, which will pick it up from the build directory.

Therefore set up your run configuration to run a Gradle build before desktop:run (or the Android equivalent).

License

Licensed under the GNU Affero General Public License 3 or any later version at your choice.

SPDX-License-Identifier: AGPL-3.0-or-later

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published