TUXDB - LINUX GAMING AGGREGATE
made by: NuSuey
NEWSFEED
GAMES
▪️CROWDFUNDING▪️COMMUNITY DEALS▪️STEAM DECK▪️CALENDAR
tuxdb.com logo
Support tuxDB on Patreon
Currently supported by 11 awesome people!

🌟 Special thanks to our amazing supporters:


✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Benedikt][David Martínez Martí]

Any feedback for tuxDB? Join us!

Screenshot 1
Fullscreen Screenshot 1
×
Screenshot 2
Fullscreen Screenshot 2
×
Screenshot 3
Fullscreen Screenshot 3
×
Screenshot 4
Fullscreen Screenshot 4
×
Screenshot 5
Fullscreen Screenshot 5
×
  • Build houses to give your villagers homes.
  • Clear farm fields to grow a variety of crops, from basic staples to exotic magical ingredients.
  • Open shops that turn raw resources into valuable goods.
  • Construct warehouses to store your resources and goods.
  • Take the resources and goods your villagers make and turn them into gold!
  • Trade for other resources that your villagers need.
  • Invest your gold to expand your village.
  • Refuel trains that stop by on their long journeys.
  • Keep the railway happy and pour in gold to improve it.
  • Unlock new types of goods and resources.
  • Create opportunities to grow into a prospering town!
Iron Village
Lunar Chippy GamesDeveloper
Lunar Chippy GamesPublisher
1970-01-01Release
🎹🖱️ Keyboard + Mouse
🕹️ Partial Controller Support
🎮 Full Controller Support
Very Positive (54 reviews)
Public Linux Depots:
  • [0 B]
  • [0 B]
Diary #68 - 1.2.14 Release Notes

Surprise, it\'s another update for Iron Village! Iron Village got a big bump in sales recently, which initially looked like an end-of-sale spike, but turned out to be driven by this video by the Geek Cupboard :

It\'s awesome to see Iron Village popping up still, but of course more players means more opportunities for bug reports! There were two bugs reported last week:

[olist]
  • On Android, the foundation for the Magick Transformer was missing, so the player couldn\'t build it.

    [/*]
  • On the Steam Deck (but also PC), the controller would stop responding when going back to the menu, even though the menu was in focus.

    [/*][/olist]

    I\'m still not 100% sure what happened for #1, especially since I couldn\'t reproduce it, but it did highlight the difficulty of debugging on someone else\'s Android device. Actually accessing saves isn\'t possible right now (each app\'s storage is kept secure from any other app accessing it, but that apparently includes the user too), and in order to get any logs you have to ask the user to install adb, plug their phone in, reproduce the bug, and copy/paste the relevant logs. (Hope the player understands what\'s relevant!) As you\'ll see below, the changes made here are mainly band-aid fixes, UI to better surface issues, and unrelated bugs I encountered.

    For #2, the issue was specific to how I implemented the Steam Input API. Whenever an action came in, it would let the [c]ControllerHintManager [/c]know - that way, the controls get shown when the player is actively using a controller. I have [c]ControllerHintManager [/c]implemented as a singleton: it\'s a type of object in the game, but it\'s designed so that only one exists at a time. This singleton \"pattern\" can be implemented a few different ways, but in Iron Village I just use a static variable Instance, and set that when the first instance gets created. The singleton is an unfairly maligned pattern IMO - for a lot of software it does end up encouraging bad design, but there are quite a few places where it can be done more responsibly in game development, especially in smaller projects. Is it a good idea in this instance? IDK, it\'s not great, but not terrible.

    Anyway, the issue here is that [c]ControllerHintManager [/c]only exists in the game itself, not the main menu. The first time you load the menu, this is fine - there is code that checks if Instance is null, and skips talking to the [c]ControllerHintManager[/c]. It works fine within the game of course, since the manager actually exists there. When you go back to the main menu though, that deletes the [c]ControllerHintManager[/c], and that\'s where the problem starts.

    Warning, discussing about programming languages and other details ahead!

    The follow up question is this: what does it mean to delete something? In most cases, you\'re not actually changing anything about the data in memory or on a hard drive, you just tell the operating system that you don\'t need to reserve that space anymore. Eventually something else will probably use that space, but the underlying bits don\'t immediately change. That\'s the basis of how a lot of data recovery tools work - the \"empty\" part of the hard drive can still hold data that was previously written.

    If Iron Village were using a \"lower level\" language like C or C++, we might get away with this issue for a little bit: the Instance variable would be pointing to a \"deleted\" [c]ControllerHintManager[/c], but as long as it hasn\'t been overwritten in memory yet, it might work. (This is bad code because it\'s undefined behaviour, and could end with the game fully crashing out instead.)

    In C# (and a lot of other \"higher level\" languages), there\'s an added layer of memory management and garbage collection. It\'s keeping track of what\'s been deleted, so if you try and access deleted memory, it throws an error that you\'re trying to access a disposed object. Crucially though, our Instance variable isn\'t null - it\'s pointing to that deleted object! So now when input comes in from the Steam Input API, it tries to talk to the [c]ControllerHintManager[/c], and throws an error. Because of how error throwing works, it skips a lot of code that comes later - including that part that actually acts on that input. (Without any additional code, this would crash the whole game, but the Godot engine tends to catch most exceptions once it\'s no longer your code. Sometimes this isolates the problem and lets the rest of the game continue working, other times it just makes things weird.) So every time you try and scroll down, the code tries to contact [c]ControllerHintManager[/c], fails, and gives up.

    The solution was just to set the variable back to null whenever the [c]ControllerHintManager[/c] gets deleted (i.e. in Godot\'s [c]_ExitTree()[/c] method), a small change that probably should\'ve been done from the beginning.

    Anyway, if you\'ve made it this far, here\'s the full release notes:

    • Fixed an issue where corn fields (and only corn fields) were being drawn above buildings in front of them.

      [/*]
    • Added an error dialog to the game to display errors that would normally only be seen in the logs. (Note that it doesn\'t capture all errors, only those in select sensitive areas of the code, like loading.)

      [/*]
    • Fixed an issue where the Maximum Production Rate button wouldn\'t appear in the Railway Status Window immediately after building the Railway HQ.

      [/*]
    • Added code to build the Magick Transformer Site on loading a game if it should be there.

      [/*]
    • Fixed an issue where Steam Input would no longer respond after exiting to the main menu.

      [/*]
  • [ 2026-01-13 22:28:22 CET ] [Original Post]

    Minimum Setup

    • OS: Linux distribution released after 2016
    • Processor: Intel Core 2 Duo E8200 or AMD Athlon XE BE-2300Memory: 2 GB RAM
    • Memory: 2 GB RAM
    • Graphics: Intel HD Graphics 5500 (Broadwell) or AMD Radeon R5 Graphics (Kaveri)
    • Storage: 200 MB available spaceAdditional Notes: Full Vulkan 1.0 graphics support required
  • Memory: 4 GB RAM
  • Recommended Setup

    • OS: Linux distribution released after 2020
    • Processor: Intel Core i5-6600K or AMD Ryzen 5 1600Memory: 4 GB RAM
    • Graphics: NVIDIA GeForce GTX 1050 (Pascal) or AMD Radeon RX 460 (GCN 4.0)
    • Storage: 400 MB available spaceAdditional Notes: Dedicated graphics with full Vulkan 1.2 support recommended
    ⭐ SPOTLIGHT DEAL ⭐
    Max Payne 2: The Fall of Max Payne
    Max Payne 2: The Fall of Max Payne
    $8.39
    -16% OFF
    GameBillet
    GAMEBILLET

    [ 6421 ]

    3.93$ (21%)
    4.18$ (16%)
    8.19$ (18%)
    17.19$ (14%)
    12.59$ (16%)
    12.59$ (16%)
    26.65$ (11%)
    41.47$ (17%)
    53.35$ (11%)
    4.19$ (16%)
    16.79$ (16%)
    41.47$ (17%)
    8.27$ (17%)
    20.72$ (17%)
    8.39$ (16%)
    16.97$ (15%)
    49.77$ (17%)
    25.19$ (16%)
    5.03$ (16%)
    41.47$ (17%)
    16.57$ (17%)
    8.39$ (16%)
    12.59$ (16%)
    17.79$ (11%)
    24.99$ (50%)
    24.87$ (17%)
    16.57$ (17%)
    20.72$ (17%)
    24.87$ (17%)
    13.30$ (11%)
    FANATICAL

    [ 5868 ]

    35.89$ (10%)
    65.59$ (18%)
    84.99$ (15%)
    96.79$ (12%)
    33.99$ (15%)
    52.79$ (12%)
    70.39$ (12%)
    42.49$ (15%)
    23.89$ (20%)
    33.99$ (15%)
    52.79$ (12%)
    17.88$ (11%)
    14.99$ (25%)
    23.89$ (20%)
    59.49$ (15%)
    49.79$ (17%)
    33.19$ (17%)
    26.88$ (10%)
    33.59$ (16%)
    22.39$ (10%)
    8.99$ (10%)
    81.99$ (18%)
    43.99$ (12%)
    19.88$ (20%)
    34$ (15%)
    33.59$ (16%)
    58.09$ (17%)
    15.99$ (20%)
    19.67$ (11%)
    59.49$ (15%)
    GAMERSGATE

    [ 1559 ]

    1.2$ (90%)
    0.42$ (79%)
    1.4$ (80%)
    0.68$ (91%)
    2.0$ (80%)
    1.4$ (80%)
    8.5$ (66%)
    0.91$ (87%)
    2.25$ (89%)
    5.4$ (70%)
    2.1$ (70%)
    4.05$ (86%)
    11.99$ (40%)
    1.7$ (91%)
    1.5$ (90%)
    6.75$ (55%)
    1.75$ (75%)
    6.0$ (70%)
    9.99$ (50%)
    2.1$ (70%)
    1.4$ (80%)
    0.85$ (91%)
    2.1$ (70%)
    3.9$ (70%)
    20.99$ (30%)
    4.25$ (91%)
    0.5$ (90%)
    2.55$ (91%)
    2.1$ (70%)
    5.28$ (74%)
    MacGameStore

    [ 2356 ]

    21.99$ (27%)
    5.99$ (85%)
    1.24$ (75%)
    0.99$ (75%)
    1.10$ (93%)
    4.49$ (70%)
    1.19$ (94%)
    1.99$ (80%)
    1.09$ (95%)
    52.99$ (12%)
    1.99$ (85%)
    1.99$ (80%)
    52.99$ (12%)
    1.98$ (80%)
    13.99$ (7%)
    5.99$ (60%)
    0.99$ (90%)
    1.99$ (90%)
    3.49$ (65%)
    1.19$ (87%)
    15.89$ (21%)
    0.99$ (93%)
    1.49$ (94%)
    27.49$ (8%)
    1.19$ (88%)
    73.99$ (8%)
    1.10$ (89%)
    15.99$ (20%)
    4.99$ (88%)
    0.79$ (84%)
    INDIEGALA

    [ 546 ]

    2.99$ (90.0%)
    1.59$ (80.0%)
    0.99$ (80.0%)
    3.65$ (75.65%)
    1.04$ (85.0%)
    0.59$ (90.0%)
    1.49$ (85.0%)
    4.49$ (70.0%)
    0.99$ (90.0%)
    1.99$ (90.0%)
    0.99$ (75.0%)
    4.69$ (68.71%)
    1.19$ (70.0%)
    58.99$ (26.25%)
    59.49$ (15.0%)
    1.99$ (90.0%)
    11.09$ (55.62%)
    1.99$ (90.0%)
    0.99$ (50.0%)
    1.99$ (80.0%)
    2.49$ (75.0%)
    1.49$ (90.0%)
    1.39$ (90.0%)
    2.49$ (90.0%)
    1.49$ (90.0%)
    1.59$ (80.0%)
    10.19$ (49.02%)
    2.49$ (90.0%)
    19.25$ (16.01%)
    2.49$ (50.0%)

    FANATICAL BUNDLES

    Time left:

    356097 days, 7 hours, 55 minutes


    Time left:

    356097 days, 7 hours, 55 minutes


    Time left:

    1 days, 15 hours, 55 minutes


    Time left:

    29 days, 15 hours, 55 minutes


    Time left:

    32 days, 15 hours, 55 minutes


    Time left:

    33 days, 15 hours, 55 minutes


    Time left:

    55 days, 7 hours, 54 minutes


    GMG BUNDLES
    Indie Adventures

    Time left:

    7 days, 1 hours, 55 minutes


    HUMBLE BUNDLES

    Time left:

    2 days, 9 hours, 55 minutes


    Time left:

    8 days, 9 hours, 55 minutes


    Time left:

    9 days, 9 hours, 55 minutes


    Time left:

    14 days, 9 hours, 55 minutes


    Time left:

    16 days, 9 hours, 55 minutes


    Time left:

    20 days, 9 hours, 55 minutes


    INDIEGALA BUNDLES
    Adult Positions 2 Bundle

    Time left:

    6 days, 20 hours, 56 minutes

    Holiday Tales Bundle

    Time left:

    8 days, 20 hours, 56 minutes

    Psycho Gates Bundle

    Time left:

    11 days, 22 hours, 6 minutes

    Indie Corp Bundle

    Time left:

    20 days, 18 hours, 57 minutes

    by buying games/dlcs from affiliate links you are supporting tuxDB
    🔴 LIVE