Zooconomy (Strategy-puzzle)


Well, i should state that it will be probably a biweekly devlog now) I have been very busy lately, so not so many time was left for blogging.

Again! But this is one of the main screens, so. I can now show other map styles for the world map:

Summer edition of the map:

Autumn edition of the map:

And spring:

You can see that we added mountains to maps as well as some relief. To answer the main question about different climate zones in northern and southern hemispheres, i will say that this is still a game, so it may not be 100% accurate, but the main reason is that “real” mapping in the seasons is not so colorful and goodlooking. We tried to do it right way, but it looked boring, so we came up with this solution. And here is the gif with seasons changing:


We hit 100 drawn animals and we will pause drawing for some time. Mainly because it’s not clear right now if we need more animals. Behold: Tapanuli orangutan, Mariana fruit bat, Bali myna, Giant anteater and famous Fennec fox.

That’s all. Stay safe, see you in a two weeks.



It is another friday and I’m ready to share recent progress on Zoo Economy.

Encyclopedia -> Zoopedia
Encyclopedia appeared in some of the first builds. Reason for it was, that some information about animals and zoos was already collected and stored. It was used for gameplay and why not use it for education? As it wasn’t MVP and was a side ‘product’ for game, not much attention was paid to it. In first iterations it was just list of animals names, latin names, zoo names and foundation dates. More focus was put into game itself. It looked something like this:

With new main menu, design was slightly changed, adding search option (due to increased number of zoos and animals), filtering and selection screen. Animals and zoos was put in one form, with selection to toggle between animals and zoos encyclopedias. As you can see they have same base, with different information. More information, but still not enough.

Problem was that for animals there are much more information. And encyclopedia can be used in game to learn facts about animals to better bread them for example (of course some information is available in breeding menu). So they have to have different bases. And in my traditional manner, in final redesign I address all these issues. And I really hope that it will be final redesign of main menus. Cause it also happening for settings, campaign and sandbox menus right now.

So, now Encyclopedia is Zoopedia. It has one more category - Hints. Right now it is empty, but by release it should have valuable information for player, hints, additional tutorials etc. Like civilopedia in Civilization series.

Filtering and search options stayed the same, but animals list is now class based, so all mammal animals will be in one category. It helped to remove class filter option and made list more structurized. On the right you can see big block with ALL information about selected animal in the game. It features not only conservation status, lifespan, rate, income, housing, but also mating information and small text description.

Zoos list is also structurized but by their continents. Zoos does not contain much more information than the previous version, only addition was to add text description about the zoo. It was time consuming to collect the data, but i think it worth it. I’m glad how it turned out in the end. Only one thing is missing - button to toggle between animals, zoos and hints. I couldn’t not find place for it in this design.

And to finish this post, as usual some new animals. Meet Crested porcupine, Kea, Brown greater galago, Aardvark and Eastern barred bandicoot. I have a pretty nice achievement for the last one :wink:

That’s all for today. See you next time.



Wait. Friday? December? Oh no. Time flies fast. It is almost last devlog in 2020, so without further ado, get ready for new campaign menu.

Couple of devlogs ago i have posted updated version of campaign menu. Already then i wrote that i will update it again. So following my plan to update whole main menu last time (:rofl:) here is the latest and I’m pretty sure the final iteration. Some small changes will be ofcourse applied for special missions, but overall UX will be the same.

Now we have mission type selection. It is similar to zoopedia type selection about which I wrote last time. In tutorials you will select tutorial missions:

In missions - historic based missions:

And in special - limited-time missions. Inside each type you can see mission selection, larger image of mission, title and small description. Now it supports scrolling. In my opinion it looks much better then last iteration and more ‘clean’. Special mission looks a little bit different:

Also you can return to mission type selection :sunglasses: which was lacking in zoopedia. And here is the retrospective on different versions)

First iteration was simple blocks with image and short description. Other information was shown in briefing, so player will only know main details when he starts mission.

