Scene City 0.8 released

Great news,

today I just released v0.8 of my city generator.

As I explained in more detail before, I rewrote it as a collection of three Blender addons.

What's new

Here is the list of the new features I added

  • rewritten as a pure Blender addon for the best runtime stability and integration into Blender. So the circle is complete ;)
  • separated into three addons: SceneCity, SceneTerrain, SceneSkies
  • so it's now possible to use the skies, the terrain generator, and the city generator independently
  • terrain mesh resolution setting restored
  • free version of SceneSkies available. Full version not available alone, but bundled with SceneCity
  • terrain generation improved with shape presets: eroded mountains, eroded craters, mountain chains
  • terrain generation can be from a user-defined texture
  • terrain can be exported as RAW and standard grayscale image
  • more HDR skies added for a total of 10
  • cities no longer require the center of the terrain to be flat, generator will try to build where there's space available
  • improved water shader for the lakes and seas: looks more realistic
  • removed space character from all included textures and models files, for easier support on Linux

SceneSkies free download!

On the road to offering a free version of SceneCity to everyone, I proudly present you the free version of SceneSkies, one of the three addons that make SceneCity.

Learn more about it and download the free version.

I found it surprising how close Andrew Price and I released the same kind of addon, at the same time. Funny timing! But we offer different skies: he apparently is using photographs of real skies, I take the CG skies route. I must admit his addon, Pro Lighting: Skies, contains way more skies than SceneSkies: 80 vs 10, but SceneSkies' are really different from each other, and also more dramatic looking with god rays, and a bonus sky with epic monstruous clouds(!) SceneSkies supports Blender Internal. I'll also add many more in the next versions. Anyway his addon looks really cool too! In the end there is no better choice, only more choice, so it's a good thing for every Blender user ;)

What next?

You probably noticed there is no new feature for the buildings and roads, disappointing for a city generator isn't it. Well rest assured, now that the terrain and skies are pretty robust, it's time for the next version 0.9 to be exclusively for the buildings and the roads. Cool things are on the menu. Check below

  • restore building generation (node-based?)
  • allow use of user-made buildings, roads and materials
  • material generation and randomization
  • free version
  • OSM support
  • bring back night time
  • objects population on the terrain: trees, grass, rocks etc...
  • performance: add option to use dupliverts for objects placement
  • add option to build city as single mesh
  • allow packing of city in .blend file (eg for rendering on farms)
  • additional road placement algorithm that will fill the whole terrain

This is not a list of planned features, only the things I'm considering. You'll be notified as I add new features during the development of the next version, to be released in three months, in October.

Stop doing what you wish you DID
Start what you wish to DO

I constantly remind myself how many times I've fallen into that trap. Sometimes I still stumble: I start a new modeling, game or programming project, each time thinking how great and wonderful ideas I have. I'm full of enthusiasm, and, it seems, of energy, so I jump into it. But after a week or two I hit the hard and cold wall of reality: "This is going to be a lot more difficult than I thought". I realize either I don't want to spend so much time and energy, or I simply don't have the skills to achieve my initial grand vision. Then my excitation diminishes, until a point where I just abandon, frustrated to have once again fallen into that annoying circle.

I've been thinking: what's the problem with that state of mind so many developers seem to have difficulties with. Always overestimating our skills, always underestimating the difficulty of the task. I often realize afterwards "Was I stupid? How could I ever do THAT? I've never done, even once in my life, A, B or C and I'm already looking at Y or Z!". There is this post about how not to fall into that trap. It's about game programming, but it applies to any kind of project. This excellent post explains HOW not to fall into the trap, I'll explain WHY this trap appears in the first place: ego.

We all want to do something that lasts, something that impresses, most often for no reason other than to flatter our ego. I've been programming for 10 years now, I'm quite experienced in a lot of languages and technologies, I don't count anymore the languages I can use. I can also model pretty much anything not extremely detailed. So, having all those self-learned and ironed skills under my belt, I often find myself wanting to start tons of new projects that sound exciting. I tell to myself I'd be so proud if my family, or my friends, or the world could see that. Perhaps I could even get rich. Or I'll have fame, or the girls. But all that is no more than wishful thinking. I know it is. I don't want to DO it, I want to have it DONE, that's a subtle difference, but an important one.

I can tell this mind trap happens all the time, and even if experience can mitigate it, it still happens, and I know it will again for me. All is not that bad though, I learned my own limits for a start, then a few useful skills here and there. But mostly it's taxing on the motivation side, you feel like you can't ever achieve anything...

So what if, instead of starting something with a big plan to please and dominate the world, you just start doing what YOU enjoy, right now. Don't worry about big plans and designs, you can always change or improve things LATER. Don't worry about success and popularity, if you produce anything good it won't be difficult to convince others LATER. Don't worry if it has already been done a thousand times before, it will always be unique to you. Just make that very first step, the one which is fun, the first one you want to take. At the beginning of a project, or of a new undertaking in an existing one, don't think about showing it off, talking about it, or posting about it. Keep it for yourself, at least in the first month. If you can do it WITHOUT FRUSTRATION, then it means you've found something you like to DO, and not wish you DID.

