Hero Academy! Can we please have more information?

I think @MysterySpin really hits the nail on the head.

  1. F2P friendly does not have to mean P2P unfriendly. It seems as if people would rather have a bad system that is equal for F2P and P2P than a system where F2P would get more results but still less than P2W. Its like people would rather get one dollar as long as everyone gets one dollar as opposed to getting 2 dollars while others would get 4. It really makes no sense. For me the definition of F2P friendly is that a feature can be used for free and has a return that is worthwhile, regardless of how much it gives a P2P.

  2. The value of the HA will inherently be better for F2P than P2P because the system will most likely feature only heroes that aren’t at the top of the power curve. So even if P2P players could do it more often and get more return the value of what they are getting is much lower to them. If you have only classic heroes then a decent HOTM holds great value. If you have the best heroes that same hero has far less value.

I think ideally you want a system that gives F2P players the option to get more of the heroes that are currently only available through summons and they hardly ever get even if that means that P2P would be able to get more.


… continue what is in my head, maybe can be like this…

  1. Hero Academy is not Alchemyst Lab, so no mats should be on exchange.
  2. Input 1x hero plus some food or irons
  3. Result should be the same rarity
Level Input Result
1 3* S1 S1, Trainer, S2, S3
2 3* non-S1 S2, Trainer, S1, S3, Event
- - -
3 4* S1 S1, Trainer, S2, S3
4 4* non-S1 S2, Trainer, S1, S3, Event
- - -
5 5* S1 S1, S2, S3
6 5* non-S1 S2, S1, S3, Event
- - -
7 5* S1 S1, S2, S3, old-HOTM
8 5* non-S1 S2, S1, S3, Event, old-HOTM

Notes: 1st result is bigger percent outcome, so for level 1 maybe 90% S1 3* hero, 8% Trainer 3*, and 1% each S2 and S3 heroes. And level 7,8 can be input more food/iron with longer times.


I wish this design but i guess it is too much optimistic. But i wish :smiley:


Indeed very nice. I’m thinking about something like this as well.

I also really like to see an option were we can ‘downgrade’ a hero and recover the mats.
So you can level your s1 heroes and recover the mats to put them on a s2 hero later on.
Especially for 5* heroes this would be great since we all have a limited source of ascension mats.

1 Like


Thank you. It’s all true. I am like you I want variety . I have almost all classics I want but sartana and marjana yet and then 4 quintus Thorne, azlar , elk who I don’t need but every month I do about 45 tc20 and it’s harder now to get the ones I want vs dupes . I have 3 joons but just pulled Leonidas and was thrilled since I have Joon already max and want a new approach.

Like you said p2w have everything they want for the most part. They can also go hard in Atlantis for missing hotm while many get one pull a month after finishing s2 since Atlantis coins need 100 to pull and the odds are horrible. My one s2 5 is Mitsuko. I can’t trade another s2 5 for a chance at another s2 as I don’t have any and if I had others likely they wouldn’t be dupes until like the classics I have most of them.
So we should ask for things good for us. I also don’t think we need to “close the gap” or if it even can be closed. P2w will get s3 heroes and always win events . Raids touraments were to help but that failed with loot nerfs. I don’t need to win an event but I would like 2 or 3 new heroes from even the pre element link hotm. That’s Delilah, Athena , Alby, but also Perseus and Thoth. That’s fine w me. I know the event heroes are not going to go in nor the s3 and likely not even s2. I think s3 and event are fine left out for pulls only. Maybe add s2 slowly as you do still get more hotm and event heroes regularly. But let us have a few .

People argue that we shouldn’t get free what was paid for. People pay for classics too yet we have tc20. Plus when you paid you were happy to pay to get your hero. Me getting one doesn’t devalue yours. Like the cable or cell phone companies do, you see a sale for 1 month free if you sign up for a year . You like that value so you sign up. 2 years later you’re paying the regular amount per month but see that a new offer for 3 free months is out but only for new customers. Does that make your deal bad? Were you happy when you made it? Does it lessen your happiness ?
I know it’s not exactly the same but given the large base vs the event top players it fits for most.
And even if they put them in we still have the same issue as p2w…mats. If as many say they have heroes but no mats and f2p have mats but no heroes then giving new heroes in ha equalizes this.
Oh and let’s not even look at the new offer that lets you pick your mat. Yes it’s $30 for gems, flask but you can pick any 4* mat. Why can’t we pick our hero like that. It keeps people playing .
Sorry I went into more detail then planned as you really put it eloquently already and I hope the devs see your post .


Oh screw it, perhaps I’ll lay out a potential design for the Hero Academy and Advanced Training Camp – Yes I said both as in my proposal the Advanced Training Camp is being revised – personally I think it was a bad idea ruling it out whilst there were clearly still question marks regarding the Hero Academy but still here we go, at least there was some preliminary artwork for an Advanced Training Camp so it isn’t completely from scratch. But anyway I’ve gone for something that I think could work within the context of the game BUT been as wishful as I like at thinking SG would be anywhere near as generous with something like this - I mean I posted my sensible comprimise at New Year so here I’m just fantasy Dev-ing here and nope I don’t think we’ll see anything remotely like this even make it near beta so yeah it’s just for the exercise really…

The Advanced Training Camp

I’ll start with the Advanced Training Camp as of the two this is the most straightforward. The ten levels being added on to the Training Camp provide the opportunity to train troops, trainer heroes, have increased chances at certain legendaries and make some older HOTM and Season 2 heroes now available from a training camp for the first time which with Season 3 around the corner is no longer unreasonable. In the Advanced Training Camp there will be a number of different tiers to make training more troops to make troop powering more accessible to all player types, colour specific Trainer Hero camps and a few new variations on Legendary Training that have expanded hero pools either in terms of ex-HOTM or Season 2 heroes.

With the mana bonus on costumes allowing slow classic heroes to shave 2 tiles off their charge times it was crucial that some troop training levels were made available to make it possible for more F2P and C2P to see the full benefits of some costumes they may eventually pick up.

List of Advanced Training Camp Levels:

