Mega Tact relaunch

Make games! Discuss those games here.

Moderators: Bob the Hamster, marionline, SDHawk

User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

It's time for graphics! Everyone loves looking at graphics! Let's look at some unit icons.

Image

I originally drew the job icons at 16x16, but when I slapped those on the unit icons, they were too small. Well, maybe 32x32 is too big, but I'm happy with this look for now. We'll see if I change my mind once I put them onto a map.

Unit C has the icon for all monster types. Maybe someday, I'll give every monster its own icon, but that day is not today. Similarly, special monsters are all lumped together, as are story jobs and Lucavi.

Image

Can you name all 24?
User avatar
kylekrack
Liquid Metal Slime
Posts: 1242
Joined: Mon Jun 16, 2014 8:58 am
Location: USA
Contact:

Post by kylekrack »

Graphics! I think they all look superb!

As for naming them, easy.
1. Axe-Cop
2. Perfume Salesperson
3. Ultimate Butter-Spreader
4. Dog Archer
5. Unarmed Man
6. Clothed Ghost
7. Pointyman
8. Pointyman with star
9. Hot Expert
10. Tupac
11. Guy at the office who never shuts up
12. Dual-wielding Koi
13. Tree-Hugger
14. Ishmael
15. Samurai
16. Naruto
17. Librarian
18. Lyre Liar, Pants on Fire
19. Toilet Paper Holder
20. Fox Person Thing
21. Orc w/ Sick Mohawk
22. Sad Chocobo
23. Blob
24. Small Child
My pronouns are they/them
Ps. I love my wife
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

I want to make these an official mod now
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

Today's big push: the War of the Lions localization. A large chunk of this data already existed in Mega Tact, and the intent was always to have it available on a per-player basis. It would have been impossible to do this completely with the old Mega Tact implementation, which stored battle logs in plain text.

Putting it all together, here's today's screenshot:

Image

With the WotL translations active, I've added this fellow to a battle where he's a little out of place. The UI informs me of the changes that will be made to get him ready, highlighting the differences between the unit as designed and the unit that will participate in the battle.

As I post this, I realize I didn't quite finish with that: the evasion percentages aren't showing their changes. I left off yesterday in the middle of all of that.

This isn't quite final, but it's very close! After this, I need to add initial unit positioning, and then I'm ready to start on the actual battle code.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

Battle signup is complete! You can now register a team and get a battle started.

This means it's time to actually write battle code, though in fact I've had to write a considerable amount just to get this far. You can't initiate a battle without a clock, because the first thing that happens in a battle is that the clock advances until it's someone's turn. All in all, before you can start a battle, you need code for the following:
  • Battle logs, since a battle starts with a log that says that the battle has started.
  • Adding statuses, since units can start the battle with status effects, both temporary and permanent. (Looking over the data, though, I can't see that you'd ever actually start a battle with a status that has an expiration built into it, but the code supports it anyway.)
  • Removing statuses, since statuses can cancel other statuses. (For example, Dead cancels basically every other status.)
  • Status immunities, of course.
  • Advancing the clock, naturally.
  • Expiring statuses, since status effects that are on a timer need to expire when the clock advances.
Next up: gotta make the map display the units (and also gotta make sure players can't see other players' units before battle starts).
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

Image

The movement map -- the blue overlay that shows where you can go -- is done. That didn't take long at all! In the process, I found a few bugs in the old movement code related to jumping laterally across a gap. This functionality required a little reworking beyond that, since the old code didn't support layered maps, like the bridge over the waterfall.

Keen eyes might notice that the map "leans" left as it pops up, and it used to lean right in older screenshots. The short explanation is "CSS." The longer explanation is that I used to explicitly set z-index based on tile height, but that caused layering problems when I introduced unit icons: a unit would have its job icon obscured if there were a taller tile to the left. This ends up being an intractable problem if I want to keep the unit icon in a sensible location in the DOM.

But changing the maps to lean left allowed me to remove z-indices entirely, because now, the DOM elements stack in a way that CSS naturally wants to layer them: left under right, top under bottom. I think this might fall apart if you designed a map specifically to have really weird tile heights, but the layering works on the colossal Zirekile Falls, so I expect it'll work on any map that isn't specifically trying to break things.
Last edited by Mogri on Thu Oct 17, 2019 8:41 pm, edited 1 time in total.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

Today, I have two items of exciting UI news:

You'll be able to cancel moves. As long as there's no dice roll involved (i.e. a Teleport movement beyond your normal range), you can move somewhere, check out your attack range, change your mind, and move somewhere else.

