Cinematic controls

Cinematic controls are being added to the Knights Province.

These are commands that allow to block the player input, do the fade out to black, move the camera and change its setup, fade in from black at new location and pan/zoom around, while showing text and subtitles. They will become accessible from dynamic script. Of course this is all mixable with existing dynamic script for playing WAVs and spawning units. This will allow for more atmospheric mission intros and story/campaign elements.

List of commands is as follows since r8155:

  • CinematicBegin
  • CinematicEnd
  • CinematicViewStore
  • CinematicViewRevert
  • CinematicBarsShow
  • CinematicBarsHide
  • CinematicFadeIn(aDurationSec: Single)
  • CinematicFadeOut(aDurationSec: Single)
  • CinematicViewReset
  • CinematicViewSetTo(aX, aY, aHeading, aZoom: Single)
  • CinematicViewMoveTo(aX, aY, aHeading, aZoom: Single; aDurationSec: Single)
  • CinematicViewSetToEx(aX, aY, aHeading, aPitch, aDist, aFOV: Single)
  • CinematicViewMoveToEx(aX, aY, aHeading, aPitch, aDist, aFOV: Single; aDurationSec: Single)
  • CinematicText(aText: string; aScale: Byte)
  • CinematicSubtitle(aText: string)

All the names are pretty self-explanatory.

Firstly you need to enable the Cinematic mode with CinematicBegin, then it will be a good idea to store the current players view with CinematicViewStore and show the movie bars with CinematicBarsShow. Then the cinematic can play out, finally being ended with CinematicEnd.

Example script for the mission intro cinematic will look much alike:

So far cinematics are enabled only for Single-Player.

Feedback and suggestions for new commands are welcome!


Posted in Live progress, News | 2 Comments

New things in recent Alpha 11 wip builds

Alpha 11 is still in works, but I wanted to share a couple of new interesting things about it.

Firstly, there is a new map made by Klassix that takes advantage of new game features and dynamic script commands. Namely the messages with buttons to allow to choose difficulty level.

Here’s description by the map author – Klassix:

In the map you have to defend an old Romans Fort for as long as you can. You have to develop a working economy while fighting off waves of enemies that randomly spawn from one of four directions. As you progress in time random leather-tier and later iron-tier-troops, start to join the offenders and attack from multiple directions. There are various resources spread across the map just waiting to be picked up by you, but watch out for wild animals and deserters.

This map features:

– Handcrafted terrain
– Two selectable difficulties on mission start,
– An ‘Incoming Attack’-Indicator which tells you from what direction the enemy attacks,
– An acoustic warning signal by your scouts as soon as hostile troops move into the map,
– Randomly generated attack directions and troop constellations every time you play,
– Tons of pickable resources that need your attention and
– a lot of care for details and balance.

Have fun holding your fort!

Bug reporting is very welcome.

Another neat addition are new music tracks by Juan – Dark Banners, Harvest. There’s also a third yet unnamed track, which is my current favorite and which I will add as soon as the name is chosen. I’m very happy with how the game gets more and more great music!

Alpha 11 wip builds (as always) can be found in the Discord channel.

Posted in Live progress, News, Sidenotes | 2 Comments

Knights Province got a Steam page

I’m really excited to have Knights Province Steam page registered!

It took a while, but finally it’s there. So far only a page. There’s no known release date and no “Early Access” there yet (you know where it is ;-)). The game is listed as “coming soon” and it means ~2024-ish or so, given solo development tempo xD.

So .. add the Knights Province to your wishlist and keep on following the project in here, on Discord, Patreon and now on Steam!

Posted in News | 1 Comment

More player choice comes to missions in Alpha 11

A long ago requested feature from mapmakers and player is to have a choice in missions. It is coming to Knights Province Alpha 11. With this new feature missions can ask player in a convenient way to make some choice. No more “enable this house repair to get A and train a scout to get B”.

Let’s explore the details. This is how the typical script for the interactive messages going to look like:

procedure OnMissionStart;
begin
Actions.PlayerMessageWithButtons(-1, 'MessageWithButtons prompting player to choose an option', ['Option 1', 'Option 2'], [1,2], True);
end;

procedure OnScriptButtonClick(aPlayer: Integer; aTag: Integer);
begin
Actions.PlayerMessageOpen(-1, 'Player ' + IntToStr(aPlayer) + ' has chosen button #' + IntToStr(aTag) + ' how cool is that!');
end;