ATC 1 – Train Uncommon Troops
Produces: 50% chance - 1 x 2* Troop, 50% chance - 1 x 1* Troop
Costs: 2,000 Ham, 10 Recruits and 1 Training Manual
Time: 1 Hour
Description: Designed to be the troop equivalent of TC2 for the ATC, produces low level troops cheaply to assist all players with getting the troop fodder to power their troops.

ATC 2-6 – Elemental Trainer Heroes
Produces: 40% chance – 1 x 2* Trainer Hero, 30% chance – 1 x 3* Trainer Hero, 20% chance – 1 x 4* Trainer Hero, 10% 1 x 5* Trainer Hero
Costs: 105,000 Ham, 25 Recruits and 1 Training Manual
Time: 1 Day
Description: A more useful variation on the elemental training from the TC’s with Trainer Heroes being produced instead. ATC 2 produces only Fire Trainer Heroes, ATC 3 produces only Ice Trainer Heroes, ATC 4 produces only Nature Trainer Heroes, ATC 5 produces only Dark Trainer Heroes and ATC 6 produces only Holy Trainer heroes. There could be an argument in favour of slashing the odds for a 5* Trainer Hero in half to make room for pulling a S1 Legendary of that camp’s element (with no HOTM or Season 2 chances either) to give the camp a dual purpose of trying to hunt down a TC20 legendary that still eludes a player or something however main purpose of these camp levels is producing good XP gaining Trainer Heroes.

ATC 7 – Guaranteed Rare Troop Training
Produces: 1 x 3* Troop
Costs: 105,000 Ham, 25 Recruits and 1 Rugged Clothes
Time: 1 Day
Description: An ATC level that allows you to produce an additional 3* troop a day to help with powering up your troops.

ATC 8 – Legendary Training with a chance of an ex-HOTM
Produces: 70% chance - 1 x 3* Hero, 20% chance - 1 x 4* Hero, 5% chance - 1 x 5* S1 Hero and 5% chance - 1 x 5* Ex-HOTM
Costs: 300,000 Ham, 100 Recruits and 1 Sharpening Stone
Time: 3 Days
Description: An improved version of Legendary Training with double the chance of a legendary AND former HOTM up-to and including Drake Fong in the pool of available heroes. Costs remain similar to TC20 as there is just a 5% chance of getting something outside the TC20 pool but duration is a day longer.

ATC 9 – Epic Troop Training
Produces: 90% chance – 1 x 3* Troop, 10% chance – 1 x 4* Troop
Costs: 164,000 Ham, 45 Recruits, 1 Rugged Clothes, 1 Training Manual
Time: 2 Days
Description: A more expensive ATC troop production level that gives F2P an opportunity to get some 4* troops or for players wanting to focus on their troops the opportunity to run an additional troop production level alongside ATC 7.

ATC 10 – Legendary Training with a chance of Atlantis Heroes
Produces: 36% chance – 1 x 3* S1 Hero, 28% chance – 1 x 3* S2 Hero, 20% chance – 1 x 4* S1 Hero, 10% chance – 1 x 4* S2 Hero, 4% chance – 1 x 5* S1 Hero, 2% chance 1 x 5* S2 Hero
Costs: 500,000 Ham, 125 Recruits and 1 Sharpening Stone
Time: 2 Days
Description: With Season 3 around the corner the final stage of the ATC allows for training Season 2 heroes. With chances of getting new heroes at each rarity tier the overall costs are increased a bit but remains at the usual TC20 duration unlike ATC8.

Hero Academy and Hero Crystals

The hero academy sees you be able to exchange your heroes for Hero Crystals. Depending on the number and nature of the crystals you collect you can combine them for a chance to summon or craft a particular hero from the Crystal Chamber.

There are a number of different types of Crystals you can collect which are separated into 4 different categories – Regular, Elemental, Class and Origin crystals. Each of which have different effects in the costume chamber that affects how easily and cheaply they can be got from their appropriate heroes:

Regular Crystal Category

Crystals Included: Regular Hero Crystal

Special Effect: These colourless hero crystals have no special effects in the Crystal Chamber but are the cheapest and easiest to produce in higher quantities for more tries in the Crystal Chamber.

Elemental Crystals

Crystals Included: Dark Hero Crystal, Holy Hero Crystal, Ice Hero Crystal, Nature Hero Crystal, Fire Hero Crystal

Special Effect: For each Elemental Hero Crystal combined in the Crystal Chamber +0.5% chance the hero received will be of the element specific to that elemental crystal.

Class Crystals

Crystals Included: Barbarian Hero Crystal, Cleric Hero Crystal, Druid Hero Crystal, Fighter Hero Crystal, Monk Hero Crystal, Paladin Hero Crystal, Ranger Hero Crystal, Rogue Hero Crystal, Sorcerer Hero Crystal, Wizard Hero Crystal

Special Effect: For each Class Hero Crystal combined in the Crystal Chamber +0.5% chance the hero received will be of the class specific to that class crystal.

Origin Crystals

Crystals Included: HOTM Hero Crystal, Lagoon Hero Crystal, Sakura Hero Crystal, Atlantis Hero Crystal, Pirate Hero Crystal, Guardian Hero Crystal, Avalon Hero Crystal, Grimforest Hero Crystal, Wonderland Hero Crystal, Seasonal Hero Crystal

Special Effect: For each Origin Hero Crystal combined in the Crystal Chamber +0.5% chance the hero received will be from the say family of origin as the crystal.

Obtaining Hero Crystals with the Hero Academy

So to obtain Hero Crystals you need to trade in duplicate heroes to the Hero Academy and the crystals you obtain depend on what level you ran the exchange through (varying costs) and the attribute of the hero you traded in.

List of Hero Academy Levels

HA 1 – Regular Hero Crystals from Rare Heroes
Produces: 12 x Regular Hero Crystals
Costs: 1 Rare Hero, 40k Ham
Time: 1 hour

HA 2 – Elemental Hero Crystals from Rare Heroes
Produces: 10 x Elemental Hero Crystals of same element as hero traded in.
Costs: 1 Rare Hero, 80k Ham
Time: 3 hours

HA 3 – Class & Origin Hero Crystals from Rare Heroes
Produces: 5 x Class Hero Crystals matching the hero’s class. If the hero has an origin family an additional 5 x Origin Hero Crystals of the same Origin are also produced, if the hero doesn’t have an origin family 5 additional Class Hero Crystals are produced instead.
Costs: 1 Rare Hero, 120k Ham
Time: 3 hours