By doing things we love to DO, we can achieve big things. Perhaps not ground breaking, perhaps not big for the world, but at least big for us. What counts is when we achieve something that matters to US, even when it's just a pet project or a prototype. We're the first and the most important audience. We automatically instill love and passion in what we enjoy to do, others around us inevitably notice it. I'm not saying not to care about your users and viewers by being selfish and blind, but the job HAS to be aligned with what YOU enjoy to do. Sometimes it's not easy to make the difference between ego and deep desires, but with a calm mind in a relaxing environment, like under a hot shower or in the bed, you should know.

Follow this advice. The greatest benefits will be a motivation boost, and an improved self-esteem. More self-esteem translates into a better life, in every aspect.

Back to the addons

Hi city lovers,

I have great news for you: new stuff is coming very soon. But first, here is the state of Scene City's development.

Since I released the current version 0.7, I've received largely positive feedback, and people are happy with it so far. Thanks to all of you for your support, Scene City is getting better and better.

Standalone app? YEAH!... well not so much...

After shipping version 0.7, I reassessed my goals for Scene City and what it should be. I was really happy with the features and direction I was taking, except for one thing: development was painful. A long, frustrating development process, which would have inevitably led to a lower quality application. So I had to change something radically.

The painful development part was the fact that I decided to develop a standalone application rather than a "simple" Blender addon like I did before. I had several reasons to do so (users could test the app without Blender installed, realtime 3d previews, cool factor, zero installs...) but I primarily wanted to have a universal app that could export to Blender for a start, then to Unity, and later to other software.

That sounded like a smart idea... on paper, because once I finished version 0.7, I realized making the app work, then ALSO the Blender part work was almost doubling the workload(!) I missed the famous KISS principle. It's much much better to have something simple that works right now, rather than a promising pile of complex code that might lead to something useful.. or most probably to nothing at all.

I also realized once I was done with 0.7 that exporting a city, while extremely easy and useable, is a 2 step process, and will never be as direct as when you have the features right inside Blender, like an addon does. Sure the standalone app is easy to launch and all, but it's still a step that could be avoided. An addon has the added benefit of context: it is "blended" in Blender. It makes itself invisible, it does its job then disappears when no longer needed, and that's precisely what good software is.

Since it'll be the same kind of issue with any other application SceneCity might support later, I decided to drop the standalone part, and revert back to a good ol' Blender addon. Hence the long time I took after 0.7 until today: re-designing and re-coding the app as an addon. Lesson learnt the hard way, but that's what makes software development interesting ;)

Huge download size fixed

With 0.7 there was another issue I was concerned with: download size. A mammoth 2GB! And with all the content I'm adding with each new version, I had to do something.

Why is Scene City so large?

  1. in the current state, you download 3 versions of SceneCity: one for Windows, one for Mac, and one for Linux. So you basically download the app 3 times... That's inefficient I know, but it's the simplest and quickest solution I found for me and for you.
  2. Then for each version, the resources that take most disk space are bundled twice: once to be used in realtime in the generator (the standalone app) and once again in a zip file which is uncompressed when exporting to Blender. What takes a lot of disk space are the 8k HDR skies, more than 200MB, then the terrain preset textures, another 150MB.
By making an addon I solve both problems at once: the addon will work in Blender no matter what platform it runs on, and you only need the files for Blender. It's fixed: Scene City's download size went from 2GB down to about 200MB. Also thanks to an update to the OpenEXR library in Blender 2.75, the skies textures now only take 16MB.

Scene City 0.8 will be a Blender addon... No? Three addons?

Scene City has 3 components working together, but that could be used independently: the skies, the terrain generator, and the city generator. Perhaps some people may be more interested by one or two parts, and not so much by the other. It's also a good design practice to make smaller parts work together rather than having a monolithic engine.

So I split Scene City into 3 addons: one for the skies, one for the terrains and one for the roads and buildings. That doesn't change much for you, except that you can use them independently if you wish. They still work together if needed, as expected. I might distribute them separately in the future, but for now I keep them bundled together when you buy and download Scene City.

Scene City 0.8's release is this month, more news will follow!

News from the programming trenches

Hello guys :)

after all this time, all those months of silence and wandering in technological lands, my work and research on my city generator are finally coming together for the next version, to be released in a month at best, two at most. Since I'm very bad at guessing my remaining workload, let's say 2 months.

So, what's the state of the generator ? Well, here is a screenshot of the realtime renderer (work in progress still) And here is an older image of a Cycles render (WOOHOO :D)

First, I'll change the name of the generator. "Suicidator" was good as long as it was a pet project. Now that I'm bringing it to the next level, a proper name is required. I'll announce it when the time comes. Just know that it'll be much more suitable ;)

The next public version won't be 0.6, but 0.7. This is because 0.6 was such a huge task, I didn't realize I was running straight into a wall, trying to code everything from scratch, especially the 3d renderer, and the asset manager (see this previous post). Instead, I did the wiser choice to step on the broad shoulders of a category of software whose work is just that: realtime 3d rendering and asset management, namely game engines.