The script above has 2 main parts: message instantiation and click event handler. Instantiated message looks like so, with up to 8 buttons for now:

When a button gets clicked, the message closes itself and sends an event to the script.
In our example we just show another message with the event arguments, but mapmaker can write any other script (give wares, destroy houses, spam enemies, reveal fog of war, proclaim victory or defeat and much more):

And now to some technical details for mapmakers – click event has to be separate from the message instantiation (aka asynchronous) because of several reasons:

  • Dynamic script occurs within the main game update loop, which is separate from UI loop. This means that script can request a message to be shown, but the message can be shown (and processed) only after the game tick is done.
  • All player input has to go through recording mechanism (which is required for replays) and that mechanism basically works as <game update> <player input> <game update> <player input> … Since button clicks are player input, then need to go into the next tick.
  • Messages can be blocking (modal) or non-blocking. With non-blocking messages player can click the buttons at any time later in the game (or do not click any of them at all).
  • Since messages do not get deleted, player can click the same button over and over again. Emitting the click event again and again.
  • Last, but not least – given multiplayer architecture, player input needs to be sent to all other players and acknowledged before it can be executed. This can take up to several dozens of ticks

Finally, this is just a prototype. If all goes well, choice and interactivity can become much more sophisticated. Dialogs, other kinds of controls (text inputs, checkboxes, etc.), controls in the overlay area, etc.

Posted in How things work, Live progress, News | 8 Comments

Fish count display

Some time ago I was reworking fishing mechanics. Biggest flaw that had to be fixed – unnatural fish depletion. Now fish slowly regenerates. To make it work, waterbodies had to be made to keep track of their fish reserves. One additional benefit is that building a dozen of fisherman’s houses would not increase overall catch amount, but only affect speed at which fish gets caught.

Having this mechanics for a while, made me realize that I’m not entirely happy with it, but can not put a finger on what exactly feels wrong. From game mechanics point of view, it works as it should – providing good starting nutrition source that is slowly depleting, but never too much to cause Fishermans houses demolition to be a good move. Mechanic itself is a bit less clear, fish count increments are a bit vague, but still on par with old approach. UI display – that’s what requires the most attention and work!

Current display (numbers on terrain) was totally unnatural for the games visual style and has to be reworked. But how? The idea is to mix a heatmap with a fluid. Let it be a bit vague and flow-like.

These are work-in-progress shots. First attempts at visualizing fish-count with a very blurred texture sharply cut at certain value and filled uniformly red. Done in special preview-tool dedicated to water effects:

Checking that all the tiles align well between texture and the terrain:

Two separate layers, to indicate higher fish density:

First in-game shot:

Tweaking transparency and density:

Fish can not be caught anywhere nut the shoreline, so it makes sense to show the effect only there. Also trying out different scale – looks interesting, but too noisy. The water should be calm:

Applying Fog of War effect

Trying out fish-count effect without blur – looks good for a Minecraft clone:

Again more tweaking:

Forgot to disable texture tiling:

This is how the final effect looks:

You can check this and other new features in the wip versions of Knights Province available at https://discord.gg/cEwJFSY

Posted in How things work, Live progress, Screenshots | 5 Comments

Hotkeys

Been working on hotkeys for the last week:

The system is hierarchical – there are top-level “Global” hotkeys that work everywhere (e.g. opening dev menu with F11), lower level hotkeys that work in the game/maped and lowest-level ones that work only in gameplay/replay.

Army hotkeys were rigged, but I havent mapped default values to them.

There are also 2 new MapEd hotkeys to bring decals and map objects palettes now:

Posted in Live progress | 3 Comments

Refactoring Neutral hand and alliances

Making AI to attack neutral aggressive animals (and their dens) proved to be more complicated than I thought. Why is that?


Existing AI attacks work quite simple – AI has a list of attacks it needs to run at certain times (or periods), which are “nearest unit”, “nearest house”, “go to location”. Then AI checks if it has enough troops and launches the attack. To this time, I have planned for neutral hand to own both inert and hostile animals and houses. Which means that in order for AI to attack “any” enemy, it needs to check all enemy hands assets and also to check all neutral hand’s assets individually (to pick only hostile ones). Which is sub-optimal both from programming and from code-design point of view (especially the “individual” alliance setting).

