Production schedule // mission editor first look // reward updates
over 2 years ago
– Fri, Jul 07, 2023 at 10:04:11 AM
Production schedule
I've gotten a few questions/heard some confusion about when we're delivering what, so I think a picture to point to is in order. This is a living document (compiled from—you guessed it—another spreadsheet) and is subject to change if we need to push a date because things always take longer than you expect, but I think is a pretty good estimate.
Again, if we need to push any of these I'll let y'all know when we know! These are our predictions for key dates:
- Delivery of physical rewards by the end of this year of our lord 2023.
- First public beta early 2024.
- "Bones" version of the game with a tutorial and an instant action mode by the end of 2024.
- Then entirety of 2025 will be the 100% stretch goal "draw the rest of the owl" year, with delivery of whatever we have at the end of that. Continual beta playtest updates throughout 2025 is likely.
This is both a wild amount of time to me (three years? that's almost like an entire college degree, should be plenty!) and no time at all. I'm spreading the stretch goal money to work 2/3 game dev and 1/3 day job for the entire three-year period instead of doing a single dedicated year at the end, but that means every week I have to focus on Lancer Tactics is precious. Between the day job, moving houses, managing the bizdev and production of the project, and a geology field trip in Ireland for much of August, dedicated programming days feel like rare jewels.
My inclination in these cases is to just work harder, so I've been having to intentionally slow down. Things will take as long as they take. Better to build up a good solid work+life foundation than indulge he "oh god I need to have something to show for the next update, go go go" paycheck-to-paycheck impulse.
Mission Editor first look
aka something to show for the update
So with that, Mark and I had a great day this week hashing out the different tools and screens we need for the Mission editor! Even though this is technically a stretch goal, it makes more sense to do this up-front to build the tools that we can use for the rest of development.
A notable absence is the lack of an in-game dedicated map editor; for this first pass, we'll be leveraging the excellent Tiled tool for painting terrain, objects, and elevation. Rather than reinventing the wheel right out of the gate, we would rather focus our development efforts on making the editors for Lancer-specific data like units, command zones, sitrep rules + triggers, and dialogue.
This is only a coupla days of programming after we came up with the designs, so it's still pretty rough (all map assets are placeholders). The tabs top-left are the six tools that we think we'll need: mission data, map tiles, command zones, units + reinforcement groups, sitrep triggers, and dialogue. The white junk is a visualization of the terrain data coming in on boulders.
I guess this is also y'all's first look at the basic map layout, as well! Accidental reveals of note:
- rectangular tiles rather than hexes (paying the hex technical+asset tax was ultimately not worth it),
- rectangular tiles (lol what) (it normalizes the number of tiles shown vertically and horizontally, useful for seeing entire 10+ tile ranges for weapons) (it also opens up some neat perspective tricks by allowing units to overlap the tile above them),
- and elevation (we're doing an elegant technical trick to get the cliff edges to line up with tile edges, maybe will post about someday) (also ignore the double-layered ones; they had too many awkward constraints about how they had to be placed to work visually, which meant we had to drop them if we wanted to ever do destructible cliffs).
Coins update
We just got our second coin proof and are reviewing it. It's likely we'll put in the full production order sometime next week.
Stickers update
The production run of stickers has finished! This is what 2500 symbols of being gay and doing giant robot crimes looks like:
Unfortunately, we're not quite done because I messed up the order for the IPS-N stickers and accidentally ordered them as glossy finish instead of matte and didn't notice in the digital proof. I was stressed about moving and dealing with confirming with my bank that the order was real and just whiffed on that detail.
I think we just gotta redo them (a $750 mistake 😭) because everything else is matte and they stick out like a sore thumb, but that leaves me with 2500 IPSN misprints that I'm not sure what I'll do with. Make 'em available afterwards in a digital storefront for cheap? Just send them out to everybody as a free bonus along with the rest of the stuff? Engage in an ineffective guerilla marketing campaign by plastering them all over Portland? I'm open to ideas.
Hope you're having a nice day! 🌺
Olive
Engine graph // Reward production update
almost 3 years ago
– Sun, Jun 04, 2023 at 08:55:05 PM
OK I promise that someday these updates will start showing gameplay and not just graphs + product updates... but we're not quite there yet. 😅
Burn it down, start again
Step #1 of post-Kickstarter production was to start over in a new codebase. If we're going to be spending the next ~2-3 years on this, I want the foundation to be rock-solid. We can borrow a lot of the logic from the demo so it will go a lot faster the second time, but the the new structure 100% needs to be rebuilt from ground up. The demo did its job; it got us over the finish line; it is now time to burn it down and start again.
Behold! A chart!
And it's going great! I've been quietly plucking away at it since the start of the Kickstarter, and this chart shows the current state of that foundation. I might be getting ahead of myself but I'm super happy with how clean it is. Godot 4.0, which officially released on the same day our Kickstarter launched, gives several critical tools that makes this architecture possible; most notably custom resources and the "await" keyword.
There are three main layers to this organization.
The top layer is composed of stateless resources with predefined stats and functions. This is where most of the logic for lancer's rules live — stats for weapons, scripts for tech actions, the sequence of an attack. For example, an assault rifle attack action up here can be given an attacking unit and a targeted unit and will carry the attack and do the appropriate amount of damage to the given target. But when it's done, it forgets everything; this is what "stateless" means. If it ever needs some kind of decision from the player, such as whether to consume a lock-on, it simply broadcasts a signal via a bus and "awaits" a response, pausing its execution until a signal comes back from somewhere that a decision has been made.
The middle layer is composed of lightweight resources that hold any kind of state that we want to persist between scenes or in a save file. A pilot's name, the gear they have equipped, ammo remaining, or a mech's hit points all live in the "cores". Their task is only to hold and organize data — running logic to change data values (such as doing damage) is the job of the top layer. A core wants to be able to be plugged into anything on the bottom layer and provide everything that node needs to show it off.
The bottom layer is, generally, stuff that you can actually see. It has tons of temporary state information like which pixel to draw a sprite at or whether a dialogue window is open or closed — nothing that we'd care about storing to a save game file. When an action broadcasts a signal asking for a choice to be made, it's some UI element down here that will wake up, show itself, and respond with its own signal broadcasted back up into the sky. The UI down here can also read the available actions from the middle layer and are what kick off events and actions in the first place.
If I may speak poetically for a moment, each of the layers have very different feelings when I work with them. The stateless resources up top layer feel ethereal and heavenly, unmarred by the march of time. The nodes at the bottom feel solid and earthy — they're temporary, but handle all of the dirty business of being a player's interface. The stateful resources in the middle feel like souls or ghosts; unlike the other two layers they have long memories, but by themselves they are inert and unchanging.
Unit + integration tests
Putting the above together, I've had my head in code-land; most of my work the last few weeks have been in the middle and top layers. Without a bottom layer, there's not much to actually see. How can we tell the the whole thing is working as intended? As you might guess from that header text, the answer is by using unit + integration tests.
These are bits of code that are just there to automatically run parts of the engine and check to see if they behaved as expected. I've never written them for a game before now (in favor of just running it and testing stuff manually) ... and even just two weeks into having tests, I take back everything I ever said about them not being needed for games. They rule, and will be especially helpful for such a rules-heavy system like Lancer.
I'm getting ahead of myself. This is what a basic test looks like:
- set up a dummy target with the properties we're interested in testing (in this case, armor)
- check that it starts with full health
- make a test attack against it
- check that it took some damage
With this in place, from now to the end of the project we can can confidently make changes to the engine and be sure that it won't secretly break the the ability of armor-piercing weapons to ignore armor. When you have enough tests that check other situations (for example, one where a regular weapon does not ignore armor), you can catch bugs before they even really become bugs.
Thinking about how many tests to write and what they're testing is a whole skill in of itself, but even covering the basic actions of the engine mean that I can say with a high degree of confidence that the whole engine up there is working before we've drawn a single mech on the screen.
Coin
We got a coin prototype!!!
It's a lot heavier and thicker than we were expecting — to the point where it being too dangerous to flip because it'll like crater someone's table is an ongoing concern.
After some field testing / asking uninterested parties, we're going to get a second proof made with some changes:
- Plating it in antique silver rather than copper, just to see how it feels.
- Increasing the size from 1.25in diameter to 1.5in diameter. This increases it to the size of coin that is flipped at the start of sports matches, so flipping should still be possible... if dangerous.
- Substantially altering how the Lich appears. Our focus group thought it was some kind of spaceship cresting over a cliff with the sun in the background (primed with the star-trek-like logo). I've redesigned it so more of the figure is visible and it's less of a blobby silhouette (this is only possible with the increased diameter, as well):
The focus group also couldn't decide between which side of the coin was heads vs tails, so I hope that the increased difference in background/foreground area between the Lich and Horus logo helps to distinguish the two sides. The turnaround on these prototypes seem to be about a month and a half, so that's probably when we'll see how this next one turns out.
Sticker Tweaks
There's a few more changes I'd like to see for the stickers, as well — getting the SSC moth kaliedoscope to be full-bleed rather than having a solid yellow line around the edge, and adding a bunch more faint computery greebles in the background of the Horus one. I'll post pictures when I get the new ones in hand.
Shipping Update
We're still talking to shipping/fulfillment companies. It's looking more and more likely that we'll have to settle for shipping the stickers and coins separately — it would cost more to ship them together and combine them than just have a company handle the coins and pack the stickers ourselves in our living rooms. If the company stuff totally falls through, we may end up doing both ourselves, though.
Moving + Travel
Finally, I have a day-job workweek coming up next week, and then will be busy moving houses for the back half of June, so development is going to be slow this month. It also looks like I'll also be visiting Berlin / UK / Ireland in September... anyone know of any cool rocks to see there?
🌺 Olive
Sticker Proofs! (and fill out your surveys)
almost 3 years ago
– Mon, May 15, 2023 at 12:06:17 PM
The stickers have arrived!
The test batch has come through ~ beautifully ~. The IPS-N one feels like a starry night leading you home, SSC's evokes a sense of fractal computational mystery, HA is huuuuge and in-your-face, and the trans dabbing goblin is just having a great time.
Honestly, looking back on the HORUS design, the glow-in-the-dark is a neat trick but I feel like it's pretty clear it was the first of the batch. I think the design could be spruced up a little to match the level of visual interest of its newer compatriots. So I'll be likely doing some light revisions there before putting in the full order. Between that and a few other notes (I think the SSC outside yellow ring could be shrunk to make the inner design larger), I expect to be putting in the full sticker order by the end of the month.
Other project updates:
- We're at 87% survey completion; if you haven't done so, please check your email for a message from Backerkit! You can always change your address later if you need to.
- We've placed an order for a proof of the metal coin. No ETA on that yet.
- In talks with fulfillment companies to get quotes and time estimates on possible shipping solutions.
- We've spent the last month doing pre-production work: sketching out timelines, spreadsheets, etc.
As an example of this set-up work, I spent the weekend setting up our system for managing localizations and text. If you think you might ever possibly want to localize your game into different languages, this is absolutely something you have to be prepared for from the start. Nobody wants to have to hunt through a finished game's files for every bit of hardcoded text.
After consulting with friends and peers who have done this before, I ended up with a system that downloads keys + translations from Google Sheets and compiles them into a single big .csv for the engine to populate the game with. It can also scan the project for anything that looks like a translatable key and upload them back to the appropriate page in the sheet. It might not be flashy, but I think it's super nifty and is going to make our jobs a lot easier in the long run.
Commission info for custom mech/pilot art
almost 3 years ago
– Mon, Apr 24, 2023 at 11:53:55 AM
This post is for backers only. Please visit Kickstarter.com and log in to read.
Backer surveys going out soon
almost 3 years ago
– Mon, Apr 24, 2023 at 11:48:53 AM
This post is for backers only. Please visit Kickstarter.com and log in to read.