HA 4 – Regular Hero Crystals from Epic Heroes
Produces: 60 x Regular Hero Crystals
Costs: 1 Epic Hero, 240k Ham
Time: 3 hours

HA 5 – Elemental Hero Crystals from Epic Heroes
Produces: 50 x Elemental Hero Crystals of the same colour as the hero exchanged for them.
Costs: 1 Epic Hero, 300k Ham
Time: 12 hours

HA 6 – Class & Origin Hero Crystals from Epic Heroes
Produces: 25 x Class Hero Crystals matching the hero’s class. If the hero has an origin family an additional 25 x Origin Hero Crystals of the same Origin are also produced, if the hero doesn’t have an origin family 25 additional Class Hero Crystals are produced instead.
Costs: 1 Epic Hero, 360k Ham
Time: 12 hours

HA 7 – Regular Hero Crystals from Legendary Heroes
Produces: 240 x Regular Hero Crystals
Costs: 1 Legendary Hero, 240k Ham
Time: 1 day

HA 8 – Elemental & Class Crystals from Legendary Heroes
Produces: 100 x Elemental Hero Crystals matching the hero’s element and 100 x Class Hero Crystals matching the hero’s class.
Costs: 1 Legendary Hero, 600k Ham
Time: 3 days

HA 9 – Elemental & Origin Crystals from Legendary Heroes
Produces: 100 x Elemental Hero Crystals matching the hero’s element. If the hero has an origin family an additional 100 x Origin Hero Crystals of the same Origin are also produced, if the hero doesn’t have an origin family 100 additional Elemental Hero Crystals are produced instead.
Costs: 1 Legendary Hero, 720k Ham
Time: 3 days

HA 10 – Origin and Class Crystals from Legendary Heroes
Produces: 100 x Class Hero Crystals matching the hero’s class. If the hero has an origin family an additional 100 x Origin Hero Crystals of the same Origin are also produced, if the hero doesn’t have an origin family 100 additional Class Hero Crystals are produced instead.
Costs: 1 Legendary Hero, 840k Ham
Time: 5 days

The Crystal Chamber

In the crystal chamber you can combine your gathered crystals to get a replacement hero. You have two methods to choose from, you may either use the crystals to summon a random hero with the specific gate and crystals used affecting your odds or you can craft a specific hero from your crystals.

Crystal Summons

The Crystal Summons are much cheaper than the crystal crafting methods and work better for players who have fewer of the hero’s up for grabs in the summon and so as such is better for F2P and C2P with fewer of the heroes that were behind paywalls. Canny use of the crystals’ properties to narrow down pools of heroes will also improve your chances.

What follows are a brief description of how each of the types of Crystal Summons work:

Legendary Summon – Costs 200 Crystals

To perform a legendary summon 200 crystals have to be combined, as they are combined the Elemental, Class or Origin odds modifiers of each crystal is used to create a probability look-up table to determine how the odds of the pull will be affected. Some examples are:

Example 1 – If all 200 Crystals you combine for the summon are Fire Hero Crystals then you have a guaranteed Fire summon (+0.5% chance per crystal x 200 crystals = 100%) and then the hero you receive will be rolled for from the pool of Fire Legendary heroes that can be won.

Example 2 – If half your 200 Crystals you combine are Wizard crystals, a quarter are Nature Crystals and another quarter are Regular Crystals then a probability look-up table is created for your first roll to determine which prize pool your prize will come from which in this case means if your roll is between 0 and 0.5 your prize will come from the Legendary Wizard pool (as 50% of your crystals were Wizard ones), if your roll is between 0.5 and 0.75 your prize will come from the Legendary Nature pool and if your roll is greater than 0.75 it will come from the basic Legendary Prize pool (as a quarter of the crystals were regular basic ones)

Once the prize pool has been determined the returned hero is randomly selected from that pool according to the rules of that prize pool (detailed a little later)

It should be noted that using all one type of a specific type of Crystal in the Legendary Summon can guarantee the hero comes from a specific prize pool so you can guarantee a particular element, class or origin – however it should be noted that as you only receive half the crystals required to guarantee a specific aspect of the summon your can’t continue doing it indefinitely with the same hero over and over until you get the one you want.

Legendary Prize Pools

Basic: Contains all the Season 1 Legendary Heroes and ex-HOTM heroes with an equal chance of pulling any of those legendaries.

Elemental: Contains only the Season 1 Legendaries and ex-HOTM heroes that match the specific element of the element’s prize pool. Ie Only Fire Season 1 Legendaries and Fire ex-HOTM in the Fire Legendary Prize Pool. Each hero has an equal chance of being returned.

Class: Contains only legendaries of the same class as the prize pool. An 80% chance the prize will be a Season 1 legendary or former HOTM and a 20% chance for a hero of this class that comes from Season 2 or an event.

Origin Pools: Contains only legendaries from the same origin within the pool with each hero within the pool having an equal chance of being returned.

Further dropdowns for info on Epic and Rare Summons from the Crystal Chamber

Epic Summon – Costs 50 Crystals

Epic summons work near identically to the Legendary Summons except that the cost less crystals to do a summons and that at the beginning they will first do a bonus roll for the 10% chance the summon will be upgraded to a Legendary summon. If it is successful a legendary hero will be returned instead and if not the prize returned will instead come from the Epic prize pools.

Rare Summons – Costs 10 Crystals:

Similar to epic summons but this time a 10 Crystal cost and a 10% chance to be upgraded to an epic summon instead.

Crystal Crafting

Alternatively to random summoning the Crystal Chamber also allows you to craft a specific hero instead using even more of your Hero Crystals to meet the specific crafting requirements of certain heroes. As those with more heroes already are just more likely to get further duplicates from random pulls this Crystal Crafting route is better off for the P2W players able to swallow the higher resource, time and hero costs to complete.

The required costs for crafting certain heroes are as follows:

Season 1 Legendary Hero: 400 Elemental Hero Crystals matching the hero’s element + 200 Class Hero Crystals matching the hero’s class.