In second iteration scroll was added as well as arrows to move list of missions. No main info here.

Third iteration removed arrows and as new main menu animations were introduced, mask for missions were extended to the right edge of the screen.

Last iteration finally brought more information to the mission selection screen, but something was off.

And now everything is fine and looks good :slight_smile:

As always new animals: Common bottlenose dolphin, Red-and-green macaw, Southern three-banded armadillo, Markhor and Japanese macaque.

That’s it for today. Coming up next: sandbox menu redesign, end of 2020 and plans for 2021.


Is Defold a good choice for an economic strategy game with idle/incremental mechanics?

Well. Maybe the last post about Zoo Economy in 2020.

Sandbox was created as alternative to Campaign mode with ability to customize game rules, select starting zoo etc. And as final act of my redesign i have completed it. It was most complex UI element in main menu and it additionally require integration with several game systems. So now it looks like this:

If follows base design of rest of the main menu and It now features new customizable elements, space for future elements and as part of it player can now select how many zoos he\she wants. In future I would like to allow player to even select other zoos, which won’t be possible with old design.

Number of zoos was increasing, as new ones were introduced and it was starting looking like around 40 zoos is maximum optimum number of zoos on map. With more zoos it can probably became a tech problem, but now it mostly esthetic and gameplay problem. By default 30 zoos will be set, but if player wants it can be changed.

Sandbox retrospective
This how it looked in previous version. Giraffe was nice, but he was taking some valuable space, so i had to sacrifice it.

Customization was lacking space and wasn’t future prove.

Zoo selection stayed mostly the same, but now it includes selected continent and has more space for zoo name.

Other versions were pretty much the same, just with less customization options.

Zoos generation
As now player can select number of zoos I needed some sort of a system to generate subset of zoos (if it less then total number of zoos). Additionally i wanted to make zoos as distance from each other as possible to create more diverse look on map. And it created some challenge. Each zoo has it’s own position on map and my first idea was to select player zoo as base point and calculate distances from player’s zoo to every other zoo using simple euclidean distance. Then sort distances, select max distance and add this zoo to the subset. Then repeat this process until we found our desired subset. To account for freshly added zoo, distances now calculates for players zoo and all other zoos already added in subset. Each zoo which is not in a subset keeps total distance to zoos in subset, then sorting, selecting zoo with max distance, addition to subset etc. Something like this:

  1. Add Player’s zoo to the empty subset
  2. Calculate distances from zoos in subset to all zoos NOT in subset
  3. Sort distances and found most distant zoo from zoos in subset
  4. Add most distant zoo to the subset
  5. Repeat 2-4 until desired number of zoos are in subset.
  6. Profit!

Problem 1
Using just player’s zoo as first base point we will create the same subset each time for same player zoo. I solve it by adding as second base point random zoo. It is some sort of seed. With enough number of zoos it can generate many unique subsets. So point 1 became:

  1. Add Player’s zoo to the empty subset and add 1 random zoo

Problem 2
Selecting most distant zoo created another problem. If we have player’s zoo at position 0, zoo A at position 1000, zoo B at position 500 and zoo C at position -20, current algorithm will select zoo C, not zoo B which is more distant from player’s zoo and zoo A( which are in our subset). It is happening becasue total distant for zoo B will be 1000 (500 from player’s zoo and 500 from zoo A), but for zoo C it will be 1040 (20 from player’s zoo and 1020 from zoo A). More distant zoos in subset will add ‘weight’ to nearest zoos from other zoos in subset. I didn’t quite fix this problem and i see it as temporary solution. Now i select zoos with average distant from each other. Mostly it generates good results, but sometimes can create bad ones:

  1. Sort distances and found average in distance zoo from zoos in subset

Some examples (subset of 10 zoos):

Honolulu zoo (No zoos from Oceania, but subset is mostly nice)

Budapest Zoo (No North America zoos, most squeezed)

