Let’s sum up…

Do you ever get into working on something, and you’re absorbed in it, and you keep putting off telling people about it? I apparently do…

So about a year ago I started work on trying to make AI characters more flexible compared to Banished, both in what they do visibly and in the way the code and data are setup. I wanted characters and objects that could be modified by me and by end users easily, because modding is cool. But things spun out of control. A bit.

I started with a text based behavior tree system, which once I got working looked a lot like a scripting language, so I started adding other features that made it a scripting language. (I had a post ready to go about how awesome it was.) It then got more complicated, needed a runtime debugger, and it started running other parts of the game, not just AI. Maintaining it was getting messy. Writing a game in a language that is being modified is not cool. Having script do slow things was not awesome. Not making progress on a game because you’re writing something to write the game is not the best.

The only great thing about it was that writing a programming language was personally satisfying. But it just doesn’t get other projects done. I could have told you that before all this, but I fell into it a trap I knew about.

One day, I just deleted all the code, and immediately felt better. But don’t worry, it’s in source control if I want any of it back. There were some cool tangential things in there that I might use one day. It was time to move on and work on something different for a bit.

I tend to turn to graphics related things when I need a change of pace. So…

What I’m working on is now open world-ish. And as I started moving between play areas, which are currently islands, they visibly deformed. Mountains flattened, detail disappeared jarringly, and area near the coast line changed unacceptably. I stopped using a system of regular grids that smoothly changed detail based on distance. I instead switched to a system that is based on binary triangle trees that subdivide detail levels based on an allowed error metric. I’m using simple geo-morphing to smooth out the cracks between detail levels. This allowed islands to keep more detail in rough parts, and at coastlines, and use less detail in flat parts. It also reduces triangle count under water since you never see it. It uses an order of magnitude less triangles for the same and even better perceived detail, so it maybe even renders faster.


And, yes, I know the newer hotness is using the tessellation units on the GPU to add detail in areas based on view distance and terrain roughness, and sampling the height on the GPU as well, but I want to keep my shader model on the low side so that the majority of older GPUs out there can run the game.

I also added pre-built low resolution versions of islands with baked textures, so distant views can load them fast and display them in a single draw call without the overhead of having an entire terrain and all textures loaded.

With that out of the way I started filling in some missing parts of the scene, basic sky, simple ocean, and a unified lighting model for everything. It doesn’t look the greatest, but for now gets the point across, and is setup to allow for some neat effects. Waves, clouds, time of day, sunsets, etc. All lovely things that will wait until later.


Going open world is tricky. I can’t load and generate and run everything at once. Some things need to be loaded in a low resolution, some full resolution, some not at all. When you leave one place, everything needs to be saved so that if you come back it’s still there.

To assist with this, I changed my game engine from having one scene to multiple scenes. Imagine a scene as a collection of the visual display, the collision data, pathfinding data, and a bunch of objects that do things grouped together. Having multiple of them allows me to load them in the background, perform any expensive setup or shutdown, and then add or remove them from gameplay in an instant as needed.

Making a change like this to an existing engine is painful. In theory it sounds simple, like, just create another one of what’s already there and be done! But all the separate scenes need to work together when running – they aren’t always isolated regions.

And each scene has its own transformation, which can make thinking about where objects actually are slightly more difficult. At a high level I treat everything as being in world space, but each scene has its own local transform that it works in.

I broke everything temporarily and had to modify almost every underlying system that runs the game. That’s graphics, hierarchy and animation, audio, pathing, collision, entities, background loaders, and the core engine loop. Phew.

To be fair, I did it piecemeal, and wrote a test app that didn’t use most of the engine at the same time so I could test the change to each system. Changing 100’s of files without regular testing is just disaster. Once put all together, debugging was a fun few days of mysterious problems and errors. All seems well now.

With that out of the way, it’s time to start implementing things that the AI does again. Anything that was behavior tree/script just doesn’t exist anymore. So a bit needs to be redone. It’s a bit like coming full circle and sort of starting over.