Ex-HOTM: 800 Elemental Hero Crystals matching the hero’s element + 200 Class Hero Crystals matching the hero’s class + 200 HOTM Origin Crystals.

Season 2 Legendary Hero: 600 Elemental Hero Crystals matching the hero’s element + 300 Class Hero Crystals matching the hero’s + 300 Origin Crystals matching the hero’s family.

Event Legendary Hero: 200 Elemental Hero Crystals matching the hero’s element + 200 Class Hero Crystals matching the hero’s class + 800 Origin Crystals matching the hero’s family

The difficulty to craft each of these increases significantly as you go down firstly because crafting a specific Season 1 Legendary requires half the number of crystals as the later 3 types but as you go down the harder to obtain, more costly and time consuming to obtain Origin Crystals become a larger proportion of the crystals needed for the guaranteed crafting.

Explaining the reasoning for this implementation of Advanced Training Camp and Hero Academy

The intent of this design for the Hero Academy is have it so it at least offers something for everyone whilst also potentially being well set to even reduce the gap between P2W and F2P even if the P2W has loads of resources already saved up and waiting for it.

How you might ask? Well let me take you on a little thought experiment. Let us imagine two people playing a game where each time they get a token they can either spend that token to randomly roll for a prize from a fixed list of 20 prizes or they can save their token and once they have 10 tokens they can buy a specific prize from the board – each of the prizes are roughly equal in value and whilst you can win duplicates due to the nature of the prizes you would much prefer one of each prize than 20 of the same prizes.

Now as it turns out Player A actually by concidence already owes 17 of 20 items on today’s prize board whereas Player B only has 2 of the items. Each turn they get a coin and because the odds Player A would get something new are not as good as if they saved specifically for the best of the remaining three items they don’t have Player A opts to save their coin whereas Player B who is quite likely to win something new each turn rolls for a random prize and often gets something new.

In ten turns time where this hypothetical game will be stopped Player A finally has enough tokens to buy his one prize for 10 coins and so finished with a gain of 1 prize per 10 coins versus Player B’s luck may have landed him something like 7 new prizes for his 10 coins and the gap at the start where player 1 had 17 of the items and B only 2 of the items so that now the difference is 18 items for A and 9 items for B.

The design for the Hero Academy I’ve enclosed works along a similar principle in that F2P and C2P who will have fewer of the heroes the random crystal summons will spit out will therefore find they will find more frequent success with the converting crystals for cheaper summons (especially when using the modifying elemental or class crystals wisely) that would otherwise likely be an expensive way of spitting out one dupe after another for a more P2W player who would find the guaranteed but much more expensive Crystal Crafting route to be better for them. The costs associated with that route specifically how difficulty it will be to obtain the required Origin Crystals for a specific crafting will naturally mean they get less out for what they put in but if it is in pursuit of a much desired guaranteed hero it could be seen as worth it. So whilst the F2P/C2P player has seen let’s say 10 new heroes for the same resources the P2W player poured into getting their 1 new desired hero the gap between has shrunk slight whilst still allowing all to come away with something they value from the system.

Also it has an added benefit for SGG that even with adding event heroes it actually makes their event gates more compelling to pull at for some long term P2W players. Let’s say Player C has all but 1 of the event legendaries in a specific gate – it now means they have just a 0.2% chance of success per pull at that gate to get something new that may not seem worth it however if any dupes they pick up can now be put towards Origin Crystals to craft the final remaining hero should they wish to do so they can actually make progress with event hero summoned from that gate making pulling there again a more attractive prospect as they can at least make progress another way.

So in short not only does this combined plan for Advanced Training Camp and Hero Academy potentially have something that would appeal to each player whatever their place in the game but also makes a wider variety of heroes available than other hinted solutions whilst keeping it desirable to go for their event gates to get heroes that can produce the relevant Origin candies.

Oh man I should probably go to sleep now, will be lucky if the last few paragraphs still make any sense to people and I don’t have to completely re-edit them when I re-awake…


Wow thanks such a good detailed and f2p friendly design 10/10 comment

1 Like

@MysterySpin LOVE your idea! Excellent points and thank you for taking your time to write it all out. I would be so happy to see this feature.

I had a similar (but much much simpler) idea that involved combining multiple heroes to narrow down your output results. Almost like an ingredient list that resulted in recipes for certain types of heroes.

But the whole hero crystal thing is a much better take, it allows for so much more playability for so many more users.

Your ideas are just so well thought out. Thanks for sharing, and I can only hope some SG devs get a chance to read your ideas.


1 Like

Very nice and great idea…

And new feature… a 5* Trainer hero :coffee: :+1:


They’re hinted at/ suggested on some graphics I’ve seen… Not sure if I’ve ever seen one in game/ on any screenshots from the game but hey… The premise is there.


Love the idea! Well written and thought out.

Had an idea that ties in the AL… transmuting Hero Crystals.

Common/Basic crystals can’t be turned into Elemental or Origin, BUT you could change crystals within one of the four Archetypes.

So for example, you could transmute an Origin Wonderland crystal into an Origin Camelot crystal. Or a Fire Crystal into a Nature crystal.

(They might want to not include the origin crystal in this, since as you said leaving people with that 0.2% chance and having this as their gateway to a guaranteed hero is most profitable…)

But I could see people saying “Blargh I’ve got 7 Richards saved and I would much prefer to be pulling for a vivica right now…” … so that would be a good way to tie in AL and maybe help to monetize the feature in a roundabout way since AL already has a gem cost.


Thanks for the warm feedback for how I would go about implementing Hero Academy and Advanced Training Camp. Truth be told I think it is probably one of my longest posts ever and so am surprised so many have read it. Wondering whether I would have perhaps been better posting it in ideas section for a way of implementing it given everything is still in the dark.

I’ll confess that I reckon there might be an easier way to redo the Hero Academy I laid out as in truth this implementation idea is actually a heavily modified version of idea I had awhile back as part of an exercise to try think of alternative ways mobile games could be monetised without a direct pay-to-pull or pay for loot box mechanic that I was toying with after the loot box regulation posts as depending how that pans out internationally publishers may need to start looking for alternative revenue sources but anyway this particular idea was around how a game could be formed around a sort of Patreon style monetised system and wasn’t specifically for a puzzle RPG game (indeed in that the Crystals were more like Pokemon Go’s candy which had uses elsewhere in game also) and in that form as the game started from scratch with that system in mind it was a lot more straightforward whereas the modification to a pre-existing game that honours its current monetisation strategy added some complexity though I’m sure with some thought of building the idea from scratch with E&P in mind first, rather than adapting it from another idea could find ways of simplifying it.

