Quote from chapter one:
"Most of the hard core C++ programmers I know hate user interface programming. This surprises me, because I find UI programming to be quintessentially easy, straightforward, and fun."
I could give a few reasons why I hate UI coding, but the book won't listen to me ...
One of the reasons is that UI does not add functionality. My main concern is the function of the program - that's actually what I want to create. Access to the function must exist (= there must be some kind of UI) but IMO going beyond the minimum effort is a waste of time and the time is better invested in improving the functionality itself.
Also, in my experience, UI programming is quite time consuming. Some UI libraries are everything else but easy to use, and complex UI just adds more options to create bugs. In my experience codinmg a good UI easily takes more than 50% of the whole project time. Think, if trhe time was spent on the functionality, the project could have twice as much functionality, as it can have with a good UI (assumeing time and manpower is fixed)
I guess we talk about two project types actually:
1) someone writes a program that is inteneded to be used by pother people - he writes it for them, probaly to sell it.
2) someone writes a program for himself. He wants to try/implement some idea and see if it works out.
Simutrans definitely is a program of the second category. I didn't start it because I wanted to make a new game for everyone, but because I wanted to try if I can create a transport simulation game. (Actually I wanted to learn OOD/OOP and needed a training project. I played TTD a lot that time, and so I chose a tranport sim as example. It seemed quite well suited for learning OOD because most objects are quite obvious.)
I share Simutrans with you, and I sometimes listen to feedback. But it wasn't created to be useable by anyone else but me (I assume if I can use it, everyone can. I'm not that special, am I?). IMO we improved the UI a lot since early versions, and probably we'll further improve it. But that's not the main goal - extensions of the game engine will always have first priority for me (I can't talk for the other developers).
Someone said: "Unix is user friendly. But not idiot friendly."
Simutrans is a bit of this, too. If you know how to use it, it usually works very well. If you don't know, it bites. This is hard for newbies (*sniff*) but my focus is developing the engine; the access to it onyl as much as minimally needed (and IMO the current state is way beyond a minimum, so IMO we did lots for the newby user already!).
Sorry, I had to say that. Even if a lot of people now will bever look at Simutrans anymore. I hope it will help to avoid wrong expectations also.
PS: I'll read the book anyways. I seems to be good and if I ever should work on a commercial project I'll put more focus on the UI. (If someone pays the effort, it's no waste of time anymore
)