Development History (Under Construction)

Yukineko-san edited this page Feb 15, 2017 · 17 revisions

Note: This document is work-in-progress and does not (yet) constitute official documentation of the Citybound project.

-Anselm


Remarks by Anselm:

  • I removed the initial section about what Citybound is - that is already explained elsewhere and I would like to be in control of such central messaging

  • This initial version of the history collected is very thorough, but hard to read - I think a mostly-list format with more headlines would give the document much more structure and give an easier overview

  • Already better, try to now take each bullet point and write each sentence in it also as a (sub-)bulletpoint, later we will continue to improve it

Development History

Initial Announcement, JavaScript and WebGL (2014 - 2016)

2014


First Quarter (Q1)

  • Citybound was first announced on the 2nd of March, 2014 in a development blog post dubbed ‘Citybound – The Beginning’.

  • Initially to be developed using JavaScript, WebGL, HTML5 and node-webkit technologies.

  • To be single player offline only and was intended to be easily modded utilising the JaveScript language.

  • Basic functions of the game were already developed and implemented such as basic road layouts and basic procedural building generation being showcased in a prototype.

  • After the initial announcement, the game received a hugely positive reaction:

    • Over 100,000 unique visitors on the development blog
    • 500 comments on 9 subreddits
    • Over 1600 newsletter subscribers
    • 480 Twitter followers
    • over $380 of donations, ฿ 0.23 ($150) and Ð 28,000 ($30) within the first two days.
  • By 11th of March, the game had further development on pathfinding, with further plans to implement camera controls and a zoning interface according to the devblog post “The Road to Alpha, Slow Start – Week 1- A Slow Start”.

  • Small weekly updates approach would be posted on the devblog to update readers on the development of Citybound.

  • On the 19th of March, the second weekly update “The Road to Alpha, Week 2 – Camera, Action!” was published

  • showcasing the newly implemented camera controls and further developments on roads such as road snapping and code cleaning.

  • System for “handling and rendering large mostly-static geometries” was also implemented.

  • By the 25th of March, tilt camera controls, a main menu, and a zoning UI was implemented and showcased in a video update in “The Road to Alpha, Week 3 – A Fresh Canvas”.

  • An interface for red-green colour blindness was also developed.

  • Dynamic procedural building generation and a procedural geometry system were implemented on the 9th of April in the “Road to Alpha, Week 5 – Every Small Town Starts Small” Devblog update.

Second Quarter (Q2)

  • “The Road to Alpha, Week 6 - Intermezzo and Community Activity” update on the 15th of April 2014 implemented Core City Dynamics which consisted of a resource management system.

  • Community activity was also initiated with the community suggesting names for businesses, factories etc that they may wish to see in Citybound.

  • During “The Road to Alpha, Week 7 – First Signs of Gameplay Detected”, update on the 23rd of April, it was decided that Citybound will have “both a statistical and agent-based simulation.”

  • Statistical simulation for planning and demand was implemented, along with a resource management system and city dynamics.

  • A construction planner, building type system and global simulation parameters were also implemented.

  • Anselm announced that he quit his part time job to allow further focus on Citybound and University on the 29th of April in the “The Road to Alpha, Week 8 Intermezzo and Big Announcement” devblog update.

  • Work began on the integration of traffic simulation with the city simulation.

  • By the 7th of May, the statistical and agent-based system began being connected, a user interface that displayed information on residents/employees and a time system was implemented on “The Road to Alpha, Week 9 – A Day In the life of a Citizen” update.

  • A new road concept, called “Spaghetti” was introduced and implemented on the 14th of May, in the devblog post “The Road to Alpha, Week 10 - Enter the Spaghetti”. The concept was a new road construction system which allows “manipulation of individual lanes or groups of lanes and was aimed to be “easy to use, but still allows very advanced road designs.” Further planes mentioned in the devblog post included adding missing connection options, implementing an automatic intersection generation and connect the new road system to the traffic simulation and procedural building generation.

  • On the 28th of May, further work was done on the new road system with included a rewritten architecture, automated creation of T-intersections and smarter connection of non-aligned roads according to the “Road to Alpha, Week 12 – Picking it Up Again” update.

  • During the 4th of June update “The Road to Alpha, Week 13 – Just a Quick One”. Further road improvements were made including the ability to extend T-intersections into four-way (or more) intersections and being able to connect to the middle of existing road segments.

  • “The Road to Alpha, Week 14 – Intermezzo and Design Goals” update, posted on the 10th of June worked on the integration of the new road system with existing systems and provided insight to more ‘concrete’ design goals of ‘realism and fun’. By the 18th of June, the traffic simulation was integrated into the new ‘spaghetti’ road system. This was showcased on “The Road to Alpha, Week 15 – A Mixed Bag.

