puppet-coliseum / mothership

All about puppet coliseum's development
2 stars 0 forks source link

Puppet definition #1

Open donbonifacio opened 9 years ago

donbonifacio commented 9 years ago

The puppet is the base controllable element on the game and can be controlled by the player or the AI. A puppet has several slots and can be assembled in diverse ways. Enemies and bosses can also be built as puppets.

I believe that we should have a way to define puppets via data and transform the data to an element of the game.

Defining puppets

(puppet/create {:attributes [[:attack 10]
                              [:attack 10]
                              [:defense 10]
                              [:range 4]
                              [:speed 2]]
                 :attack-handlers [[:direct-attack]
                                   [:bomb]
                                   [:mind-control]]
                 :defense-handlers [[:strikeback]
                                    [:paralyse]
                                    [:poison]]})

Some issues:

We can have a create function that translates this raw representation to a hash with concrete information and functions. We can have a "puppet slot factory" that given those arrays will return something runable.

We can also have valid? and to-string functions.

Available slot types

From my experience with obb, we need to consider right now the possible actions. For example:

We can also have aura slots, that are effects that are always on (like +10 attack to all members, etc).

This is pretty simple and we can build almost anything. But we can't for example build a summoner. It had to be a move handler but if the puppet summons then how does it move? Can you think of an easy way to do this? I'd like to avoid choices per action type, because that makes the UI harder.

This is versatile and doesn't prevent the player from assembling a puppet that as heal and damage as attack-handlers. It also doesn't prevent friendly fire.

jqmtor commented 9 years ago

I like most of your suggestions but I have some questions:

donbonifacio commented 9 years ago

It's very clojure idiomatic to use vectors. The language has great support for these types and we get used to it. No need to use indexes. It was also hard to me to view vectors this way. :)

This is still very raw on my head, I think we need something more concrete.

Something like

(puppet/create "donbonifacio's minion" [[:base-puppet]
                          [:attack-hammer]
                          [:light-armor]
                          [:catapult-attack]
                          [:poison]])

Given this, we would iterate on the parts, and reduce them to a map. Something like:

After create we might have something like:

{:name "donbonifacio's minion"
 :max-health 20
 :curr-health 20
 :damage 40
 :after-attack [func1, func2]
 :after-hit [fun1, func2]}

Later on, the engine will consume all this info to make things happen.

What do you think?

donbonifacio commented 9 years ago

I didn't consider the validations/restrictions, but I also think we need that. Better something discrete, but we'll have to add cost or something. We can consider that for a given arena the total squad's budget is X. Then if each part as a cost it will be for the plyer to decide how to manage the cost.

jqmtor commented 9 years ago

OK, I just need to clarify some things. Now I see that I didn't get some things quite right. In retrospective, I think we should've splitted this discussion in two. Before defining the puppet, I think we should've clarified some concepts.

I liked your suggestion and if I got things right, I think we're near a solution.

donbonifacio commented 9 years ago

That's it. There are parts like the catapult that may add to the attack (or not), but add special powers. Catapult means that you can hit an opponent if another element is in front of him. It's a special hability.

Another attributes for the puppet might be speed, range,...

No, I have no idea atm about attack/defense.

Maybe we should define a set of runes, and start from there.

jqmtor commented 9 years ago

I am now writing the rune definition RFC and something occurred to me... Will puppets with no runes have a set of minimal stats? Or the player must associate at least one rune in order to be able to use the puppet? My first feeling tells me that it would be good if the player could not use unequipped puppets, forcing him to balance the power between the puppets, and also to making the big tradeoff of having less units on the arena. Also, will puppets have a maximum limit of runes associated with them? I think the limit would be a good thing but maybe we will only be able to figure it out after defining the runes.

donbonifacio commented 9 years ago

Yes, I think that we can add limits at anytime. The system should be extensible and easy to include limits. We should consider that. I think that those things will be better ajdjusted when we get to play-test the game.