1. Archmage Rises
  2. News

Archmage Rises News

Dev Update Feb 22: Travelling Map Events

Hi, welcome back. It’s been 2 weeks because of travel and my kids got me sick. Fortunately, Michel has been trucking along and making things work. So now I get to brag about his work and take all the credit. Don’t worry, he’s used to it. ːsteammockingː

[h2]Getting Things Moving[/h2]

To make the world feel alive, things have to move around. A monster hunting party needs to chase you across the map until it loses interest or your scent. An NPC trader moving along the road from one town to another.

We already have monster patrols moving around on the map; now we need to expand it to handle any kind of event. There are some additional challenges.

[h3]1. Order of Operation?[/h3]

When do the events move?

After the player moves, of course! That’s every rogue-like ever.

But if every moving event moves after you, how do you notice what moved and what didn’t? We need to animate the NPC movement. And do we wait for the animation to finish before allowing you to move again? That slows down gameplay a lot; it starts to feel sluggish. So we’re going to keep the simultaneous movement for now… except when we shouldn’t!

What happens when you move onto a hex with a moving event, and it chooses to move to a different hex? Technically, you would miss each other, but that will feel unsatisfactory, so now we have to determine which events have their movement turn interrupted by the player.

[h3]2. Stacking?[/h3]

If events can move around, what happens if they both go into the same hex? Is that even allowed?

If you move into a hex with two events, which one is shown first?

We decided anything dangerous happens first: deal with the monsters THEN the resource or NPC conversation.

[h3]3. Where do Events Move to?[/h3]

Figuring out where the roads are, placing an event, and giving them a path to follow to the town are additional challenges.

A monster patrol will enter into a chase mode where you can use terrain and spells to hide from them, if that is what you want. I hope this makes going through dangerous monster territory more thrilling.

We’re getting close to the end of the tech work on this feature and will focus on the experience of it.

[previewyoutube][/previewyoutube]

Dev Update Feb 7: Making a Map Event

I recently read an article 42 Essential Game Dev Tips That are Immutably Correct... and the author said:

People want to hear about even the most mundane parts of your dev process


So let’s test that theory, shall we? We got Map Events working this week, so why not show how one is made?

This is a great spot to be in, now that we can make an event, we can turn our attention to making them actually fun. As of this writing, I’ve made a grand total of: 1 event. ːtongueː

For today’s example, I’ve taken what Oonai posted of what they think events should be like. So let’s see if we can do it.

[h2]Step 1: Code it up in JSON[/h2]

We’re both programmers here, so we’re writing the events directly into the text files. Here is what Oonai’s event looks like:



We can have as many branches and details in the event as we like. This is my version of what Oonai wrote.

Save that to a special folder, and it is sucked up into the game.

[h2]Step 2: Shows on Map[/h2]

Start walking around, and the event appears as Tracks because that is the only icon we got right now. And that is what was defined in the JSON `displayAs` field.

I walk into the event.


[h2]Step 3: Run the Event[/h2]

The UI pops up, and the parser runs the event.



(oops, word wrapping isn’t working!)

I pick the evil path because Oonai seems to like evil options. ːlaughing_yetiː



I probably should have written some ‘outcome’ context text—oops! But anyway, it shows an outcome, and the player can continue on their merry way.

We still have to hook up the various values that can be affected (gold, reputation, etc.).

Now that it is (mostly) working, we’ll start making events that are hopefully actually interesting!

Untitled

I'm playing Halls of Torment right now, because I like Vampire Survivor-likes.



If you've never played, I can explain it like this:

"Imagine Vampire Survivors gameplay and Diablo II art had a baby."

OK, maybe that wasn't terribly helpful.

It's an action game (or Bullet-hell) where your character is surrounded by swarms of baddies who try to kill you in seconds. You fight back through timed auto-shoot abilities (or controlled shot in Torment), collect xp, and level up.

If you were lucky enough to play arcade games in the 80's and 90's, it's like Smash TV and Gauntlet.

What I adore about Vampire Survivors (and likes) is how incredibly and fantastically simple and straightforward they are. They immediately get to the fun. Which is not easy to do and something I'm trying to improve in Archmage Rises.

The reason I'm writing about it is I had a bit of an "aha!" moment while playing HoT about Map Events.

The first time you spawn on the map, you don't really know what to do. But there are skeletons coming at you vying for your attention, so you should probably move and do something about it.

This is like the role Events will play on the Archmage map. Something clear, obvious, and immediately interesting to do.



But there is a second element to HoT. They have some treasure off in the distance represented by an edge icon. These provide a goal, something to attain, instead of just standing around fighting skeletons. I have to travel through the skeletons to get to the objective. It makes both more interesting: No objective? I just walk around in circles. No skeletons attacking me, it's a boring walk to the objective.