Hence I’m looking into splitting neutral hand into two separate hands: inert and hostile, so that alliance settings between hands become simple again (either “ally” or “enemy”). Rules go like in order of priority:

  • Hand is always ally to itself
  • Neutral Inert hand (Ni) will be ally to anyone
  • Neutral Hostile hand (Nh) will be enemy for anyone (except self and inert)
  • All other alliances are governed by mapmaker and mission setup (except listed above)
  • And I get rid of that temp “it depends” alliance setting )

New problems arise though. Currently in Game and in MapEd all hands are tightly packed and each hand can be of any type atm. It’s a good time to fix this too. E.g. you can have 1 human hand and 7 separate neutral hands. Which is a waste of space really. Now there needs to be up to 2 different neutral hands – Ni and Nh (if hand has no assets it gets skipped). Still tightly packed on save and always on the right side of the hands palette in MapEd. Reordering hands is a bit complicated since hands hold a lot of cross-references (e.g. Goals/Objectives/Alliances/etc). Processing example goes like so: load a map into MapEd with 1/2/3/Nh hands. Append 8 more hands. Make the last hand Ni. Swap hands around for Ni and Nh to occupy the 11th and 12th slot. Do the map editing. Remove hands without assets before saving.

Another complication: previously I stored hand type in 2 fields in mission data: allowHuman and allowAI. 4 combinations of which described 4 hand types that were – Human, AI, Skirmish and Neutral. Now 5th type is needed, to split Neutral. For that I’m planning to add allowNeutralType flag/command.

There are other minor issues of course (and some bigger ones I haven’t stumbled upon yet), but overall I’m feeling confident and happy about this refactoring – it will make things a bit more complicated in one small area (Ni and Nh management),but much more simple in other broader areas (since larger parts of the game work with alliances).

On to the refactoring! )

Posted in How things work, Sidenotes | 5 Comments

Alpha 10.1

Alpha 10.1 is out. It features following bugfixes:

  • Fixed mission save warning message text in MapEd being clipped (and having duplicate lines)
  • Fixed repeating objects near borders when resizing a map
  • Fixed popup message shown when replays has ended
  • Fixed crash on selecting dying unit
  • Autosaved savegames should not go to the Recycle Bin
  • Fixed wares render in houses
  • Fixed changing of groups and units position in MapEd using RMB
  • Fixed Blanks dying inside Cottages without ever going to Tavern to eat
  • Fixed removal of Coalmaker’s smoke emitter after destroying the house

Download links:
Knights Province Alpha 10.1 (installer)
Knights Province Alpha 10.1 (7z package)

Posted in Downloads, News | 21 Comments

Alpha 10 is ready

What’s new in Alpha 10:

  • Particle effects (smoke for houses work, smoke for damaged houses, dust effects for plans placement and for house destruction, emitters that could be placed on terrain in MapEd (e.g. mist).
  • SSAO (aka prettier lighting)
  • New custom antialiasing (FXAA2 and FXAA3.11 partially)
  • Smoothed out unit animations
  • Revised house-placement (Trees and other objects block house placement from all 4 sides now, Added house plan icon showing where the road for the entrance needs to be)
  • Imported more unit models and animations
  • New maps from 2018 mini-competition
  • Allowed builders to uproot trees and small stones
  • Revised fish-catching
  • Quick unit/house selection panel in game UI on the right (Ctrl+1//0)
  • Revised wind effects to act uniformly on flags, particles and map objects
  • Expanded undo/redo in MapEd (units, houses, etc.)
  • Unified main menu and gameplay options pages
  • Separate volume controls for sounds (alerts, effects, menu)
  • New map decoration objects – stockade fences
  • Revised and fixed house unlock order
  • Reworked AI
  • Revised food nutritious values
  • Sound for messages opened and closed
  • Displaying proper music titles in options menu
  • And as always a whole lot of bugfixes and smaller improvements

Download links:

Knights Province Alpha 10 (installer)
Knights Province Alpha 10 (7z package)

Posted in Downloads, News | 26 Comments

Recap of events since Alpha 9

In loosely chronological order:

  • Finally set up Patreon page in June. If you wanted to support the game’s development – now there’s a way!
  • Set up itch.io page. Nothing major, just another location to advertise the game.
  • The game was reviewed by Nookrium and Dan Field. Collecting as much as 100k views on YouTube combined!
  • We’ve had 2018 mini-competition for mapmakers (see earlier news)
  • Github issues tracker is getting more attention now. If you have an account and need to report an issue with the game – feel free to use it.
  • Discord server is active as ever. There are different channels for general discussions, mapmaking, bugreports, ideas and others.
Posted in Events, Site | 2 Comments