Budapest Zoo 2 (Now whole America without zoos)

Perth Zoo (A lot of Oceania zoos, which is not very nice)

I would like to hear your thoughts and maybe ideas to improve current algorithm.

Plans for 2021
I’m finally planning to release the game next year, somewhere in spring, but delays can of course happen. Around 50% of content is ready and about 60% of all mechanics. As some things are more or less polished i can easily add new content and implement rest of the mechanics. Anyway i have two more things which I really want to share with you in the 2020. But you have to wait a little bit :slight_smile:

It was the last devlog of 2020, next one will be in January. So see you there. Happy holidays everyone. :cocktail::snowman_with_snow:



Looks like your making something really fun!



So, we made it to 2021! New year, new announcements.

New name
Some of you maybe already noticed, but we have renamed the game by combining old words together - Zooconomy. Now it is more unique and distinctive :slight_smile:.

New logo
Behold, our new logo

Also sometimes we use separately only words or only panda icon.

New key art
And to accompany new logo and get rid off of stock elements in old key art, we created a new one. It’s more complex and we will use it and it’s variants in all stores and pages.


I’m planning to use elements from key art in main menu.

Discord channel
Yes, we have a discord channel which you can join as well)
We are planning to gradually increase marketing and social activities, so stay tuned.

New demo
And as finishing touch you can play new demo on itch. It has the same number of missions as previous one, but has updated menus, new features described last time and more animals to play with in sandbox mode.

And that’s all for this short, but informative devlog. See you next time, with more news and updates.



The new logo (and name) are really great! Hopefully I’ll have some time to play this weekend :slight_smile:



Well well. Another two weeks had passed. It’s time for new devlog post!

This week I hit two milestones: 105 added animals and 80 added zoos. :partying_face: It’s pretty much all animals and zoos which I want on initial release. New animals and zoos will be added later via small updates and patches and via big updates, like for USA zoos. There are so many zoos in USA alone, so I have to pack them in another update later)

Missions images
All missions images were updated for initial release. Some limited-time missions are still missing, but I will deal with them later.

Avatars animation
A while back I was testing animal avatar animation with spine. And it went well, but I thought that it was time consuming. Recently I spoke to the publisher and he suggested this idea again, but to use more simple animations, less detailed. It mostly depend on animal itself, some are easier to animate, some are harder. But as it turned out there is a big technical problem which I have to overtake. We will see.

Here is detailed animation:

And here is more simple version:

So I’m gonna run some test and try to fix technical issues. That’s it for today. See you next time.



A small glimpse of animation process. In this timelapse video, I’m animating Pallas’s cat in Spine: body and eyes. After that some cleanup and it’s done.




oh god, I’m really in awe of how it looks!



I’m running out of intros, so let’s go. Welcome to another devlog.

On itch I stumbled across commentary that demo crashes immediately after launching it or very soon after. User had a laptop with integrated graphics card. So I wanted to see how can i optimize the game. It’s ‘normal’ if the game freezes of crashes during the gameplay, but not in the main menu)

As it turned out, due to my lack of knowledge in Defold when I started the project I have selected not so great architecture. Almost all game was loaded during the initial run, as Map collection was set to preload in monarch settings as well as all UI elements, which were disabled right after loading. I have to reset many UI after game ended\loading etc and mostly clean game variables and other things. A lot of unnecessary code and checks.

So I started painstaking process of moving all game related UIs and controllers inside game loop, removing additional checks and cleanup procedures. The idea to have Map collection preloaded was due the error when call to the collection was before it was loaded. Back then I thought that preloading was great idea :slight_smile: . That’s why Cat Stories gave me great opportunity to start new project from scratch and came up with several ideas of suitable architectures. And I learned from it a lot.

In the end I moved everything game loop related and got more elegant and ‘cleaner’ system. Of course I had to trade something in return, like UI is in the same collection as all other elements and I can’t use set_time_step in that collection, as UI will also freeze.