And this is the role Regions are to play in Archmage. A larger "Why?" to the game (game loop) of which the Events are an interesting encounter along the way. (I talked more about regions in this previous post)

We're not really working on the Regions stuff right now because we're focused on getting the map events in. BUT we have to figure it out a little bit so the Map Events that spawn make sense to the regional issue.

If the region is rich in Iron, Iron resource events will spawn.

If the region is infested with goblins, goblin patrols will spawn.

And spawning the events at the right place and cadence is what we're working on right now. Here is another short internal video never intended to see the light of day, that I'm showing anyway.

https://youtu.be/qySvfv3Ne0Q

It shows the event tech working, reading the JSON files* and running through some UI execution.

Now: to make it fun!

I appreciate Oonai posting some sample events so I'll quote their comments here:

Originally posted by Oonai

1- We are a MAGE, so it would be really good for the roleplaying aspect if our schools and level of magic could give solutions to some events. (example: The bridge over the river collapsed, so now if you want to cross you have to take time to find a way, use stamina/health to swim to the other side, that can go wrong, or you could make an ice bridge if you have enough water magic. you are not a common adventurer)

2- These events should also be opportunities. You find a caravan in the middle of the road without a wheel. You could help the owner for some money and provisions or you could kill the guards and take all you find useful.


Thanks Oonai, I'm going to try and build both these events with the system next week and see what happens!

Note on JSON Files:

Fairly often I'm asked about User Generated Content (UGC) for Archmage. Historically, the answer has always been a dissatisfying yet certain maybe. As we go, I'm making tech decisions in such a way as to not exclude the possibility. That's the best I can offer right now.

Dev Update Jan 24: Map Events

A quick update this week as we make progress on the map events.

We managed to define the data structure and get it to read and appear in the game:

[previewyoutube][/previewyoutube]

This is demonstrating a new feature which is a timer on an event. They expire after N steps (we’re thinking hours), so if you don’t pursue it, it will just go away instead of clogging up the map.

Last week’s discussion about FTL events helped us. In fact, Michel was able to build out the FTL example event in our JSON and prove out the tech.

Today we decided to abandon the Tooling: it’s too much work and cumbersome. And for what? We’re two programmers who can just write the JSON by hand.

This brings up a Senior Game Dev point:

You don’t build tooling until you fully understand the problem.

You understand the problem when you are done building it.


Building a tool before fully knowing problem space boundaries, or how it will be used day-in-day-out, is wasteful and extraordinarily expensive. There is a ton of guesswork “maybe they will need this, maybe they will need that”. This leads to building features no one uses, and not building features they want.

There will come a point in hand bombing JSON where we are sick of the tedium and have a list of Major Pain Points we know will save us 80% of the time. This is when a tool can be made.

For now, we’re using Excalidraw to map things out:



Then we convert that into JSON readable by the game.

Some next steps:
  • Getting some art icons for the different event types
  • Creating an event generation and placement algorithm
  • Getting the Event UI to display, process the event, and close


Small Personal Update:

Back when I had a larger team, I used to read every comment. I liked it and it worked. Yet, there are thousands of you and just one of me, so I’m struggling with finding time to do everything: work, family, teaching. If I don’t respond to your comment in a timely manner, I’m sorry. I’m still sorting out how to do this. Every hour on forums or discord is an hour away from game dev. Phil is coming back in a limited volunteer capacity to help out with community management.

Map Events: Jan 17 Dev Update

Michel and I are working on the events that appear on the map.

What does that actually mean? We’re aligning our vision of it right now as we build a prototype, so I can bring you in on some of the discussion points.

[h2]The 6 Event Types[/h2]

  1. Traveler
  2. Discovery
  3. Resource
  4. Tracks
  5. Monster Patrol
  6. Monster Lair


We are focusing on the Traveler and Discovery types because they are slightly more complicated and require definition for implementation.

Rather than writing a sample event from scratch, we’re using a typical one from a game we both enjoy: FTL



Asteroid Derelict Ship
(its basically impossible to format this text on Steam, so here is an image of the text or click the link above)


FTL is a great game and their event system works well in their game context. What I like about FTL Events for us:

  • Simple - get to the point, faced with a decision with multiple outcomes
  • Randomized Outcomes - even if you get the same event, and choose the same option, it has potential different outcomes (the 1/3s above)
    - We can weight these outcomes by stats, skills, equipment, etc
    - We can flag some to only appear once per game
  • Scalable - we can write a lot of these and keeping adding more until it feels that we have enough


We’re working on getting a prototype event icon to appear on the map and parse the data file. Then take it from there.