Unit movement is animated. You can see units move from tile to tile when they walk. It's minor, but it's a nice effect. Units with Teleport have a different animation.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

Image

Who doesn't love a good menu, right? The submenus are collapsible, and the menu cursor has a slight animation to it.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

Mega Tact has processed its first turn! You can now Move and Wait.

This may sound somewhat trivial, but it's actually a huge milestone. The data is unchanged from Old Mega Tact, which means the work to be done consists entirely of the server-side logic and the client-side interface. The logic is mostly a matter of porting the old code into the new framework, and most of the interface needed for the game was necessary to get movement up and running. That means that the battle code is probably about halfway done.

So what's left?

On the interface side, I still need to write the battle log, which tells you what's happened so far, and the AT display, which tells you what's going to happen -- and now that I say it like that, I wonder if I shouldn't just combine them. There's also edge-case actions like Throw, which requires you to select an item.

On the server side, I need action handling, reaction handling, and the action queue. I also need to rewrite the AI, though I don't consider that launch-critical for alpha (even though Charm and Berserk won't work without it).

At that point, the "happy path" is complete, and I start allowing the general public to play while continuing to work on stuff like Equip Change that nobody cares about.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

The front end for actions is like 90% finished. You can now select an action, pick a target, and see a preview of what that action will do:

Image

Which is real nice and all, but I've got to make this work on the back end, too. There's definitely a case to be made that I should've made an API call to get the back end to tell me what the attack would do: that would have meant writing the action formula logic once. But the really excellent news is that New Mega Tact's action formula logic is less than a third of the size of the old code, which clocked in at nearly 2000 lines of code, with lots of repeat code in there.

Now, it's not as simple as "add in the back-end action code and you're done." Actually, for a good chunk of the game's attacks, it is that simple, but there's still the matter of charged attacks and reactions. Even so, it's coming along really well. I'm hoping to have it playable by the end of the year.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

The "happy path" for actions is finished!

Image

There are some slight adjustments to be made still, of course.
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

How about some status icons?

Image

Many of these have been adapted from FF12, but FF12 doesn't actually have all the statuses that FFT does. Of the ones that it was missing, I'm happiest with Frog (very loosely adapted from FF14, where it is monochrome) and least happy with Charm (very loosely adapted from FF11).

FF12 has a status called "Faith," but it doesn't really do the same thing that the FFT does, so Faith and Innocent are adapted from the FFT icons. That big "T" is a Glabados cross -- there's your FFT trivia for today.

There's really not a FF out there with a good Zombie/Undead icon, so I just recolored the Doom/Dead icon. Good enough? I just wanna be done with these now. They seemed like a much better idea when I started.
User avatar
Bob the Hamster
Lord of the Slimes
Posts: 7660
Joined: Tue Oct 16, 2007 2:34 pm
Location: Hamster Republic (Ontario Enclave)
Contact:

Post by Bob the Hamster »

They do look great. Nice work!
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

I realized I'd forgotten some statuses. The image above now features Oil, Chicken, Defending, Blood Suck, and Stop at the end. I wasn't gonna bother with Chicken, but it came out looking super cute. Blood Suck is just an Oil recolor, but that seems fitting.

Taking a step back, today, we're back in UI land for the all-important battle log. While working on this, I noticed an insidious little bug...

Image

No, it's not that there are three units named Serge -- it's that the clock wasn't getting saved. That's why the top item is at time 4 and then it bounces back to time 0. The clock is kinda important when queued actions enter the picture! I wouldn't have noticed this for a long time without the battle log.

(In the category of "looks like a bug and sorta is," Serge kills Fisher twice in a row. This is when I was testing out attacks and didn't save the results, but the log still got committed. Oh, and there's "Fisher is unaffected" again.)
User avatar
Mogri
Super Slime
Posts: 4669
Joined: Mon Oct 15, 2007 6:38 pm
Location: Austin, TX
Contact:

Post by Mogri »

It's time to start working on reaction abilities. Today, we're looking at proactive reaction abilities: Weapon Guard, Finger Guard, Abandon, Catch, Blade Grasp, Arrow Guard, and Hamedo. Eventually, I'll need to build a framework for dealing with reaction abilities that actually react, but all of these? They just alter the hit chance.

Well, mostly. One of these is not like the others.

Image
Credit: Three Panel Soul

Hamedo (WotL: First Strike) gets its own special handling, because it needs to trigger an attack. Indirectly, this does modify the original attack's hit chance, because if Hamedo triggers, the original attack is canceled, whether or not Hamedo actually hits.
Post Reply