Third Quarter (Q3)

  • On the 17th of July, the developer Anselm, held the first development livestream on Twitch. The first rough version of a pollution system was implemented. Anselm announced that he would aim to do two Twitch livestreams a week, though at the time he mentioned it would be rather spontaneous due to university exams. A Citybound wiki was introduced on the 23rd of June during “The Road to Alpha, Week 20 – The Calm Before The Storm”. Multilane roads were implemented by the 5th of August, with an announcement to do more Twitch livestreams every Thursday and Saturday in the devblog update “The Road to Alpha, Week 22 – Let’s do this!

  • “The Road to Alpha, Week 23 – With a Little Help” published on the 13th of August update saw the implementation of microeconomics, first implementation of multilane intersections and merging animations. Multilane traffic behaviour and higher building densities began being implemented by 19th of August in “The Road to Alpha, Week 24 – Signs of Growth” devblog update.

  • Re-implantation of neighbouring cities and the addition of imperfect knowledge was announced on the 26th of August in the “The Road to Alpha, Week 25 – Imperfect Knowledge”. The Road to Alpha, Week 26 – Commute and Competition” devblog update saw the development of commuters, shoppers from other cities, the addition neighbouring cities ‘evolve and react to economic demands’ and a ‘competition factor’ on the 3rd of September.

  • By the 9th of September, new roads deleting buildings, smoothened zone drawing and basic multilane traffic behaviour fixes were implemented in “The Road to Alpha, Week 27 – Front Lawn Freeway”. On September 17th, “The Road to Alpha, Week 28 – You Cut Me Off!” devblog update introduced a car inspection debug tool and lane-merging vehicle interaction.

  • “The Road to Alpha, Week 29 – Exciting Times” devblog update announced upon further development of traffic behaviour on multilane, merging and forking roads on the 23rd of September.

  • By the 7th of October, Anselm announced he had moved to another country in the devblog update “The Road to Alpha, Week 30 – New Place!”

  • A new form of update delivery was announced on the 20th of October. The new form of delivery was through ‘Livestream reviews’ in which a ten-minute review video was to be narrated of what happened during livestreams. Anselm also announced that the new country and place he moved was St. Petersburg, Russia. The first livestream review update was posted on the 23rd of October, which saw the addition of new traffic reactions on cars that are about to enter intersections.

Fourth Quarter (Q4)

  • On the 18th of November, Anselm announced he had gone back to Germany for a week and re-established regular Tuesday updates in the “The Road to Alpha, Week 36 – A Sign Life”.

  • By the 31st of October, a special announcement was made about Australian programmer Michael joining the Citybound “team” as a second developer. It was also announced that he was re-implementing the roads and lanes system and user interface.
    Anselm announced on the 25th of November that progress was being done on refectory work “The Road to Alpha, week 37 – Imaginary Progress” devblog update post and the he had proposed his girlfriend to get married.

  • “The Road to Alpha, Week 38 – Curve Control” update posted on the 3rd of December saw the continued rewriting of the road and lane system. A new road-laying UI prototype was developed along with the integration of Michael’s geometry code. By the 16th of December, a basic version of automatic intersections and road markings were implemented in “The Road to Alpha, Week 40 – Hyper-Active”.

  • On the 25th of December, an update “Review In 2014” was posted with plans to change the way in which Citybound would be developed and the way progress updates were delivered. The idea of developer diaries was announced and proposed whereby a screenshot of visible progress would be provided along with a text summaries of details. Anselm had also announced that he had a little side project that was going on and cancelled it to better focus on the development of Citybound.

2015