Yeah I could have sworn I’ve seen previous artwork for 5* Trainer Heroes before but as I’ve never had one and not really paid much attention to the top brackets of Challenge Events I seemed to have assumed that was where they were but having re-looked at the infographics I see there aren’t high level trainer heroes in 1st loot anyway so I’ve no idea where I saw the artwork for them before but for some reason thought it was something official and may even be in code if not currently in use but if I’m wrong and there isn’t an unused 5* Trainer Hero in the code I don’t see why we can’t have one added, though for amusement sake I think a 5* Trainer Hero should have a different special to the others. Personally I’d like the special to be “If this special is used in a raid in Diamond tier and the battle is won a random trainer hero of the same colour is added to the player’s winning loot” with no other effects in the special as then people might be able to have some fun seeing if they can win some additional trainers in essentially 4 vs 5 or even 3 vs 5 matchups for some novelty…

Have been thinking for quite awhile on this one especially as the implementation I proposed separated the Season 2 heroes into their families for the Origin Crystals (though to make up for it significantly reduced how many Origin Crystals needed for a Season 2 hero compared to an event hero). Whilst naturally it is unlikely that event heroes will be anywhere near what the developers will probably do in the unlikely event they’d consider anything like what I proposed I think converting Origin Crystals would probably be a non-starter as it would allow people to craft a hero from an event gate they had never tried pulling for. If they could be converted I definitely could see P2W players putting all their dupes from say Avalon, Guardians and Grimforest towards crafting a Finley so they don’t have to ever pull at all from Pirates. As such making a hero from a gate you’ve never pulled from I can’t see a developer getting behind however if you need x number of other heroes from the same gate then at least people have tried and if they have dupes in enough quantities to craft a specific hero then there is a chance the player is close to a rage quit so at the least it is a release value to allow them to craft what they were after and keep them playing for another day…

That being said perhaps rather than have all Origin Crystals be specific to just families and that perhaps when you craft Origin Crystals 50% of them are specific to the family itself and 50% are either general Season 2 or Event Crystals of which some can be used generally towards a crafting but there would still need to be a minimum number of Origin Crystals specific to the family to ensure the player has tried at the specific gate for a successful crafting - still worth remembering that players can get lucky with using fewer crystals towards a random pull rather than a full crafting.

Converting between elemental crystals might be possible though there may need to be a penalty that has more crystals going in then coming out to ensure there remains an advantage to use heroes of the same colour to chase a hero of that colour rather than any hero that and there would need to remain a use case for Basic Crystals which allow you to also chase a hero of a different colour but in this case you get more crystals from the conversion so that it isn’t completely redundant.


Hey @MysterySpin contrary to what some think on this forum, your long posts are great and insightful. Don’t let anyone else tell you otherwise

There’s no such thing as a perfect post and all you need to know is that we enjoy reading your posts


What is it?
When will it be here,?
What does it do?

@Dai007 Hero Academy has still never been in Beta, so we have absolutely no information on what it does or when it will be released.

The only thing we know is this:

Everything else is just speculation at this point.


As much as i like your idea in an accademic kind of way, i think it is unrealistic Small Giant develope anything close to that.

Not because it’s too much generous on F2P or too less captivating for P2W, but simply because it’s too much code-complicated for the cashflow it will bring to them.

I honestly don’t think they will ever do something like that not even for some exclusive cash only content, let aside some potentially free in game mechanism.

This is not implying i do not apreciate your effort and your imagination.
I hope this could be somewhat inspiring for them, and maybe take some ideas here and there.

At least seeing how players daydream and proposing ideas about this building should tell them how much is important for us.


OK this post is going to be boring for most people but given that I’m web developer and programmer the above comment is just too much of an open invitation to ignore. Frankly I couldn’t disagree more with the assessment, when proposing it I did so in such a way in which I knew from my experience as a programmer would be relatively straightforward to program. Now whilst I said at the beginning of my post that I was putting a good dollop of wishful thinking into it (as opposed to my solution I posted in the 3 New Years Solutions post) because I didn’t think the devs would ever be this generous – code-complexity is effectively a non-issue as it is relatively straight forward.

I will warn up front that this is not my best work as I am currently ill with tonsillitis on medication that makes me both drowsy and taking frequent sprints to the loo as side-effects. Furthermore this has been done at speed (about 3 hours) to illustrate how a quickly a draft solution or first iteration could be cobbled together to work. I had fully intended to do it as pseudo-code (Pseudocode is not actual code for a computer but description of the algorithms that a layperson can follow and that a programmer can easily translate into the programming language they are using) however due to the drowsiness from my meds and that recently I’ve been working in Java a lot and not done pseudo-code in a while it so that in combination with my drowsiness from the medication means this rather veers off into some Java-esque pseudocode that becomes more and more java-esque as I go though hopefully for those that remotely care to look at it can follow most of it - also forgive the formatting of this post, spent far too much time already on it that I’ve decided this will do. However if I were not currently ill and drowsy I could easily have this refactored into better code and properly tested and integrated into existing code in less than a week in any of Java, Python, Visual Basic, C# or C++. Suffice to say it is not particular complex or challenging code – it’s rather simple that a first year CS student could even implement – that means I totally disagree with the idea being “too much code-complicated,” it is absolutely nothing compared to other projects I’ve been on.

I’ve tried to make these particular solutions as self-contained as possible as naturally I haven’t seen the game’s code but I wouldn’t have too much trouble adapting the solution to it. The only things I will assume is that there are methods to get a hero’s Element, Class, Rarity and Origin (As the game allows us to sort heroes by these attributes it is a safe assumption that there is a method to retrieve that information for a sorting algorithm to use) and that there methods for filtering the hero list by Rarity, Element and Class (Again a safe assumption as in the Challenge Event, Raid Tournament or Class Quest hero selection screens we often see our heroes in a way that are either selectable or greyed out as a result of one or more of the Rarity, Element and Class attributes). In both case as there are existing features in the game using such functionalities it is a safe assumption there are existing methods for them which out of good coding practice I will reuse.

