Witchcrafter: Empire Legends

Thank you all for your feedback! And please vote if you didn’t :smiley: @Mathias_Westerdahl, I’ll put a smartwatch version in the corner of hope of the backlog :smiley: I want to play it too, though it is not so simple, but I’ll do my best to prepare a demo, so maybe I’ll gather even more feedback from you :wink: This is a great motivation! You’re awesome! :smiley:

2 Likes

thank you so much! :grinning: :+1:

1 Like

Hi! :smiley:
I know some of you would kill me or themselves, when I will announce I still can’t drop any demo :smiley: But I have to admit it :confused:
tl;dr: I had many troubles with creating a correct mob’s AI, but hey, there is a juicy battle right around the corner’. :wink:

I tried many times and there where many iterations and refactors. What I would like to share with you is to remember about the scope of variables! Imagine that I wasted an enormous amount of time on finding out what’s wrong, while I was overwriting the id I made local in the script of one GO and I had multiple instances of this GO in the level. Why? I didn’t realise that, when I write

local id = nil
function init(self)
   id = go.get_id()
...
end

I actually overwrite the id that is local for all instances of this script in any new instance’s init! I know it looks stupid now and I should use self.id, but just for my convenience I used id because it was way easier to just use it in any function of the script not caring about passing self.id anywhere. Debugging it took a lot of time and I couldn’t find the cause of my problems because I was suspecting anything, but not this. I just, I had to complain. It might be useful information for someone someday :wink:

So, forgive me once again, guys :worried: Raising newborn twins, working full time in ICT, dog walking and caring about a new home with my wife is so time and brain consuming, that I’m only able to code in very short periods, often during communication :sweat_smile: That’s why I make small iterations and trying to keep code as clear as possible, while actually still learning Lua and Defold :smiley:

But to sweeten the expectancy I must share this new AI behavior with you :relaxed: Let’s checkout how a basic paw-armed mob tries to kill our protagonist! :scream:

Notice the new GUI, there is a health bar (red), xp bar (yellow) and inside the orb there is a choosen element - the size of the particle fx and icon depends on amount of Elemental Energy. There are control buttons also and the button below a fireball stands also for the Focus board, when the EE is 0. When you’ll charge it again with some element it changes for a proper spell - like fireball here. I hope you’d like it and I’m hoping for feedbacks :wink:

So another useful informations for Defold users would be to describe FSM I used to control mob and collision objects of mob used to detect, if hero enters mob’s FOV or range of attack. I used self.state and self.new_state to change only the second variable and check for an inequality between them in update function, so for every state change I can perform different tasks only at the moment of change, because I save new_state to the state there immediately.
In every state I enable or disable proper collision objects and listen to Trigger messages that are sent on collision with hero once, either at enter or exit. Or to Animation Done messages for example. Again, I perform there different tasks and state changes, so still everything is pure and readable. It is very crucial in that kind of huge project I’m working on alone, so I give special attention to refactoring and design rules.

The damage is sent to each other at the end of animation, but it will be changed when there will be animation cursor exposed, because it will, as @britzl said:

so I’m keeping your word :smile: Then I can check for a proper moment of animation to trigger attack collision :wink:

I don’t want to show anything that could discourage you and you won’t give it another chance, as we all know that the first impression is crucial :wink: As soon as I will complete at least this basic battle behavior with interactive mobs including using some magic and (most voted) buttons for spells aaand it will be tested and playable, I will post a demo :smiley: As polish studios usually says, it will be released, when it’s done :sunglasses:

Cheers!
Paweł

8 Likes

your game looks so good! No pressure, but the UDGJ jam is a good opportunity to ship a first demo :stuck_out_tongue:

4 Likes

Actually, I was really thinking about it :smiley: I even wanted to ask if it is acceptable, because it’s not the work of the last week, but I would like to definitely design a boss battle, that I’m lacking right now :smiley:

5 Likes

Reply from the UDGJ thread.

Then I allowed users to pull up a Focus board infinite times, because I wanted you to see all the spells. Normally it would be restricted to pull out only when you burn all the energy accumulated.

Is that much of a restriction? It seems to me the player can simply waste the energy by casting spells without a target.

I was thinking about even create another restrictions that would balance the amount of the elements on the Focus board depending on the environment - for example in the freezing mountains it would be almost impossible to “focus on fire elements around you” because there will be simply a lack of fire blocks on the board. So, one solution would be to take fire (torch) with you. Or take water bottle to the desert to use water spells. What would you think about it?

This sounds amazing! I’m a fan of a water mage being almost useless on a desert, but of course you have to make sure a player doesn’t easily get himself into a nigh unwinnable situation because of the way his character is built. I’m not sure about the torch/water bottle thing. Seems like any source you’d be able to take with you should be snuffed out by any weak spell. I guess it depends on whether your magic system follows the law of conservation of energy. An amulet or something might be better for that purpose. I guess it all depends on how the balance shakes down.

2 Likes