I run some test which I mentioned last time and now have animal avatar animations integrated in the Zoopedia. As only few animations are ready, I’m using double system, so if animation exists it will be shown if not - usual sprite avatar will be shown. Thanks to @dapetcu21 I use round sprite mask above animation which hides animals body and other elements inside nice circle. It’s white, so I can color it in bg color and match it perfectly.


I liked that system so much, so I rebuild progress bar in Tasks menu for the third time). Before it I noticed that it if this screen is opened overall performance is lower - around 48FPS. It is not noticeable unless more elements are opened in the same time. Which slows all animations. Progress bars uses stencil masks and on the same screen can be up to 10 bars. Using technique above I got rid of stencil masks and use only sprite masks.

Now it’s very simple: main background node, mask\overlay which can be colored to match background of the scene, text node with useful information and bar itself. Which is operated by controller calculating how much progress is done and which sets appropriate length of this node.

Immediately fps became around 60, which is great. Unfortunately there are some issues somewhere else, as if notifications menu is open and news are displayed fps is again around 50 and animations becomes slow. It mostly occurs when this menu is open, but could happen in other places too. Time for more investigation and optimizations!

And on this terrible disappointment it’s time to end)
I hope that next time I will implement some new mechanics or expand older ones.



There is a Defold bug that severely impacts performance when moderate amounts of text are drawn on the screen. Maybe that’s what you’re hitting? https://github.com/defold/defold/issues/5313



Thanks, I’m gonna look at it. Maybe it is the root of all problems