First Quarter (Q1)

  • The first Developer Diary update “Where do you think you’re going?” was posted on the 7th of January. The diary showed the first visible progress from the new revamped road system and showed comparisons between the new system and the older ‘spaghetti’ system. The second developer diary update “Intersection soup” posted on the 10th of January showed continued progress on the new road system, with fixes on cars following multisegment roads and implementing a geometry code to fix the cars suddenly speeding up and slowing down in narrow corners. The developer diary also explored intersection overlap detection and arbitrary paths debugging.

  • On January 12th, the third developer diary “The Struggle” further explored lane overlaps in intersections. An idea conceived by Michael was implemented on the arbitrary paths debugging tool to aid in the investigation of missing overlaps in intersections. It was concluded that the overlap intervals were completely fine, however there was a bug in the code of the debugging tool that drew the coloured lines. Another bug was also fixed with merging overlaps. Lane overlap detection and making cars aware of overlaps was further implemented in the fourth development diary on the 14th of January. The diary explored basic collision avoidance with low speed working “really well” but high speeds only stopping after entering the intersection. A bug in the calculation was also fixed providing a more stable traffic behaviour.

  • By the 5th of March, traffic lights, T-intersections, cars and traffic light interactions and lane changing and merging behaviours were implemented in the 5th development diary “Back to Business”.

  • Michael had been working on a ‘Straight Polygon Skeletons’ geometric algorithm for other applications in Citybound such as roof geometries and parcelling.

  • The 6th development diary “Zoning, Struggling, Parceling” update on the 21st of March focused on zoning and radically “simplifying the Citybound user interface.”

  • Development of the zoning user interface was for the end user to first draw the shape of the zone and the choose what zone type it will be.

  • Mixed use zoning was also implemented. The developer diary also outlined that all city buildings would also be zones, including police and fire stations, land fill, schools airports etc.

  • Some trouble using Git to organise branches with Michael’s geometry work and troubles with merging branches and disorganisation were revealed and discussed.

  • The 8th developer’s diary “Technical Background Work”, posted on the 27th of April written by Michael explored on:

  • Upgrading the 2D drawing library used for debugging geometric problems

  • Use of straight skeleton codes, the parallel geometric structures and parallel coordinates

  • Graduating from 32-bit to 64-bit development

  • A new vector matrix library

  • Simplified module definitions

  • Github’s atom and the initial designs of planning mode

  • Anselm’s static single assignment meta programming library called CodeBuilder and ES6

  • The Diary also mentions that Anselm himself was busy with ‘under-the-cover’ programming and preparations for a very complex economy system.

Second Quarter (Q2)

  • A video update was posted on the 9th of June called “June 2015 Update (Mystery Feature)” conceived the newly implemented planning mode.

  • Video update on the 19th of June “The Road to Alpha Week 66 – More on Planning Mode” was posted on the development blog.

  • Introduced customisable minimum road setbacks and height restrictions in planning mode on zones.

Third Quarter (Q3)

  • In August the 15th, “A week with Michael” text update was posted, revealing that Anselm had moved back to Munich, Germany from Russia.

  • The update also announced that Michael had traveled to Munich from his hometown of Melbourne, Australia for a week to do pair-programming on Citybound.

  • Goals of multithreading, migration to Electron.js, hardcore IPC memory sharing, agent storage of binary data, and agent interactions and Michael’s state machine model were discussed.

  • A video update posted on the 23rd of September “The Road to Alpha, Week 89 – Theory and Practice” expanded on these concepts and discussed saved states.

Fourth Quarter (Q4)

  • Anselm had announced on the 12th of November in “The Road to Alpha, Week 96 – Committing to ...” video update that he would make the game partially open sourced.

  • Small modules of the then game engine that was in development.

  • Video update also discussed that there a lot of background work in progress towards the game engine

  • Livestreams would be done at Friday and Saturday Mornings Central European time was announced.

  • On the 27th of November, Anselm had migrated to do livestreams on Beam.pro as opposed to Twitch due to lower stream delays.

  • Another update was posted where Anselm had announced that Michael had left Citybound due to “unrelated personal issues”.

  • The paired programmers parted on “best terms” with Michael's code being open source for “best use of it in the future.”

2016


First Quarter (Q1)

  • Clearer goals were announced on the 6th of January in the video update “A Promising 2016” which consisted of:
  • A preparation phase, Alpha 1 phase – “Make it run and intractable”.
  • Alpha 2 phase – “Slowly add complexity”.
  • Alpha 3 phase – “Make it a game” and a Long-Term goal phase – “Make it Citybound”. The video update also reflected on major events in regards to development and progress of the game in 2015.

Migration to C++ (February 2016 – December 2016)

First Quarter (Q1)

  • On the 1st of February, a text update “After just two years, I’m starting properly!” was posted which announced that Citybound be written to C++.

  • Anselm says that “During the whole development of Citybound I was half-knowingly waiting for the day where my selection of technologies would turn out to be inadequate. This day has come.”

  • Decided that the point that he had failed was “after implementing custom memory handling”. By this point he then realised and writes in the update “my workarounds were beautiful, but in practice impossible”.

  • The update post also discussed how old code would be used and ported to C++, with the road, economy and graphics and all other gameplay elements needed to be rewritten. Other advantages and queries which contributed to the switch from JavaScript and WebGL to C++ was also discussed in the post.

  • On the 18th of March, a text update was provided by one of the Citybound music composers, Dane.

  • Original plan for Citybound was to “write a few pieces of music for each season in game (about 4 pieces per season), with each piece lasting approximately 5 minutes in length.”

  • Eight pieces were carefully written between Dane and the other composer, Chris, and that in 2015, both composers had other projects that they needed to work on. Furthermore, by February 2016, Dane assures that the small Citybound team of three “is still kicking and [they’ve] stayed in touch.”

  • By March, the goal “was to have a total soundtrack length nearing the 2-hour mark” and was currently at an “hour and four minutes mark” at the time. The post discusses the end goal was “to write enough music to create a vastly immersive, diverse playing experience as well as get great pieces out into the world.”