I hope you are all well, hugs to all this year, it’s been crazy, and thanks for reading!

56 Comments

    Sean P
    December 16, 2020 2:02 pm

    This is WAYYYY above my paygrade, but I am glad you are still at it! Can’t wait to see what you come up with next!

    Bryan
    December 16, 2020 2:05 pm

    Your doing amazing. Take all the time you need. It will be worth it. I’m just getting into 3D.

    Jen B
    December 16, 2020 2:05 pm

    Glad you are still at it. Still playing Banished and people continue to mod the great game. It’s relaxing to sit back and watch them work…relaxing in these crazy times.

    Ben C
    December 16, 2020 2:12 pm

    Nice to hear from you again! Sounds like you’re still having a great time writing code and making engines. Best wishes on your project. I’m excited to play it!

    Jason Nixon
    December 16, 2020 2:20 pm

    I was thinking about you just the other day and was curious as to how your new project was coming along. Keep us posted! Cheers!

    Florius
    December 16, 2020 2:41 pm

    Thought you stopped, but glad you didn’t. Keep up the good work! And stay healthy.

    jasonrubik
    December 16, 2020 2:43 pm

    Any game that you make will be great!

    Any game that you make and which has music from your brother will be amazing !!!

    Keep fighting the long fight. Slow and steady wins the race.

    Nmid
    December 16, 2020 2:45 pm

    Thanks for the update, always liked reading your efforts and posts. Waiting for whatever game you come up with next.

    Jon
    December 16, 2020 2:46 pm

    Hi Luke, good to see you’re still alive. A few months ago I checked to see if I was missing blog posts and thought maybe he’s sick.

    I must say the first thing I thought was: feature creep haha.
    Interesting to see what’s keeping you busy. Good luck! Looking forward to the next update. Hope you will have nice holidays!

    Cheryl
    December 16, 2020 2:50 pm

    I don’t understand any of this, but nice to hear from you again! Have a Merry Christmas if you celebrate!

    John
    December 16, 2020 2:54 pm

    Good to hear from you again!

    Goblin Girl
    December 16, 2020 3:31 pm

    I am so relieved to see this update! At first I thought maybe you just wandered off into the sunset. Then I started to worry that covid killed you.

    Rest assured, I will buy this game whenever you release it.

    Geoff
    December 16, 2020 3:41 pm

    Interesting to read as always. Thanks for the update and happy holidays!

    Scott
    December 16, 2020 3:41 pm

    Glad to see a new updated post! Very excited to see the final result!

    alexanderyou
    December 16, 2020 3:53 pm

    I understand the pain too well, while I haven’t done anything as low level as rewriting the game engine I tend to get sidetracked when working on almost anything XD

    Crock-Linux
    December 16, 2020 3:54 pm

    Estou feliz que esteja bem também, Foi ano bem difícil para todos, muitas perdas, mas seguimos em frente. Desejo um feliz natal e que bom que esta trabalhando em algo novo.
    Espero que de tudo certo e que novidades estejam por vir…
    Felicidade

    Banishedsanni
    December 16, 2020 4:21 pm

    Great to read that u r still working on this!

    PeggyV
    December 16, 2020 4:23 pm

    I was just thinking about you the other day & wondering what you were working on since we hadn’t heard from you in a while. Sorry to hear about the issues you are running into but sometimes we have to take 2 steps back to move 3 steps forward. Looking forward to see what this new game will be. I’m sure it will be great! Still loving Banished! Merry Christmas & Happy New Year. Stay safe & healthy.

    Chris
    December 16, 2020 4:31 pm

    Great update, love your technical therapy emails. Still loving Banished and can’t wait to see what you are working on next. As others have said take your time and don’t forget to have some fun over the holiday in between engine re-writes!

    Dan
    December 16, 2020 4:33 pm

    So many small devs quit mid game these days I thought you may have done the same. VERY glad to see I was wrong. This next game will be a day 1 purchase for me and many others, so keep it up, looking forward to many hours of enjoyment from it when done. Merry Christmas to you..

    Heather
    December 16, 2020 5:18 pm

    Hi, so good to hear from you and that you are still working on the next ‘goat’ game.
    Was deleting some unused Labels yesterday and when I came to “Shining Rock”, I paused, considered, and then thought, “No I have faith”, and here you are!
    Was reading a crit on an upcoming game the other day and it compared itself to “Banished, the best game ever”.
    Good luck moving forward.

    vaen
    December 16, 2020 5:33 pm

    oh hey, nice to see you’re still alive. good job with that.
    also really looking forward to your release in 2030.

    Gordon Dry
    December 16, 2020 6:02 pm

    It’s really a pleasure to finally get an update after more than a year.

    David Cardiff
    December 16, 2020 6:20 pm

    All I can say is for years I have been reading your posts and playing your games.

    Thank you

    Valery
    December 16, 2020 7:06 pm

    I think I understood about half or less of that, but it was a fascinating read anyway. It sounds like you’re still interested in your project so that’s great to hear! Thanks for the update!

    mz
    December 17, 2020 1:46 am

    I waited for this post! Please publish the one about your scripting language, I’m very curious 🙂

    Michael
    December 17, 2020 4:58 am

    Thanks for the update and please post just a little bit more often (than every fourteen months :-)).
    Merry Christmas!

    Gustav
    December 17, 2020 10:08 am

    Great to hear things are moving forward! Really looking forward to what ever may come out in the end. Keep it up!

    Uruziel
    December 17, 2020 10:15 am

    Hi,

    I am not following up on everything, is this post regarding Banished open world or it is new project?

    Denholm
    December 17, 2020 10:39 am

    You’re one of the only dev blogs I read, thanks for the good read

    Andreas
    December 17, 2020 10:55 am

    Always a pleasure to read your devlogs.
    It’s only now I realise it’s been a year since the last one. Keep on going, it’s really nice to read about the problems you encounter and the process on how you solve them 🙂

    Kelso
    December 18, 2020 2:10 am

    I love Banished! Just got this year! I’m glad you’re doing well and you updated us. We were getting worried!

    Adnan Afzal
    December 20, 2020 6:07 am

    You deserve all the praise for what you have done so far and what you intend to do! I do wanna request that please keep us updated more often please, as we love to hear from you about your work and progress of such a lovely project. I wish you luck and lots of love from Pakistan.

    Camillo
    December 20, 2020 4:20 pm

    Good luck

    Quasimodo
    December 20, 2020 7:20 pm

    I bought this game right out of the chute when it was first offered on Steam. I always have found this a ‘come back to’ game. As usual always a challenge but a new one each time you start another town. Bravo sir….please keep up the good work to make the game even more enjoyable.

    Byzanoid
    December 20, 2020 11:40 pm

    YAY A NEW POST! I check here regularly~
    Wow I love the new work you’re putting in, it looks like it’s going great(setbacks and all)! You are good at this!
    I love Banished, and I know whatever game you might make next will be awesome~ Very good work! No rush! Have fun!

    Pieter Van Schalkwyk
    December 21, 2020 2:03 am

    Looks spectacular, amazing, exciting, and can’t wait for the launch.
    I’ll be there like a bear to splash out and start a new adventure.
    Good luck with the work and finishing and all the best for the new year as well.
    You’re a genius as demoed in Banished.
    CAN NOT WAIT!!

    Chase
    December 21, 2020 9:41 pm

    Like many others, I bought banished when it first released and had so much fun through the years. Me and a friend would constantly play this game together and try to see how elaborate we could make our towns, lots of fond memories.

    Decided to redownload it today and check in, glad to see you are doing well and continuing to develop new things!

    Have a Merry Christmas and a Happy New Years!

    Gary
    December 22, 2020 3:18 am

    Nice to hear from you again, sounds like you had a decent ride through 2020. Don’t be a stranger, and good luck!

    Brice
    December 22, 2020 12:39 pm

    Thank you for the update, I’ve really enjoyed the first game and excited to hear you are working on the AI as well as graphics and a whole new experience. It sounds like a lot of fun and I wish you the best of luck in your coding adventures!

    david theaker
    December 22, 2020 1:49 pm

    Best christmas present ever! A new game on the horizon. Just started playing again with my attempt at 8000 pop on a vanilla map with no mods. Banished has been copied many times but nothing compares to the original.

    David
    December 24, 2020 9:08 am

    Looks amazing work you’re up to and just wanted to say I love Banished. Its fantastic to know you’re creating new worlds and cannot wait until they’re released. Have a Merry Christmas, stay well and good luck!

    OpblaasHaas
    December 27, 2020 8:13 am

    Been playing banished again, thought i’d checkout the devlog. Looking good! Will you be setting up a patreon or something? Would love to show some support.

    Martin Hagensen
    December 29, 2020 12:50 am

    I keep filling the entire map with cities in Banished, and coming back to see whether you’re releasing something new soon. I truly believe Banished is the best city builder game ever released. If it had challenges, various play modes and goals, rare environmental damage, and maybe battles, it would blow everything else out of the water. Please release something soon, even if it’s just an updated, bigger banished.

    Martin Hagensen
    December 29, 2020 1:01 am

    From my estimation, you’ve made at least $1.000.000 from Banished sales, based on steam sales alone. It must be a huge priority for you to get a sequel released? Why not hire a small team to help in the development, and why waste time on projects that aren’t working? Are you super wealthy?

    Chris
    December 29, 2020 1:53 pm

    So, the follow-up for Banished is in the works 😉

    Nick
    December 29, 2020 4:09 pm

    glad to hear your still working on it!, still don’t understand your original limitation of only four rotation points when placing things

    Antiquado
    December 29, 2020 4:30 pm

    I had forgotten where to find this blog, but were missing a good builder. As always, ended up firing up Banished, and started thinking about how you were doing.

    As someone who always wanted to get into game development, but still haven’t found a way, it’s great to hear about your deliberations as to what is important, what is not, where you get stuck and decide to start over, etc.

    If you are up for it, it could be great to hear a little about your own situation – how is to manage people’s hope for an even better game than Banished? Also, like Martin Hagensen asked, how are you managing, financially, as a one-person developer? Have you considered starting a game studio with others/employees?
    Would be really interesting to hear your thoughts on the future of you & Shining Rock!

    Thanks for a great game and your thoughts on “builder tech”!

    Ihor
    January 1, 2021 6:15 pm

    Your work can not do, because you have experience) Honestly, I like to be kicked out and played from time to time. Cool. Good luck.

    chickensgocluck
    January 5, 2021 7:43 pm

    Wait so is this game still in development? Is there a chance for an update soon?

    Mariansen
    January 7, 2021 5:06 pm

    I am so happy you are alive and working on the game! I was so worried not to see any new post the whole 2020.
    I wish you all the best and look for the next update.

    Magnús Bjartur
    January 7, 2021 7:45 pm

    Hey man, Love your game man. Been playing it for years now and i pick it up from time to time, and it just gets me hooked for days. Good luck with the game! Glad to see you’re working on it.
    I was scowering the webs for signs of life.

    Ben Doerr
    January 8, 2021 9:41 am

    So glad you are still working on this!

    Sammy Deluxe
    January 9, 2021 9:27 am

    Thanks for the update! was hoping to see news from you! keep it up!

    Neverender
    January 9, 2021 10:04 pm

    Banished really changed the way i looked at Simulators, i’ve played and logged tons of hours in them and Banished really stood out to me. Got all but 4-5 achievements and had loads of fun. I really can’t wait to see your next project! Keep up that good work!

    Steven
    January 12, 2021 6:08 am

    Thank God! You are still alive. Long time no update.