I will also focus on just the coding for the Hero Academy and Crystal Chamber Summons and Crystal Crafting as they’re the newer ideas whereas the proposal for the Advanced Training Camp doesn’t require much more than giving new input and outputs within the existing way that the Training Camp already operates.

Keeping track of Hero Crystals in the Inventory

SGG will have their own way of implementing new items into their inventory system so this would change for their own implementation purposes but so that all the pseudocode solutions below work I’m going to keep track of Hero Crystals in the Inventory in the form of a dictionary that I can send the name of the crystal as a key to and it will return the current numbers of those crystals I have available.
As such the following dictionary would need declaring for use in inventory:

<string, int> crystalDictionary

This dictionary will look something like the following in terms of data it holds (Crystal Type, Number)
(Fire, 53)
(Nature, 20)
(Pirate, 50)
etc etc.

Hero Academy

Coding for hero academy now.

Skim ahead notice: Everything from this point up until the next bold segment after the GemSkipCost() method is nothing new (except for the haHamCosts and haTimeCosts dictionary declarations) specifically relating to Hero Academy but essentially encodes what all the TC, Forges, Alchemy Lab and Hunters Lodge do in that is a way of implementing their building, researching and skipping gem costs – none of this is new to Hero Academy implementation I propose and SGG will have their own ways of implementing it and this has only been added as invariably someone would accuse me of overlooking it if I don’t, despite it being a relative non-issue given how many other buildings they have already coded these things for. As such sensible path is to skip ahead to next bold part and not waste your own time on something SGG will already have done a version of.

The class for the HeroAcademy, please note I have deliberately omitted code for ensuring there is only 1 Hero Academy that can be built as there are various ways it could be done ranging from Singleton design patterns to creating checks each time a new instantiation request is made but regardless SGG will already have a way they use for the likes of Alchemy Lab and Hunters Lodge so won’t presume to force a particular solution.

 Class HeroAcademy
Int heroAcademyLevel = Integer variable for current level hero academy has been built to.
heroAcademyLevel = 0  *Sets initial Hero Academy level to 0 (unbuilt)*
<int, int> haHamCosts = A dictionary of the ham costs for each hero conversion.  Supply key of the HA level of the recipe returns ham cost for it. (ie Supplying 7 as key returns the ham cost for level 7’s hero breakdown)
<int, time> haTimeCosts = Again a dictionary of time for a hero breakdown.  (As this is pseudocode and I’m assuming SGG already have a way of calculating and handling their building countdowns I’m just going to put time as user-defined data type for this but not bother with how it was implemented here – not looking to re-invent the wheel here.)
<int, int> haIronBuildCosts = A dictionary of the Iron costs to upgrade HA to the requested level.
<int, time> haTimeBuildCosts = A dictionary of the duration to upgrade HA to the requested level.
<int, int> haHamResearchCosts = A dictionary of the ham costs to research HA to the requested level.
<int, time> haTimeResearchCosts = A dictionary of the duration to research HA to the requested level.
*Sets the maximum level of the Hero Academy at 10*
Int Constant haMaxLevel = 10;
Int GemSkipMultiplier = Value set by SGG to multiply the remaining time to complete building or research by this number to calculate gem skip costs
Int currentActions = Number of actions being carried out by Hero Academy at the requested time.

 *Method for the UI to call to check the maximum level of Hero Academy so that if current level = max level then the button to build further levels is disabled and hidden*
 Int getMaxLevel()
 Return self.haMaxLevel

*Methods to call to display in UI or get info for the iron and time costs for building next level.*
*Returns the iron cost of building next level – (you can only ever build the next level)*
Int getIronBuildCosts()
return self.haIronBuildCosts[self.heroAcademyLevel + 1]

*Returns the time duration of building next level – (you can only ever build the next level)*
time getTimeBuildCosts()
return self.haTimeBuildCosts[self.heroAcademyLevel + 1]

*Method to execute when build button is pressed, if user has enough iron and has a free builder it calculates time to completion so that the UI knows when it should be completed and disable the appropriate options until then or gem cost to skip is paid.*
time buildNextLevel()  
if getUsersIronTotal() > self.getIronBuildCosts AND allBuildersBusy == False:
completionTime = getCurrentTime() + self.getTimeBuildCosts
return completionTime

*Methods to call to display in UI or get info for the ham and time costs for researching a specific level.*

*Returns the ham cost of researching a specific level*
Int getHamResearchCosts(int Level)
Return self.haHamResearchCosts[Level]

*Returns the iron cost of researching a specific level*
Int getIronResearchCosts(int Level)
Return self.haIronResearchCosts[Level]

*Method to execute when research button is pressed, if user has enough ham and has free actions it calculates time to completion so that the UI knows when it should be completed and disable the appropriate options until then or gem cost to skip is paid.*
time buildNextLevel()
if (self.getHeroAcademyLevel() > 8 AND self.currentActions > 2):
alert(“Not enough free actions”)
else if (self.getHeroAcademyLevel() < 8 AND self.currentActions > 1)
alert(“Not enough free actions”)
else if (self.getHeroAcademyLevel() < 5 AND self.currentActions = 1)
alert(“Not enough free actions”)
if getUsersHamTotal() > self.getHamResearchCosts:
	completionTime = getCurrentTime() + self.getTimeResearchCosts
	self.currentActions = self.currentActions + 1
	return completionTime

*Method to calculate gem skip costs*
Int GemSkipCost(time timeUntilCompletion)
Return (convertSeconds(timeUntilCompletion – getCurrentTime)) * self.GemSkipMultiplier

New bits added specifically for the Hero Academy functions as I proposed

*Methods for getting the ham costs and duration of the particular transformation of hero to crystals for the given level*
Int getHAHamCost(int Level)
Return Self.haHamCosts[Level]

Time getHATimeCost(int Level)
Return Self.haTimeCosts[Level]