Second Quarter (Q2)

  • By the 17th of April, a basic ‘compass’ – a “core geometry module”, a ‘whiteboard’ – “a helper library to quickly display 2D drawings, Izy – another “helper library for iterators in C++” was implemented.

  • Monet – “a custom-tailored minimal deferred and physical based rendering engine” was implemented.

  • Goal towards “Benchmark 1” which consisted of re-implementing basic planning mode for roads and traffic simulation and stress testing the traffic simulations and ‘renderer’ with the maximum amount of cars.

  • A “mind-blowing super-secret update” on the 29th of May in the “Backgrounds: A Tale of Two Worlds” post was announced. The text update also discussed and explored state handling and introducing exploring and adopting “double buffers”.

  • On the 13th of July, Anselm discusses memory layouts, the lowest common denominators, the actors and messaging passing system.

  • Anselm had also mentioned he was planning to be moving countries soon and that he is still working on his “mind-blowing, super-secret update” in which states that he “doesn’t know how long it will take.”

The Switch to Rust (2016 – Onwards)

2016


Fourth Quarter (Q4)

  • A Reddit post made on the 22nd of November “So I just talked to Santa…” on the Citybound subreddit by Anselm hinted that a ‘gift’ would be coming on Christmas day.

  • On the 25th of December, a video update “Christmas 2016 Announcement” was posted, where Anselm had an announced that he moved to Iceland for 6 months, and that he had switched to implementing Citybound natively using Rust.

  • A new long term plan was announced in which Patreon would be used to be financially independent in order to focus efforts solely on Citybound full time.

  • The game also became fully open source and became the code became fully available on Github.

  • A “Roads and Traffic Prototype 1” was released which was the result of 2-3 months of “getting something interactive going”.

2017


First Quarter (Q1)

  • On the 9th of January, Anselm announced on the Citybound Subreddit that “Tomorrow will be my first working day at my new job: Citybound”.

  • New Contributor License Agreement was wrietten and added

  • Implemented new camera controls, corrected documentations, cleaned up rendering and text-rendering codes contributed by community members Kingoflolz and martinrlilja.

  • On the 10th of January, two bug fixes including Citybound not running on older Mac OS versions and self-intersecting roads not being built properly was fixed.

  • Implemented Camera pitching and Rust compatibility with the latest version of Rust allowing for incremental compilation.

  • Further code cleaning was further done on the planning UI code.

  • By 11th of January, a plan with in regards to modding was improvised utilising Dynamic Rust libraries after discussion with community contributors on Github.

  • Bigger focus would be on clarifying “UI-related developments blocked by a lack of clear concept about code UI architecture”.

  • Simple workaround for a bug on clicking on existing built roads causing a simulation panic was implemented.

  • Pull-request making “low-level rgibf” more idiomatic for Rust was integrated and the adoption of rustfmt and continuous integration (Travis) was also implemented on 12th of January.

  • How to be completely set-up for contributing guide was written.

  • Work began on radical simplification of low-level engine code.

  • Community contributor martinrlilja begins "the first sketch of simple-mod loading" on the 13th of January.

  • By the 16th, this simplification was complete resulting in further optimizations and preventing "an entire class of bugs."

  • Documentation and code cleaning of the low-level engine began on the 17th and 18th of January.

  • A Two-phased working cycle consisting of a Phase A which introduces new features and a Phase B which aims to fix bugs, polish architectures, clean, refine and optimize the code was announced.

  • Phase B to be continued until the end of January where he will then begin working on a basic economy in phase A again.

  • By 19th of January the Kay actor system documentation was up to date and Gitter chatroom was established for developer discussions.

  • Proposals written for a mod store and a showcaser webapp on the 20th of January.

  • Cleaning and implementation of new architecture had also began. Anticipated to be done in 1-2 days.

  • A new updated prototype was announced on the 23rd of January.

  • New prototype was to be released "possibly this week (within 23rd - 29th) with "as many bug fixes as possible"

  • Work had been continued on re-writing and simplifying the planning code.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.