The two big popular ones being Unreal Engine (UDK and now UE4) and Unity. Since I had previous experience with Unity, and since it's using C#, a programming language I absolutely love (very similar to Java. Some say it's a messier language than Java, I say it's Java on steroids), I went the Unity route. Now I can concentrate on generating pretty cities.

All the building models are hand-made for now. I'm working on a building generator, but the results aren't up to the quality standard I'm targeting. That means purely random buildings will be for a later version. For now, the free version will have a collection of finely crafted pre-made buildings, and the paid version will have even more of them, for a more varied-looking city.

Notice the buildings are correctly placed, no more ugly overlapping. All the materials work in BOTH Blender Internal AND Cycles, WOOHOO :D. So you'll just choose the renderer you prefer. More rendering engines could be supported in the future, if there is enough interest. I'm thinking about LuxRender especially, since their integration with Blender is pretty good. Notice also how you can now zoom down to the street level. This is a huge step forward, compared to previous versions, where the cities looked kind of good only from a far distance.

For the (temporary) bad news: version 0.7 doesn't support population maps and height maps, all the streets are axis-aligned (that means no more curved streets) and the night version of cities is disabled.

All these features will be restored back in future versions. I think it's best for you guys to have fewer features, but with better quality, ease of use, and support. This is why I invested so much time and money to bring you the best automatic cities possible for Blender, at an affordable price. Right now, I concentrate on usability first, and visual quality second. I'll integrate more features properly later, keeping my two priorities in mind.

That's it guys! I hope you're as excited as I am for the coming version 0.7. I remind you that I post on my Twitter account almost daily about my progress (those screenshots above are from Twitter). See you very soon.

Most wanted features survey result

I asked you some time ago what you wanted most for version 0.6 of my city generator. The survey is now closed, so let's have a look at the results.

I've had 184 participants, which is not bad. I'm no statistician, but to me the sample is large enough to be somewhat representative of my user base, or so I think. Some people may have answered more than once by looking at the answer dates. At least it's better than nothing.

1 - Cycles materials generation

Under work for 0.6 ...

This one I also wanted before I created the survey. Having realistic lighting will make the city look more believable. I'm about to tackle it, but with OSL, that should be easy (read: not too hard)

2 - Buildings don't overlap on each other and on streets

Complete and ready for 0.6

Good news, it's partially the case in the coming 0.6. The buildings are still overlapping, but the streets are always clear of buildings and obstacles, because they're grid-aligned. I know having straight roads only is a restriction, but I can always add curvy roads later: I'd rather have clutter-free straight roads right now than unusable randomly shaped ones.

3 - A live preview of the city while tweaking its parameters for fast feedback

Complete and ready for 0.6

No longer will you need to switch between the generator and Blender: see your result immediately. Export to Blender when you're happy.

The three most wanted features will be in the next version. The rest perhaps, but most will have to wait a little longer.

Custom responses

Some people also took the time to write exactly what they need, so here are their responses:

  • Ability to define where streets are and how large
  • Generate city from street map (splines)
  • MAP!
  • Interior
  • Street Light Poles
  • Medieval
  • v0.6 looks promising :-) - Mac compatible - larger area - higher blocks - style e.g. sci-fi - switch day/night after built

Thanks to those answers. In short, you also want various architectural styles, better street control, and customizable city (to some extent) AFTER it's been generated, which means once it's in Blender. Noting on my TODO list...

Finally, on a scale from 1 to 5, most people think of the city generator as being moderately useful, while slightly more people find it very useful than those who don't. So the end result is positive :)

City Generator 0.5.7 released

SCG 0.5.7 is out. Get it now! It is a minor release, compatible with Blender 2.67. As always, remarks and bug reports are welcome.

Inside the city generator

I've been very busy coding the next version of SCG. I've made a lot of progress. Especially on the supporting parts of the application, namely the nodes and the 3d renderer.

In every software, there is a huge part the developers have to deal with, and we don't even think about as users : it's the code architecture. By architecture I mean how things are logically represented in the code, how they interact, and how they ultimately serve both the users AND the developers, to make their life easier. That last part, "easier", takes a lifetime to master. For one usable feature, there are tens of small supporting features underneath. For example, when you rename an object in Blender, the developers had to make sure no other object in the scene has the same name, and to rename any other object having the same name to something else, by appending .001 for instance. But wait, maybe another object has that new name too, so we have to check that again, and act accordingly. Those are the kind of issues a developer must take care of all the time, more than implementing the next killer feature. These details constitute what makes an app usable, versus an app which may look cool, but nobody uses because it's a pain.

So what does SCG's architecture look like ? From a high level point of view, it can be viewed as a set of subsystems. We call an app's architecture "code plumbing" because it's like plugging things together. I considered using the Netbeans Platform specifically to save me some work and to avoid coding the plumbing myself, but I realized it's over-sized and over-complicated for my needs.

Here are SCG's subsystems SCG's architecture and subsystems