*Method for the UI to call when you enter the particular Hero Academy level so that a filtered list of the heroes you can use on that level can be presented to you when you go to choose the hero to trade in.*
List <Heroes> displayHeroes(int Level)
If Level < 4:
	*Ensures you can only select a 3* to use in HA 1-3*
	Return HeroList = getPlayersHeroes.FilterByRarity(“RARE”)
Else if Level < 6:
	*Ensures you can only select a 5* to use in HA 7-10*
Return HeroList = getPlayersHeroes.FilterByRarity(“LEGENDARY”)
	*Ensures you can only select a 4* to use in HA 4-6*
Return HeroList = getPlayersHeroes.FilterByRarity(“EPIC”)

*Method for determining what crystals you will get from converting selected hero for displaying in UI and for the HA to return once the *
<string, int> CrystalsFromHeroes(int Level, Hero selectedHero)
<string, int>CrystalsToReturnDict
String heroElement = selectedHero.getElement()
String heroClass = selectedHero.getClass()
String heroOrigin = selectedHero.getOrigin()
Switch Level:
	Case 1:
		CrystalsToReturnDict.put(“Regular”, 12)
	Case 4:
		CrystalsToReturnDict.put(“Regular”, 60)
	Case 7:
		CrystalsToReturnDict.put(“Regular”, 240)
	Case 2:
		CrystalsToReturnDict.put(heroElement, 10)
	Case 5:
		CrystalsToReturnDict.put(heroElement, 50)
	Case 3:
		if heroOrigin != “Season 1”:
			CrystalsToReturnDict.put(heroClass, 10)
			CrystalsToReturnDict.put(heroClass, 5)
			CrystalsToReturnDict.put(heroOrigin, 5)

Case 6:
	if heroOrigin != “Season 1”:
		CrystalsToReturnDict.put(heroClass, 50)
		CrystalsToReturnDict.put(heroClass, 25)
		CrystalsToReturnDict.put(heroOrigin, 25)

Case 8:
CrystalsToReturnDict.put(heroClass, 100)
	CrystalsToReturnDict.put(heroElement, 100)

Case 9:
	if heroOrigin != “Season 1”:
		CrystalsToReturnDict.put(heroElemental, 200)
		CrystalsToReturnDict.put(heroElemental, 100)
		CrystalsToReturnDict.put(heroOrigin, 100)

Case 10:
	if heroOrigin != “Season 1”:
		CrystalsToReturnDict.put(heroClass, 200)
		CrystalsToReturnDict.put(heroClass, 100)
		CrystalsToReturnDict.put(heroOrigin, 100)
Return CrystalsToReturnDict

*Method for converting hero into the appropriate crystals from the particular level*
ConvertHeroesTime(int Level)
If self.getHAHamCost(Level) > getUsersHamTotal()
Alert(“Not enough ham”)
heroToTransform = heroList.getSelectedItem()
completionTime = self.getHATimeCost(Level) + getCurrentTime()

Call upon whatever class you want to implement the countdown to activate here (SGG will already have an implementation and I have no desire to re-invent that wheel given this won’t be going into production and as mentioned before I’m ill so here comes a made up name to call whatever would do it in the game code already) that once it counts down to zero continues on…

countdownToTransformation(completion time)

*Get the crystals to add to the inventory*
crystalsToAddToInventory = CrystalsFromHeroes(Level, heroToTransform)

*Loop that goes through each entry in the crystalsToAdd dictionary and adds their values to inventory crystal values*
for (String key : crystalsToAddToInventory.keySet())
	crystalDictionary[key] = crystalDictionary[key] + crystalsToAddToInventory[key]

Crystal Pull Gates

Here is the pseudocode hybrid to show an implementation for the Crystal Pull Gates

Just going to do the methods for how a pull method could work for all the proposed gates, I’m not going to bother with code to show “potential results” as SGG will already have code for that sort of thing nor anything to post odds for if anything was learnt from my investigation of costume summons in beta that is not directly derived from the pull gate code anyway. Besides things like putting crystals into the summons would be no different to the way that Alchemy Lab you tap on the items (in this case Crystals) to add them for both summons and crafting – though ideally with a press and hold to continuously add a bunch.

Hero crystalSummon(List<String> crystalList)
String summonRarity = Whether it will be treated as a RARE, EPIC or LEGENDARY summon.

If crystalList.size() == 10
	summonRarity = “RARE”
else if crystalList.size() == 50
	summonRarity = “EPIC”
else if crystalList.size() == 200
	summonRarity = “LEGENDARY”

*Sorts the list of strings representing the crystal types used to make the summon into alphabetically order*
List<String> crystalListSorted = crystalList.sort()	

*Now for roll to determine whether the summon will be a special type of roll determined by the crystals*
Int summonTypeRoll = Returns a random number between 0 and 199
	If summonRarity = “EPIC”
		summonTypeRoll = summonTypeRoll / 4
	else if summonRarity = “RARE”
		summonTypeRoll = summonTypeRoll / 20

String summonCrystalType = A string representing the type of crystal randomly selected from the crystal list.
String summonType = A string representing the type of summon that will have been determined by the crystals.

*Using the list of sorted crystal types and the summon type roll (adjusted for the amount of crystals needed for each summons type)*

summonCrystalType = crystalListSorted[summonTypeRoll]

 *Using the summonCrystalType identify the type of summon that will take place*
switch summonCrystalType:
case Regular:
	summonType = “Regular”
case Fire:
case Ice:
case Nature:
case Dark:
case Holy:
	summonType = “Elemental”
case Barbarian:
case Cleric:
case Druid:
case Fighter:
case Monk:
case Paladin:
case Ranger:
case Rogue:
case Sorcerer:
case Wizard:
	summonType = “Class”
summonType = “Origin”

*Bonus Roll to see if a Rare or Epic summon gets upgraded or not*
Int bonusUpgradeRoll = Random number between 0 and 99 to determine if a Rare or Epic summon will be upgraded

If bonusUpgradeRoll < 10
If summonRarity == “EPIC”
		summonRarity = “LEGENDARY”
	Else If summonRarity == “RARE”
                   summonRarity = “EPIC”

*Forming the prize pool for the hero to be returned: Getting list of all heroes*
List<Heroes> prizePool = List of all heroes available in the game.

