Android Castle Builder | crafting strategy early access (Android)

Hello everyone,
so I'm finally finishing off my first "real" game - and would greatly appreciate any feedback, suggestions, or bug reports.
I've launched open testing stage on Google Play today, with the goal of gathering as much feedback as possible while I finish off some stuff like quests, graphics polish, monetization options etc.

Here's the link: https://play.google.com/store/apps/details?id=com.brusgames.castlebuilder

1628879003485.png


What's in the game:
  • Harvesting raw resources and turning them into products
  • Building tower floors (max. 7+3 for now), each with its unique workshop
  • Offline progression - if there is enough resources, your workshops, explorer and cart will continue to work even when offline
  • Map exploration, resource collection, very basic army and combat mechanics

A couple screenshots from the game:

1628879219180.png 1628879588663.png 1628879239148.png 1628879261049.png


Rough in-game video:



Thanks in advance for any comments or (positive) ratings on Google Play :D
 

woods

Member
from map clicking on castle icon i get CTD
error in action number 1 of alarm event for alarm 1 for object obj_castle_map
variable get 134(100468,-2147483648)
gml_Object_obj_castle_map_Alarm_1 (line 9)


also tried to scroll the map around a bit and got CTD
error variable get 134(100468,-2147483648)
gml_Object_ctrl_dragging_Step_0(line 44)


overall tho.. pretty neat little game
keep it up ;o)
 
Bro I think this game isn't very good. It seems tedious and unintuitive. The micro transactions are a big turn off too and I'd be surprised if anyone would buy them. The Google Play store is saturated with trash apps that are full of advertising and micro transactions. My advice is if you want to make android apps don't do it to make money. Make something fun and unique and keep your integrity as an artist.
 
from map clicking on castle icon i get CTD
error in action number 1 of alarm event for alarm 1 for object obj_castle_map
variable get 134(100468,-2147483648)
gml_Object_obj_castle_map_Alarm_1 (line 9)


also tried to scroll the map around a bit and got CTD
error variable get 134(100468,-2147483648)
gml_Object_ctrl_dragging_Step_0(line 44)


overall tho.. pretty neat little game
keep it up ;o)
Thank you, good catch! These are both related to screen resolution (resizing) on game start, where I forgot to set a couple values for phones which have the same resolution as what's default for the game. And didn't catch it because the phones I tested it on actually both have non-standard resolution :) It will be fixed later today as soon as the update goes live on Google Play. Thanks for giving it a try!
 
Bro I think this game isn't very good. It seems tedious and unintuitive. The micro transactions are a big turn off too and I'd be surprised if anyone would buy them. The Google Play store is saturated with trash apps that are full of advertising and micro transactions. My advice is if you want to make android apps don't do it to make money. Make something fun and unique and keep your integrity as an artist.
I hope it will not be tedious for some, I actually enjoy this kind of "grinding" games where you slowly build up and craft. In some games it can take you even months to finish all the stuff... Of course, it's not for everyone - but I believe there's a lot of people (including myself) who actually prefer games in which you don't have to spend a lot of time at once, because I never know how much time I will have available at the moment - so I just play in brief moments from time to time, maybe on a bus or while waiting or during a break...

Micro transactions and advertising can of course be a turn off for many, but if you want to try and make a living making mobile games, or at least have it as a side-job, there's not really any other option, unfortunately. Except for going premium from the start - but personally, I very rarely buy mobile games without trying them out first, and so does a majority of players - which makes it very hard for premium apps to succeed or even get discovered. If you play the game and enjoy it, then you can (but don't have to) pay something extra for it, or watch a few ads from time to time. It's a delicate balance between being too "free" and too aggressive - and sure, I might have gotten it wrong here - numbers will tell after some time :)
 
I was playing your game, which I do enjoy this type of grinding, and found a error. Went to start up after an upgrade finished and got this...

ERROR in

action number 1 of Alarm Event for alarm 1 for object obj_castle_floor_upgrade:

Unable to find any instance for object index '0' name

'obj_building_top'### ## gml_Object_obj_castle_flo or_upgrade_Alarm_1 (line 68)
 
I was playing your game, which I do enjoy this type of grinding, and found a error. Went to start up after an upgrade finished and got this...

ERROR in

action number 1 of Alarm Event for alarm 1 for object obj_castle_floor_upgrade:

Unable to find any instance for object index '0' name

'obj_building_top'### ## gml_Object_obj_castle_flo or_upgrade_Alarm_1 (line 68)
Yes, that was an annoying bug, I actually found it yesterday too and spent most of the day trying to fix it... Now it should be OK, sorry for the problems - update 0.1.5 which fixes this is live on Google Play, it should be enough just to update so that you don't lose the progress. Thank you for the report!
 

Mr Magnus

Viking King
I enjoy the idea. It's a bit too slow for my liking and I think the monetization is fairly steep for how little it really offers, but I've been sick today and it's been a decent enough thing I can check on trough-out the day. I'm not sure it has much staying power for me personally, but it's fairly well put together.