I’ve played around with the game a bit more with my niece (6 years old as of today exactly) and checked out most of the spells. Really nice effects! And destructible environment is always a plus in my book even if (or maybe especially when?) it doesn’t affect gameplay.

What I’m wondering is how is it roughly intended to play out - in this demo you basically have access to any type of spell at any time if you take the time to play with the focus board, which pauses the game. Is the plan to have the player specialize with a certain kind of spells or to be able to switch them at some predetermined places, or is switching/recharging just meant to be a lot harder eventually?

2 Likes

Yes, the main reason for this is I didn’t balance the game at all. It is all just like it was feel to be ok. Then I allowed users to pull up a Focus board infinite times, because I wanted you to see all the spells. Normally it would be restricted to pull out only when you burn all the energy accumulated. Normally, as it is intended to be an RPG, Estel will learn spells one by one. I’ve already implemented something that could be perceived as an upgrade system with unlockable spells - I’m testing and developing it :wink:

I was thinking about even create another restrictions that would balance the amount of the elements on the Focus board depending on the environment - for example in the freezing mountains it would be almost impossible to “focus on fire elements around you” because there will be simply a lack of fire blocks on the board. So, one solution would be to take fire (torch) with you. Or take water bottle to the desert to use water spells. What would you think about it?
(If you want to dive in - the world is created out of elements, and witchcrafters are able to control them in the area around them, for example pushing air elements in any direction, drain water elements from wet or humid objects, etc. - a little bit crazy, but based on an old alchemy that was actually overthrown by Lavoisier so late, in 18. century!)

Destructible and interactive environment is what I want to implement so much! :smiley: I want every object to be burnable, maybe pushable or affected somehow by wind. I want to make objects wet and then freeze them. I want fire to be ceased during rain. Maybe even grow plants by watering them :smiley: But all of those are dreams, that I would eventually implement, but the release would be then in late 2080’s :stuck_out_tongue: But that’s indies privilege and that’s why indie games are awesome! :smiley:

4 Likes

Yeah, so to clarify this dev diary a litlle bit I need to update it!

There was a jam! And I posted a demo and description on itch.io as my submission! :smiley:
For more information you could follow the UDGJ#1 thread :wink:

So, you could be pretty up to date with changes I was making :slight_smile: Right after the jam, there were also introduced the great change to the engine - adding control over flipbook’s framerate and cursor allowing me to perform amazing effects I was thinking of from the beginning.

But now it’s time to refactor the quick and dirty code I wrote in a rush to create a demo to publish :stuck_out_tongue:
I analyzed LowRezAdventure by @britzl and it allowed me to create separated modules responsible for functionalities like movement, keyboard controls and animation. Now I’m working to tidy up the combat and also separate it to the module. I’m creating instances of those modules for each GO like the hero and enemies, so it’s now closer to Enitity Component System. And adding to this a Finite State Machine responsible for taking care if everything is as planned an there are no bugs where you can perform something that is forbidden at the moment, everything looks now professional and I’m glad, because I can easily now implement things, add features and find bugs. So I sincerely recommend to not reinvent the wheel and follow proven and verified patterns and solutions :wink:

To summarize a feedback from the jam, I would like to politely ask you to help me decide which solutions would be better:

Select multiple statements that you consider are true:

  • Focus board is a bad idea and slows down the pace
  • The board allows to focus on puzzles, and rest from the battle for a moment
  • The time while focusing should slow down instead of stop, to create a pressure on a player
  • Player shouldn’t be able to pull out Focus board anytime, but only when EE is 0
  • Player should be able to pull out Focus board at will, but there should be max EE restriction
  • The amount of elements gained is to high
  • The amount of elements gained is to low
  • The rules of gaining elements energy was clear enough
  • The rules were unclear and it was hard to figure it out
  • Enemies should be tougher
  • Enemies should jump to
  • The boss was too easy to overcome
  • The boss was hard to beat, I couldn’t figure out when to hit him
  • The sword was irreplaceable and I used it the most
  • I enjoyed combining spells with sword attacks
  • I would like to mainly cast magic spells

0 voters

And some more suggestions, regardless the demo, but more focused on the future of the project:

  • The best approach is to allow users choose the way to play - either sword or spell fights, and then upgrade those
  • The combination of spells are awesome (water can extinguish fire)
  • The interactive environment is great (e.g. burnable bushes), add more interaction for objects
  • The spells interactivity with each other and environment is needless
  • The hero should be more lively and climb like an assassin
  • The hero didn’t need to climb at all, let’s make a closer camera cut and make it more personal
  • The hero didn’t need to even jump at all, static gameplay could be more controlable
  • The dynamic combat is ok
  • The combat could be turn-based, so a player can focus on creating spells combinations
  • It is better to design for PC and browsers (keyboard+mouse)
  • It is more suitable for mobiles (touch control) - vertically, with two hands on screen
  • If on mobile try to allow to play both vertically and horizontally
  • It could be awesome with a pad in hand (consoles)

0 voters

If you think of any more suggestion on how to direct this game, feel free to write it down or PM me :wink:

Haven’t played the Jam demo, but I’ve seen Oleg play it. I don’t know how are you going to handle that but it looked like current focus system makes player unbeatable. I’d suggest to make those runes in Focus board a collectible as drops (killed enemies or chests/ pots). Taking it forward - certain enemies drop certain runes and that gives additional challenge to manage which use and which to save for later.

1 Like

Thank you very much for your opinion! :smiley: I invite you to play the demo on yourself too, if possible :wink: It is a very WIP demo, therefore the feedbacks are very crucial for me on this stage. I will consider every one of them, so thanks again :wink:

1 Like

I certainly will play it and I think I’ll record my gameplay with shared ideas.

1 Like

It would be very appreciated! Thanks in advance! :wink:

Video
I came to the conclusion that in full release you should give a proper introduction to focus table especially add something shiny after all 4 moves on those element choice buttons because I didn’t know for a moment I need to choose. I was thinking it will make an element combination or automatically choose for me depending on points.
There were some moments of player object freeze and didn’t move. Also seems something is not working with stone magics (didn’t do trap and missile ones)

3 Likes

:heart:

Thaaaank you so much for this :smiley: It’s a very deep analysis and a great review! The work is ongoing, most of the bugs you encountered here are found and fixed, I’ll add of course more tutorials, balance and content and then release another part. I’ll think about a Focus board too! I really, really appreciate it, @NeZvers! :wink:

1 Like

You are welcome!
For tutorials try not to do “click here to do this” type tutorials. If you can visually guide player eyes without telling, it goes towards great gameplay.

4 Likes

It’s been almost 2 months since last dev log :smiley: I feel guilty for this, but instead writing, I spend my whole time, well… writing.

I did refactored a terrible mess after a quick&dirty demo release for UDGJ#1. I also had to rest from this and made a game for LD#44 - Lifeless Space. Nonetheless, it was somehow connected with my project, as I was reconsidering and designing elements interaction - e.g. contact with fire will conclude as burning, melting or evaporating the touched object, depending on its properties. Some of them are present in the submission.

Well, feedback from UDGJ also involved my thoughts about a magic system - for now I’m focusing on interaction instead of the source of the elements. And when it comes to source…

It’s the theme for next UDGJ, that I’m planning to participate too :smiley: I have an idea to use my Defluid to both Witchcrafter and my submission for the jam! That would be a win-win situation, resulting in neat water elements simulation in my both games. That’s a plan, so I have nothing to tease for now, but believe me, during the jam, you’ll see what I’m thinking about :wink:

Next of my assets I want to utilize is of course Defork - that I will use as a dialog base for my game. I polished it, and there are handled Twine “nodes”/“tags” such as: “next” - to skip displaying options to choose and only go for the next text node/ next speech, “exit” - to end the conversation and some tagged with “!” that will indicate important events that I want to save, because they will shape the world, events and characters.

I’ve managed to learn Defold and Lua at that level, that I’m encouraged to create a…

Non-linear quest system. I was working on it a lot, it’s quite generic, but it’s tuned for my RPG and Defork. I was even trying to create quest’s time-line in Twine! :smiley: I read a lot about quests, systems and dialogs design, so I hope it will be fruitful. The scenario for the prolog is created long time ago, so I started with this. It is a proper tutorial and story introduction, so as soon as it will be polished I will release it in place of my current demo, that has no tutorial.

So, be prepared :wink:

Keep your fingers crossed, guys! Cheers! :wink:

11 Likes

Any chance to go a bit in depth with this or share some useful links? :smiley: It sounds amazing!

Oh, it’s a long story, long road :smiley: In short, I have some basic types of quests that are essential, like: talk_to, kill, gather, go_to, defend. Those basic types are simple blocks to build strongholds :smiley:

For example, when someone wants you to get rid of someone from the village you have many ways to do that:

  • you can go and kill him, but along the way you could be stopped by someone, you could have an offer or a bribe to not kill him, or another quest that is more rewarding
  • you can go and convince him to leave the village, that could result in having to do him a favor or give him money for that
  • you could at last convince someone else to get rid of him (and that person could do this in different ways, or not did it all).
  • you can use magic or alchemy to imprison, intoxicate or snow him and take him out of the village

And I’m trying to allow all those ways I can think of by designing small possibilities with those blocks, that will at the end give result - an important event (those “!”) is saved to be completed or failed. Along the way of course, many other events could be modified. I’m holding all of them in single ordered list, that any of the quest-blocks can access.

Some links I was able to find again:

https://levivisser.nl/non-linear-quest-system/

http://howtomakeanrpg.com/a/the-witcher-3-conversation-breakdown.html

And some about combat:

https://web.archive.org/web/20140801081037/http:/www.altdev.co/2011/05/20/how-to-design-enemies-tips-from-a-combat-designer/

http://howtomakeanrpg.com/a/designing-a-realtime-combat-system.html

6 Likes

Thanks a lot! Tonight’s bedtime reading is gonna be awesome :grimacing:

2 Likes