*Filtering that prize pool list by rarity*
prizePool = prizePool.FilterByRarity(summonRarity)

*Filter the prize pool by the crystal selected from crystal list*
If summonType = “Regular”
prizePool = prizePool.FilterByOrigin(Season 1 or HOTM)
else if summonType = “Elemental”
prizePool = prizePool.FilterByElement(summonCrystalType)
else if summonType = “Origin”
prizePool = prizePool.FilterByOrigin(summonCrystalType)
prizePool = prizePool.FilterByClass(summonCrystalType)
int SpecialClassPoolRoll = Random number rolled between 0 and 99 to determine whether the regular or special Class Summons prize pull is used.
If SpecialClassPoolRoll < 80:
	prizePool = prizePool.FilterByOrigin(Season 1 or HOTM)
prizePool = prizePool.FilterByOrigin(Not Season 1)
prizePool = prizePool.FilterByOrigin(Not HOTM)

*Sort prize pools by hero name*

*Prize pools are now filtered down to their respective heroes and sorted for the final roll to pick out a hero from the list.*
Int pullNumber = random number between 0 and 99.

*Determines the size of each segment to get a particular hero – ie if there are 5 heroes available in the pool then each segment is 20 (100/5 heroes) for an equal chance at each in pool*
Int prizePullIncrements = 100 / prizePool.size()

*Determines based on number rolled which segment of the list the rolled for hero is in*
Int heroNumber = RoundDown(pullNumber / prizePullIncrement)

*Finds the hero at that segment within the sorted list*
Hero heroWon = prizePool[heroNumber]

*Deduct Crystals from inventory*	
For crystals in crystalList
	crystalDictionary[crystal] = crystalDictionary[crystal] - 1

*Returns the hero to be added to your roster*
Return heroWon
Crystal Crafting

This is probably the easiest of the lot to implement as really you just need to select from a list of heroes that you want to try craft, supply the required number of crystals to meet the criteria and out it pops – for this method I’m just going to take it from the point that the hero you want to make has been selected in the UI to be passed to core system with setHeroToCraft method.

Class CrystalCrafting
Hero heroToCraft
String elementalType
String classType
String originType
Int elementalRequired
Int classRequired
Int originRequired
Int currentElemental
Int currentClass
Int currentOrigin

*Select the hero and get the requirements for the crafting*

setHeroToCraft(Hero selectedHero)
heroToCraft = selectedHero
self.elementalType = selectedHero.getElement()
self.classType = selectedHero.getClass()
self.originType = selectedHero.getOrigin()

If self.originType == “Season 1”
	self.elementalRequired = 400
	self.classRequired = 200
	self.originRequired = 0

Else if self.originType == “HOTM”
	self.elementalRequired = 800
	self.classRequired = 200
	self.originRequired = 200

Else if self.originType == “Season 2”
	self.elementalRequired = 600
	self.classRequired = 300
	self.originRequired = 300

	self.elementalRequired = 200
	self.classRequired = 200
	self.originRequired = 800

Method to add a crystal to the crafting by either one press or press and hold for multiple in a row – crystals are only added if they are a required crystal type AND the number of that crystal required is greater than the current total of that crystal. Each add increments the crystals in the crafting and decrements the crystals in your inventory

addCrystalToCrafting(String crystalType)
if crystalType == self.ElementalType AND self.currentElemental < self.elementalRequired
	self.currentElemental = self.currentElemental + 1
	crystalDictionary[crystalType] = crystalDictionary[crystalType] – 1
else if crystalType == self.ClassType AND self.currentClass < self.classRequired
	self.currentClass = self.currentClass + 1
	crystalDictionary[crystalType] = crystalDictionary[crystalType] – 1
else if crystalType == self.OriginType AND self.currentOrigin < self.originRequired
	self.currentOrigin = self.currentOrigin + 1
	crystalDictionary[crystalType] = crystalDictionary[crystalType] – 1

Method to craft and obtain hero

Hero craftHero()

*If the total crystals in each category meet the requirements for each category then return the hero you were crafting to be added to your roster* 
If self.currentElemental == self.elementalRequired AND self.currentClass == self.classRequired AND self.currentOrigin == self.originRequired
Return self.heroToCraft 

Returns all crystals in the crafting to you to start again/delete progress

Delete CrystalCrafting()
crystalDictionary[elementalType] = crystalDictionary[elementalType] + self.currentElemental
self.currentElemental = 0

crystalDictionary[classType] = crystalDictionary[classType] + self.currentClass
self.currentClass = 0

crystalDictionary[originType] = crystalDictionary[originType] + self.currentOrigin
self.currentOrigin = 0

I will not argue on you for coding, i must accept what you tell me as i don’t have any idea on how much actually could be hard or not to develope your idea.

What i did know is that Small Giant is the same company that gave to us:

  • recycled mob heroes (Aegir, Khiona, Valeria, all 3* event heroes)

  • recycled Atlantis portal (costume portal)

  • a tournament that is a slighly different version of an existing feature (raids)

  • a war that is the same story of the previous point (tournament)

  • a terrible Alchemy Lab rather then redo it from zero

I don’t see this “brand new feature” attitude in them.
Expecially what concern F2P stuff.

1 Like

Actually, I work in tech also. I thought your solution was pretty elegant and simple both in terms of ease for implementation and in terms of the user experience. I’ve seen something like this in other games. I don’t think it’s unrealistic at all.

I kind of see where @Elpis is coming from though. He/she is coming from a point of observing that there have been a lot of features that on face value seem to be pretty basic and mods of other features, but that gain them a lot of money. Whereas your idea, however elegant and awesome as it is, is harder to code than just recycling Alchemy Lab. In that sense, that was what he/she meant it was unrealistic. It wasn’t a skill valuation, but an effort/desire valuation.

Personally, I choose to be an optimist. Even if they go with half of your ideas, I’d be happy.


Yeah, you pretty much hit my point of view.

But maybe it’s not only an effort/desire matter, but even a “if it work once, it could work twice” matter too.

Minimal effort, minimal risks, if it kinda works it’s ok.

That’s pretty much what i think is their first choice of doing things.

And that’s why i expect season 3 formula to be quite similar of season 2.

Cookie Settings