I'm however quickly reaching the point where I feel like I have nothing meaningful to do or work towards. As much as watching iron ore numbers go up I'd very much appreciate if I had a bit more to do in between all the waiting.
 
I enjoy the idea. It's a bit too slow for my liking and I think the monetization is fairly steep for how little it really offers, but I've been sick today and it's been a decent enough thing I can check on trough-out the day. I'm not sure it has much staying power for me personally, but it's fairly well put together.

I'm however quickly reaching the point where I feel like I have nothing meaningful to do or work towards. As much as watching iron ore numbers go up I'd very much appreciate if I had a bit more to do in between all the waiting.
Thanks for the feedback, glad you enjoyed it at the start! I agree, there's not much to do after a while - will try to think of ways to add more content and stuff to do.
 
I've still been playing your game and noticed something. Sometimes spots I have explored will get covered back up. Not sure if a feature or not but it's rather annoying. Also got another error that has impeded me from playing.

ERROR in

action number 1 of Alarm Event for alarm 1 for object obj_building_floor_1:

Unable to find any instance for object index '0' name 'obj_building_top'### ## gml_Object_obj_buildin g_floor_1_Alarm_1 (line 12)

Hope this helps.
 
I've still been playing your game and noticed something. Sometimes spots I have explored will get covered back up. Not sure if a feature or not but it's rather annoying.
Hi, thank you for the report! That's weird, the way it's set up is that whenever a tile is uncovered, it saves the position and then on next start, destroys all fog tiles which collide with the coordinates. I'll have a closer look at it, I've also heard this from another player - not sure what it's caused by yet.


Also got another error that has impeded me from playing.
Yes, that one is extremely annoying, and affects quite a lot of players actually, although I haven't been able to reproduce it even once yet... However, after trying to fix it for the past few days without success, I've basically rewritten the part of code which handles the tower on the right and its top part (ramparts) - update is on the way, now waiting to be published.


Eventually, I found out (after a frustrating number of hours) that a weird thing happens - sometimes when I try to destroy an instance, GMS destroys a different instance instead 🤯 The problem seems to be that in the create event, I would sometimes set "blank" instance, e.g. tower_top = 0; and then later, when that instance is created, use tower_top = instance_create_layer... - which I thought should work just fine, but for some reason, there's a big difference between setting the instance to 0, -1, or any other random ID... I hoped -1 would work just fine, but when I do that and later try to destroy that instance, it destroys a different one...

From your experience, how would you suggest to handle it, in general? Not declare not-yet-existing instances as -1 at all and handle it differently? Or use "noone"? That didn't do the trick for me either... I hope this makes sense, I'm still unsure what exactly was the problem.

For example, in castle floor code, I would previously do this (simplified example):

tower_top = -1;
tower_top = instance_create_layer...
instance_destroy(tower_top);

...but then it would sometimes destroy not the tower top, but the castle floor itself... Really weird, I must be missing something important :)
 
Without knowing how the code goes I can only make an assumption. So I'm assuming that you set to destroy the top layer in a room start or game start option and the instance is set in create. Since the room start and game start run before the create does, it would then not be set right and deleting the wrong thing or not finding an instance at all. Essentially what I'm trying to say is code is running before it is set to be the top layer and so it can't detect top layer. Also negative numbers can have a different meaning depending how they're used.
-1=self, -2=other, -3=all, -4=noone
 
-1=self, -2=other, -3=all, -4=noone
Oh, I think this is probably what messed it up for me, thank you!

I thought using -1 was a recommended way to avoid problems, but now I realize that actually when I declare in create code of (for example) floor object a variable "some_stuff = -1", and then do "instance_destroy(some_stuff)", it will actually destroy the floor object itself, if the "some_stuff" is still -1... Wow, I'm surprised I didn't run into this problem sooner :D
So in general, using -4 should be the safe way to declare these at the start of game, if I understand correctly.

Anyway - I already fixed that specific problem in the game in a different way (basically rewrote this whole part and made it much more simple too), so it should work fine in the next update now waiting to be released (1.0.7). Thank you for your help and testing the game!
 
Not sure how but this happened...
Thanks for the report - unfortunately, you're not the only one dealing with this. It's actually caused by my overly "intelligent" solution for the mines :D I was afraid that if I moved anything on the game map to a different position in an update, it would crash the game or cause save game issues for players who already placed some mines, and now there would be something else (or nothing) in their previous position. So I did it in a way which basically places the mines "dynamically" to the nearest position of the given resource - regardless of where the mine was before.

I hoped it would prevent issues, but it actually caused more of them. I'll try to fix it for the next update, but I'm a bit worried that messing with the complex system now could break it even more :) I should have just saved and loaded the positions of all camps and resources for each player, not have them move around whenever the game map changes for any reason.

Btw. I also added village building in the last update:

3.png
 
I see, I thought it was something I did but that makes sense. Just wanted to let u know about it if u didn't. My games update automatically so I have the village built already.
 
Top