I’ve added this to the roadmap for 2021 (https://github.com/defold/defold/projects/46). Hopefully something we have a chance to look into soon!



It might indeed be the problem. I have notification menu which can be opened. Inside it there are text nodes. When game starts no notifications therefore no impact on performance, more you play -> more notifications you get.

Right after start:

Everything is pretty much stable. No other texts, except news headline, are rendered. When four notifications are shown:

Fps is around 45. I think can optimize everything more, like not render notifications menu when hidden, maybe change something in gui layers. I probably need to make a stress test and just run the game for half an hour and see what happens.



Why time flies so fast? It’s time for another devlog and it’s packed with news!

New animator
I finally hired animator to help me with animals animation. It’ still takes some time to prepare files for animation and for later corrections, but it’s way better than if I was animating everything by myself. After animals, missions and events will be animated.

Sorry, no gif

Way back I have created a base for random events and made two random events: Animal escape and Epidemic. They were presented to the player without any choice: you have just accepted it. Because you can’t influence epidemic or animal escape. In this two weeks I completed other planned events, where player has choice and refined already implemented once. For example, repair event used to look like this:

Not it looks like this:

It now clearly shows disadvantages.

This is repair event which also has no options. You have to repair enclosure:

In flooding event you have option to accept offer or to decline it. There is no penalty for declining, but you will increase relation with this zoo, if you will accept it. And after two month this animal will “return” to the home zoo:

Sometimes you will be offered to keep animal, which was saved from poachers:

And in forest fire event you also have option to get new “free” animal:

What’s next? I’m gonna balance them, because currently there is a hidden “timer” for events, which only checks that same event does not appear twice in a row. And if it happens it just select next one. Also player will be able to spend money on better health checks or maintenance which will decrease chances of epidemics and fallen trees. So I need to create separate “timers” for different events.

Zoos placement
Also some time ago I created system to place zoos on map (of course it’s more selecting than placing, as all zoos have their place on map). It kinda worked, but not in the way I wanted. Zoos in some cases can be placed very close to each other. So I asked my friends and they told me, that maybe I’m solving wrong task. I used to select most distant zoo from already selected, calculating distance from all selected to the new one. But they told me that I need to find maximum of minimal distances in selected subset (https://cs.stackexchange.com/questions/22767/choosing-a-subset-to-maximize-the-minimum-distance-between-points). So in new implementations I’m using ‘greedy’ algorithm:

  1. I’m selecting one of the non-selected zoos
  2. Find minimal distance between zoos in this ‘new’ subset
  3. If this distance more then previous subset with different new zoo, I mark it
  4. When all non-selected zoos were checked I finally add this marked zoo to current subset
  5. Continue until desired number of zoos found
  6. Profit!

On small number of zoos both versions were ok
5 zoos, old version

5 zoos, new version

With more zoos new version is better. Zoos are more widespread and evenly placed.

30 zoos, old version

30 zoos, new version

And that’s it for today. See you next time :frog:



Looking great! The events are a cool idea. I’ve been working on a similar system recently so that gives me flashbacks, haha. I like that the bad events can be reduced depending on how the player approaches zoo health/safety.

I really think the animal animations are great! I imagine it’s a huge amount of work to convert 100+ still images to animations, but they bring so much life to the UI and an increased focus on the animals. I’m sure that work will pay off for immersion in the finished game!

One small feedback I have on the map would be that the yellow and green colored location pins don’t really stand from the map background. Do the colors indicate anything? It might be worth changing them to a contrasting color like red to see if they stand out better.



Thanks for the feedback. Yes, they represent with green color player zoo, with yellow color regular zoos, with red color zoos which player ‘marked’ and in blue the zoo which player recently visited. I’ will probably change or alter their color a little bit or increase outline around them.



Welcome back to another devlog. A lot of things happened for the past two weeks. Mostly it was marketing related and some part of it I really hated.

I have launched more player related devlog on steam and on youtube. First one covers the main idea behind the game and map evolution. You can read it or watch it.

The work continues on animals animation as well as new music. We already have 3 game tracks and main menu track done last year and recently 4th was finished and 5th track is coming.

Yesterday “The SWW Show” recorded an interview with me about the game as a whole, about idea and about gameplay process. So its is coming soon, but I’m not sure when.

One of the comments under first devlog suggested to add night version of the map and even animated version when it will change during the day. While animated version might be very quick and unpleasant when using x6 speed in the game, but what do you think about night style?

I used some time to make money in the game in one style: like moving dollar sign after money in evry menu and adding additional + and - signs when describing spendings and income.

Like finances menu looked like this:

Now it looks like this:

Also as you can see I made manage maintenance and manage medical available. So now player can spend money on them and reduce chances of animals to get ill or to escape. These events will happen less often (at least I hope so).

This addition triggered another change to event system. As I told before it used one timer for all events, but now each event use it’s own timer and in this way I can influence each “probability” (but it is still random). Unfortunately now events can happen one by one, which will annoy the player. So I will probably add cooldown timer common for all events. But it will be really tricky to set time, that player won’t be bored and at the same time events won’t happen to often. Cause playing on x6 the year will go in 4 minutes of real time.

That’s it for today. A lot of work is still ahead. :whale:



Welcome back to another biweekly devlog.

I wanted to take a break from rebuilding ‘old’ menus, so I started working on Expeditions mechanic. I wanted to create some mechanic wich will be placed on map along with zoos. In that way, player will have to look at the map from time to time and not just speeding up the game, waiting for breeding or other events. But I still didn’t know how it will work.

After a small brainstorm everything seemed clear. Player can start expeditions only for critically endangered animals. They will appear on map in specified locations in random order. But the main thing about these animals that player can’t exchange them with other zoos. Only to study them or breed. Also zoo rating will be increased.

Map with available expedition.
Right now most art is a placeholder (except one image for mammal animals)

Here you can see expedition to get antillean iguana. It will take 2 months and will cost 1000$.

The same for pangolin. Each expedition will be available for some time and then disappear from map. In future with more critically endangered animals more expeditions will be available.

All current expeditions.

I will get back to this topic when all art will be done. This mechanic interfere with a lot of other mechanics, so I will continue working on it next week.

And that’s it for today. See you next time :octopus: