About this blog
Disclaimer: may not include actual scenes of infinity being explored.
Entries in this blog
Well, as the title suggests I had my first day as a proper permanent-contract honset game developer today. Nothing particularly exciting happened. I got to find out what project I'm working on - the game is finishing up beta and last bugs, I think it's about 3 weeks before master submission. After that I'm on another very similar project for about 4 months and after THAT, as my boss says, comes the fun stuff.
I'm very carefully hedging my language to avoid breaking any NDAs, but suffice it to say I'm not going to be posting any fascinating insights here in the next few months.
I took around to see if I could find any appropriate docs for DX, but didn't find anything in particular that suits my needs. I'm hoping ideally for something that covers the libraries for someone who's fairly experienced and knows enough about graphics programming and coding in general to simply read up on the basics, but with a little more detail and order than simply reading an API reference. Basically me, having already learned a good deal of general stuff from OpenGL, the pure reference is a little too dry, but something that starts from the start is a little too slow :). I'm picky, I know!
I may well try and hack something simple together and jump into the official tutorial somewhere around when it introduces effects management, I'm not sure just yet. Feel free to send any links my way if you think it'd do me well.
Well it's been a very long time since I wrote anything in here, and almost as long since I've even visited GDnet. Hopefully that'll change soon and I'll start visiting more often.
The last year has been pretty crazy, what with the final year of my degree and all, but I'm starting a new Game Dev job on Wednesday, so hopefully I'll have a bit more time to stick around and actually put something in here. Mind you, I've said that before and not managed it.
Since I doubt anyone is particularly interested in what I have to say, and I don't have any immediate plans to start working on a project, this journal is mostly going to be for my own use for tracking my own progress in personal projects, as well as serving as some kind of reminder/motivation perhaps.
I dumped linux a while ago for a windows-only install, and I think I'm going to start learning how to use DX, and build myself up a toolset and set of utility classes (avoiding carefully the loaded word 'engine') so that I can hopefully start work on some kind of proper project.
I may also talk about stuff happening at work if there's anything I can talk about - currently I've no idea what project I'll be going onto, and how much of it will be all NDA'd. Hopefully that will at least make this journal of some interest to whoever happens to read it :).
Now I think I'll go have a browse of the active topics to see what things are like, and also see how many names I remember from years past.
Recently I've been browsing the forums a lot more, at lunch at work or when I have a spare few minute waiting for a build to finish. One thing that I have noticed is how much in common a lot of threads have. This entry I'm going to
rant write about what I like to call "Problem Hiding vs Problem Solving".
I'm not sure where I first heard the term problem hiding, but it's stuck with me because it's such a common thing. Hell, I do it myself sometimes. Like the worst of practices, it manifests itself in different ways.
Take for example This thread entitled How to create non blocking functions. Essentially the OP wanted to have something call his code back after a certain delay, but while the original code carried on. In his words, 'Sort of like a timer'. I'm sure many of you, like I, thought of a couple of solutions, but then the rest of the sentence comes into play, 'but i dont want to have to create a new thread or create a win32 timer or something'.
Now I haven't coded properly in win32 for years, and I haven't toyed with threading much, but as far as I'm aware (and judging by some of the replies) both of those methods do exactly what he wants. He then replied with:
Thanks but the reason i dont want to create another thread with win32 is for some reason after createing a thread, calls to ShowCursor are not working. Nothin happens when i call it
Ah. How interesting. So now, instead of taking the best solution to his problem, he is searching for another. Although there are a couple of ways I could think of to do this without threads or timers, it doesn't seem like such a good idea to ignore a good solution.
So where does problem hiding come in? Problem hiding is just what it says - when you avoid fixing a problem by hiding it. This either means shooting yourself in the foot to avoid using one method, because you can't get that method to work, or the more well-known mistake of assuming that because some hackish code fixes the problem *now*, that the problem really is fixed. Often said code will fix the symptomns but not the root cause.
This is perhaps hard to find examples for. From the above poster's reply I don't know if he's actually having a problem, or just not understanding how threads work. Either way he's avoiding threads for the wrong reasons - because he can't get them to work. The Real solution is to fix what problems he is having with threads, and then use them for his timer problem.
This sort of thing comes up quite often, at least to my eyes. Someone who has never used the STL before writes the following code:
std::cout << mystr << std::endl;
This promptly breaks when he trashes some memory. He then decides that the STL sucks and goes back to using character pointers to emulate strings, reasoning that "i know char* works" and "std::string is complicated". A slightly contrived example perhaps, but the point remains.
This, again, is problem hiding. This coder knows that the STL does indeed work, and so it must therefore be his problem that the code broke. Instead of figuring out what went wrong, he simply hides the problem by going back to using char*.
Problem solving is the exact opposite. When you encounter a problem, you fix it - as simple as that. If only it was as simple to do as it is to explain.
Of course, I'm speaking in general terms, and often times you can't fix a problem, or don't have the time to figure it out - you just want to get the code working, so you use an alternate method. That's fine, but always be careful of going too far to avoid solving problems - you might end up just creating more for yourself.
OK so it took me a little longer to get around to writing this than I thought. So sue me.
Last entry I wrote about how I managed to land my internship, now I'm going to write about my experiences in the internship so far, and what I've had to do. I think I'm going to write a third entry about the technical aspects and how the ps2 dev works, since I think it's pretty interesting.
I'm not entirely sure how much I'm allowed to say about what I'm working on, so I'm going to err on the side of caution, but it's not exactly starcraft 2 so I doubt it'll be a big deal.
The game is for the ps2, and it's a kid-oriented game, but designed so that the whole family can play. It's a sequel to this and this. For those of you who are too lazy to read the wikipedia summaries (I know you're there. Yes you), here's a quick rundown.
The game is themed - the first game was jungle-based, with 4 monkey characters and the second was sci-fi-based, with 4 robot characters. It takes advantage of the Buzz! controller which looks something like this:
It has a big red buzzer at the top, and 4 coloured buttons down the main body - blue, orange, green, yellow.
The game itself is made up of 35 minigames, all with 4 characters coloured to match the buttons. All the games have pretty similar ideas. Either you have to press a sequence of colours correctly, or hit the right colour in response to prompts, or hit the buzzer in a reaction-based setting. The games are bright and simple, to appeal to the kids.
When I joined the team, a good 30 of the games had already been finished. I started off slowly getting used to the existing codebase. In fact, just setting up the development environment and checking out the 30GB source tree took most of the first day.
The first thing I did was figure out the particle engine subsystem, and go through several minigames adding in particle engines in appropriate places. I started to slowly branch out doing different tasks and learning the various parts of the code.
In my 2nd or 3rd week (I forget), I was given one of the minigames to do myself. Mostly the minigames are worked on by one coder and one artist, with the animators doing animations as necessary for all the games.
It was really fun piecing together everything to put together a full game. A lot of the actual code was pretty simple - boiler plate plus a basic FSM to govern the gameplay. Since the game is very fixed and low-interaction, a good 50% of the code required is just glue to play animations at the right time, load the correct models etc. The only difficulty is learning the library functions to be called etc.
I'd say I now have a pretty full understanding of how everything fits together. It's very well done actually, even if it is a bit messy in places. The "A-ha!" moments I've had while learning everything have been really fun. It's amazing that I've only been here just over 4 weeks actually, but I now know pretty much the whole shebang. Or at least, know it well enough to use it - obviously I don't have the same kind of understanding as the people who have been working on it for months.
Which brings me onto the engine itself. Frankly, it's a total mess - the original engine was written in pure C, but the new code we've written is in C++ and that means a lot of ugly globals. Combine that with tight deadlines and it means very quickly written code that is intended to work, not look pretty. I don't have a problem with that, but it was interesting to see since I've been told by many people that coding standards are so vital, and everything must be designed up the wazoo. Validation is nice ;).
The engine was written by the company who wrote the first game (and the second game, in fact). I don't believe it was written specifically for that game, it's more general than that. However, we were only provided with the engine as binary libraries and header files.
Oh, and no documentation beyond (sparse) comments.
Basically it means that if we ever get confused about what a function is doing we can't go into the source and check. There have been quite a few places where we've wanted to, but we just have to guess/ignore it. The original company is pretty good about responding to bug reports but AFAIK they don't really support the engine.
At the end of this week we have to submit the game to alpha quality, which looks like it might be a bit tight. Things should be pretty fun though.
Next entry I'm going to write about the technical aspects which are pretty interesting - ps2 dev, what sort of limitations and problems we've come up against.
Hopefully I should have some cool new stuff to show soon, but right now most of the code I'm doing is on stuff you can't screenshot :). I plan to add in some bloom on the sun so it doesn't look like flat circle, and then maybe look into generating galaxies and nebulae.
For this post, however, I thought I'd write about my recent experiences in the industry.
I know a lot of people on this site work professionally for game developers, but I figure another viewpoint won't hurt. Specifically, I've just recently landed myself an internship for the summer which will hopefully greatly increase my chances of getting a real job when I graduate in 2 years time, so I'm going to talk about both getting the internship, and about the internship itself.
To briefly explain the background, about 2 years ago or so I was involved in writing a chapter for More OpenGL Game Programming with a bunch of people from this site and others. That was basically the first thing I did that I could really put on my CV (resume) that separated me from any other hobbyist programmer.
I had been making demos and games and simply playing around learning anything I could get my hands on for years previous, but that was my first real solid experience. I obviously don't know how much difference it made to the companies I applied to (more on that in a bit), but I think that any experience or things you can put down that are more than just 'I write games for a hobby' is a Good Thing(TM).
So then things went on, and I started university, and over the course of my first year I was offered on the basis of my grades an internship at IBM here in Scotland. Since I had no plans at the time for the summer, and I was grateful for any experience I could get, I accepted and worked there over the summer.
I could write a whole other entry on my time at IBM - maybe I will if anyone's interested - but I spent most of the time doing some fairly low level systems programming, working on an internal tool that was used in all sorts of places and one package, which gathered all the possible information you could want about a computer's hardware and software - and then some. It also gave me a good idea of how hobby programming differed from real program.
It differs a lot.
I saw some really ugly code, some hacks and some code which seemed to work inexplicably. It all worked though, and overall it really wasn't that bad - it had been rewritten a couple of times over its years-long lifespan as the requirements had changed, and had a fairly flexible core. However as time pressure and deadlines loomed, sacrifices were made and dodgy code was written.
So when it came around to the next summer, I knew that IBM would be happy to give me another summer job but I wanted to apply to some game developers here in Scotland. I didn't seriously expect a job, since I was coming in without a degree or any experience, and none of the companies were even advertising summer jobs.
I cranked out a game using the engine I have, put it up with my portfolio and sent off my CV to companies I thought might take me on (I didn't email Rockstar [wink]).
I got a couple of polite replies saying they would keep my details on file, but I simply took that to mean "sorry, we don't hire people for the summer". Frankly, that was more than I expected, and I wasn't surprised that most of the companies never replied.
Happy with the result, I figured I'd just apply again perhaps next year when I have more experience. I contacted IBM and they sent me out a contract.
The very day I received the contract - indeed only a couple of hours before I would have signed and sent it away - I received an email from one of the companies asking me to come in for an interview. It caught me off guard, but it was most certainly a pleasant surprise. I arranged an interview for a couple of days hence, and began to prepare myself.
I wasn't exactly sure what to expect, but I'm not sure it fulfilled any of my expectations. I didn't really get asked any direct questions, I just talked to two people. We briefly discussed some of the stuff on my CV, and they remarked that they liked my portfolio, but nothing too specific was talked about. It pretty much resembled the kinds of conversations 3 developers have together - talking about ideas for games, interests, as well as the projects that they had going on.
They also gave me a brief coding test, but it was pretty half-hearted. They had me spot a couple of basic bugs, e.g. one to do with dodgy macro usage:
#define SQUARE(x) x*x
float foo = SQUARE(1+1);
and they asked about simple concepts like pass-by-reference and const correctness. Nothing too stressful.
I'm not sure if it was because I asked to know quickly whether or not I got the job, or if they liked me, but by the time I got home after the interview I had an email waiting with the job offer.
Tomorrow or something I'll write up about the work I'm doing. The project is a kid/family oriented game for the PS2, which is due out sometime next spring. I'm not sure how much detail I can go into because I'm under an NDA, but I can probably say a fair amount without being a problem.
Not much to say, I've implemented atmospheric scattering at last. It took me ages to figure out the equations and how you can actually implement them in real time. It looks pretty good though, so I figure it's worth it.
As yet it's totally unoptimised. I've still to get rid of my hacky IM sphere drawing code, and shift to proper VBOs. Then I'm going to see how much of the scattering calculations I can move to a vertex shader. I'm quietly confidant that you can fit most of it in and get a great bonus, since most of it is standard vector operations and lookups - the only problem might be the exp() calls for the attenuation calculation.
Once everything's drawing right, I've decided to get a bit of variety and work on rendering moons, stars, asteroids, nebulae and things like that. After I've got a baseline for the rendering, I'll go back and work in the procedural generation of the textures. On the other hand, there aren't any real sources for pre-made geometry of nebulae, so I'd probably have to do the generation before the rendering. If I remember right, Ysaneya did his nebulae via navier stokes equations - I might have to figure out a less flexible more hacky way since I don't think I'm up to that challenge.
I'm going to use the icon from now on :D
I'm deliberately writing this before 3am so that my posts will be more comprehensible and comprehensive than last night's.
First up, new screenshots:
Nothing big has changed since the last post, but a couple of things worth mentioning. First off my tangent normal calculation was wrong, which lead to all the normals being the wrong way around. It's kind of subtle the way the shadows were before, but I eventually realised that all the land looked like it was dipped in, and after a bit of hunting I realised my tangent vector was backwards.
I also switched to a 'night time' texture which doesn't include the aurora borealis. I didn't like how it looked, I preferred a clean texture. If anything I'd render that in myself afterwards, but I think that's kind of overkill for what I need.
I added specularity too, you can see it in the second screenshot. I pass in the gloss map/specularity map of the earth in on the alpha channel of the normal map, so that I don't waste another texture unit. I'm already wondering if there's a way I can avoid having the night and day textures, but I don't think I can at the moment. When I generate it myself, I should be able to again use the alpha channel of the 'day' texture simply as a luminosity channel to indicate where the lights are, and simply hard code them as white - that should suffice. In fact, I might be able to do that right now. Hmmmm...
Next up is atmosphere rendering. I'm going to read Nishita, then possibly O'Neil for clarification.
Outside of this hobby project, I somehow managed to swing myself an internship this summer at a game developer working on PS3 titles, so that should be pretty fun. I've no idea how much I'll be able to post about it, but hopefully I should have some cool stories to share.
EDIT: hey look at that, I did clouds. That was suspiciously easy. Still only using 3 texture units though, one for diffuse map (with night texture packed in alpha), one for normal map (with gloss map packed in alpha) and one for clouds, which could easily go in an alpha itself if I need another RGB tex down the line.
I've finally got back into gamedev after a spell of inactivity since last summer. For the past couple of months I've been working on a group project which ultimately aims to be something like freespace (on a much smaller scale). I've done a few bits and pieces here and there, but my next big task is generation of some solar systems and astronomical objects for environments. Kind of Ysaneya's little brother's little brother.
I'm going to try and keep this journal up to date with new stuff, I'll hopefully have things to talk about, but right now it's almost 3am and I should really do that "sleep" thing. I do remember how you guys love screenshots, so here's a work in progress with which I'm pretty happy at the moment:
Dusk over the east coast of the USA.
It's time to retire my keyboard and replace it with something new and fancy and essentially exactly the same.
What I would like is recommendations on a decent keyboard. I'm trying to find a keyboard which doesn't have 19287 buttons for loading internet apps and changing the volume, and has decent tactile response. Not one of these flimsy plastic pieces of crap they produce these days. I've been considering getting an IBM model M but that might be a bit too old and clunky for me.
Once I'm done with my 4e5 entry, I've got some interesting things I want to try out. Firstly I want to play around with generating infinite (endless) terrain. That will lead up to a game I'm planning which I've just this second decided to call "the mile high club". I'll try and post some details about it tomorrow when I will no doubt be bored at work.
I have completed the first aspect of my game, about managing the country. This fulfilling the economics requirement (and europe, once my europe-map-generation code is done). A friend of mine came up with a good idea of how I could incorporate the emblem into my game, without simply using a flag - the country you start with is made up from outcasts from other countries, who are outcast because of a birthmark they have. Said birthmark is the emblem.
Anyway, I have a latest version up here for anyone who cares to test it. Windows and linux versions. I'm disappointed with how boring it is, but hopefully after some minor additions and tweaking, it'll be better.
This is something I've seen in a few threads about OpenGL, especially when comparing it to D3D (I know, I know..). OpenGL doesn't require you to use extensions to access anything beyond 1.2. If you have a compliant 2.0 library plus header file then you can quite happily use any 2.0 function you like without having to use extensions, whether in GLee or not. The difficulty lies with windows, which doesn't provide access directly to 1.2+ functions. This is changing in vista to 1.5 I believe.
I'm saying this here because I don't like to start/get involved in flame wars, but it annoys the hell out of me when people suggest that OpenGL is flawed because of the extension mechanism, when in fact it's a great boon - it not only neatly solves the problem of MS's (understandable) lack of OpenGL support, but it also provides a nice way to test out bleeding-edge functions of your graphics card.
Now if you were to say something about the ARB being slow to bring extensions into the core, then you might have a point :).
btw, I'm still alive and working on my game. I'm definitely going to be entering something in 4e5, but I'm afraid that as it stands now it's a whole lot more sucky than I imagined it would be at this point.
Well I've found my strict schedule works a bit better if it isn't so strict.
Or so schedule-y.
I'm continuing to hit my targets, in a manner of speaking, but I have a feeling that soon that's not going to happen. I'm going to take the schedule as a kind of broken down checklist, with a bit of direction. Hopefully that'll make me feel less like this game is work, because I have to spend most of my free time on it.
On the plus side, I have a few screenies to show off:
Procedural flags - these will be the flags of the other countries in europe.
The latest GUI!
Also, as part of the gameplay in my games, some of the elements won't be represented exactly as numerical fields - such as the level of crime. That would make the game too easy. Rather, there will be a virtual 'newspaper' with stories which roughly represent the various fields. Not all the fields will be present every day, so it'll add an element of intuition and random chance into what is otherwise a purely mathematical problem.
However, I'm hoping to have other stories in the newspaper, which have no relevance to anything, thus making it a more realistic newspaper. So if anyone wants to write a paragraph (bonus points for funny/silly) that could fit as a short article in a national newspaper, send me it or post it here and it'll go into the game!
Another boring post. I've hit my target for today, but I'm starting to get worried. Firstly, it's going to be tight getting everything to work on time, as many of my schedules don't allow much margin for error. Luckily I have a good month and a bit assigned for polish and bugtesting, so that gives me a little breathing room.
I'm also getting more worried about how strict one of the element rules is. It's actually quite difficult, at least in my game, to get an emblem that is actually integrated into the gameplay, rather than just being heavily displayed all over the place. Other than that, I'm pretty certain I can meet the requirements for the other elements.
One thing that's resulted from this is that my documentation is shot to hell, because I don't have time to keep up with my code :/.
I may edit this post and put up a demo later, I'll see what happens. Stay tuned for fun and games!
EDIT: Windows and linux version only. Sorry Ravuya :(.
I'm a bit late in hitting last week's target, but I blame that on the fact that I was away for all of friday and saturday, and most of sunday.
Excuses excuses :P.
I'm going to have to rethink my schedule, because I'm not sure if I've allocated enough time to some of the later aspects. I'll see what happens later.
To entertain and titilate while I don't have anything interesting to say, screenshot or demo:
I think I can safely say I've hit today's target for the code. I've learned a couple of things - first, these bits of code are going to need a lot of balancing to act like I want, and to play the game as I want. This, coupled with the fact that it's become clear that I won't be able to look at everything in isolation, I'm going to have to restrict my urge to get things "just right" while I'm writing the code, and just go back and forth between different sections writing up bits of code. Once everything's done, there will be time for getting things perfect.
Also I think I'm going to have to ditch my idea of a text-only game first. It's pretty difficult to fiddle with things without a GUI interface, and I'm going to have to get a rapid prototype up for testing, by the next target (next sunday).
Other than that, I don't know how things will turn out. I can just hope that it ends up working out OK.
For those of you who can't get enough of stat mongering, I've written a Journal views bash script that will grab the journals page, and output the journals in ascending order of views. Compare your standing with Samsonite, DogCity and johnhattan! Obsess over meaningless numbers! Be the envy of family and/or friends!
I've got the GUI how I like it (just about), which leaves just the little bit of gameplay I have scheduled for tomorrow left to do. Hopefully I'll be able to stay on target.
Anyway, I have another test for you guys, just because the reaction to the last one was just so overwhelming. I also have the source code up for any fans of Malus domestica who may want to brave it (note: it should be X-platform as regards OS, but I can't guarantee X-architecture).
Well, I didn't manage to meet sunday's task because of real life issues, but I got a fair way through it. I figure that the GUI should be a separate on-going task which I do whenever I get bored/stuck with the "real" stuff. Plus, it's mostly finished which allows me time to rewrite the horrible horrible widget resizing/positioning stuff.
I have a demo available exclusively for journal readers and anyone else I decide to give it to, uploaded here. There are binaries for windows and linux, and the windows binary should have all the dll files necessary (this isn't guaranteed). For linux, make sure you have SDL, freetype2, zlib and opengl.
Yes, I know it's a cheap rip off of JavaCoolDude's layout. It's written by me from scratch of my own design, but the actual layout I took from JavaCoolDude, and some of the colours.
Comments are welcome, it's still work in progress. Click on mario for a "hidden" feature.
I was bored so I redid the layout. It's awful I know, but I'm no webdesigner.
EDIT: now with fancy-pants schedule-o-meter
Since I haven't got anything to do at work, I've been working on the design for my game. It's about done, but I've got most things ready as it is. If anyone is interested I have it up here. It's a fair read though :P. I've copy-pasted my schedule, which I might put into a fancy header or something like most people have done.
- 21/06/2006: Finish up this document, clean it up and organise it better.
- 25/06/2006: Implement a menu system with the widget toolkit. Minimum textured windows with alpha and 3D behind, buttons, sliders, checkboxes, optionboxes, number input, labels.
- Milestone 1: Bare-bones menu system set up.
- 02/07/2006: In a text mode, have agriculture implemented, with the population reacting to it. This means all properties of agriculture, population morale and your status with the population.
- Milestone 2: in a text mode, A very simple balance for one of the departments
End of feature creep: Here ends any feature creep, unless the game is seriously lacking in fun, or something similar.
- 09/07/2006: In a text mode, have justice, military and finance implemented, with all suitable interactions with the other departments, the population and you.
- 16/07/2006: In a text mode, have trade, education and medicine implemented, with all suitable interactions with the other departments, the population and you.
- 23/07/2006: In a text mode, have war, famine, plague and the revolts implemented, with all suitable interactions with the other departments, the population and you.
- 30/07/2006: In a text mode, have the press implemented, with all suitable interactions with the other departments, the population and you. The press will have relevant stories for most events that can happen.
- Milestone 3: in a text mode, the full game without saving/loading or politics.
- 06/08/2006: Implement saving and loading for the current game.
- 13/08/2006: Implement a view of parliament, and randomly populate it with ministers.
- 20/08/2006: Implement the secret police.
- 27/08/2006: Implement elections, with the non-interactive options.
- 03/09/2006: Implement elections interactive options, with stub minigames
- 10/09/2006: Implement elections interactive options, with minigames
- 17/09/2006: Implement other minigames
- Milestone 4: Full game, minus graphics, advisor, plot and polish.
- 24/09/2006: Implement menus with programmer art for the departments (anything up to milestone 3)
- 01/10/2006: Implement menus with programmer art for the rest (anything up to milestone 4)
- Milestone 4: Full game with graphics, minus advisor, plot and polish.
- 08/10/2006: Implement the basic advancement of the game up to the point of your first election.
- 15/10/2006: Implement the advancement of the game up to the point where you are left on your own.
- 22/10/2006: Implement context-sensitive help for most of the game.
- 29/10/2006: Finish up remaining holes and anything missing.
- 5/11/2006: Polish.
- 12/11/2006: Polish.
- 19/11/2006: Polishing based on feedback/Bug testing on my system.
- 26/11/2006: Bug testing on as many systems as I can find.
- 29/11/2006: Submit, as close to 24 hours early as GDNet allows.
War of the Worlds butchered the opening lines. Seriously, that sucked. Also, it's just not hte same without the DUH DUHDUH duuuuuh afterwards.
More updates as I watch the actual film.
WHAT THE HELL DID THEY DO TO THE HEAT RAY?
(btw, I noticed as I went to post this that my rating is almost 1337. W00t at useless numbers!)
EDIT: I will be posting development related stuff here later, I promise.
Some or all of these could be old news.
WHY MUST I FOREVER PROCRASTINATE?
(I'm still stuck at designing what my game will do. Then I need to figure out how it's going to do it, then when I'm going to do that)
What to do when you mess up:
- Don't Panic!
- Realise it's quite reasonable to panic.
Those are the 3 steps. I went through these stages today when I read a crappy recipe which failed to remind me that eggs need to be separated if you're going to whip them. Luckily when I mentioned it to a friend he suggested making something else with my then useless egg-sugar mix. So, I made cookies. They exactly didn't go according to plan. Oh well, you win some you lose some. At least they taste nice.
I'll try again on monday or something at making my saver's cake (the cake I was originally attempting). I WILL SUCCEED.
In an effort to justify my writing this in a development journal, I'll go on to talk about my idea for a 4E5 entry.
I'm describing it just now as civilisation at a high level. You control the government of one european country and as many of its decisions as I can realistically model. ie. military, domestic, economic. Everything. I'll need to research a bit into the way governments are normally set up, but that's going to be the core of it. All these decisions will affect the emotions of the general public, and your own ministers. The emblem can easily be the flag of the country, or the sigil of the king (assuming I go for a monarchy based society), or whatever.
Hopefully that should be very fast to set up. It's all going to be menu based - there's no need for any realtime data in there.
Next I'll add in "events", such as wars, famines, plagues, civil uprisings, etc. These will obviously be affected by your decisions earlier in the game, so keeping a balance will be critical. I was hoping to add in political intrigue - backstabbing ministers and factions in the government - but that doesn't really work too well if you're not a single minister. I thought about making you a single minister working your way up to the top, but I wanted you to be able to control the whole country from the start (not in character, just having control over all facets of organisation), so this probably won't happen.
After that, I might add a story in, although I'm not sure how easy that will be without you having a definite character. Other than that, the plan is to polish polish polish. Other features like invading other countries to conquer Europe completely will stay on the backburner until I can see how I do with the rest of it. Until then, the gameplay will be free-form with no real end except losing. Perhaps I could just do "your reign lasted XX years" until I add in some sort of progression and end.
Well, I've outlined most of what I've thought of so far. The next steps are to write down more specifically what I want in the game at various stages (perhaps 3 or 4 different stages, each with more features?), and work out a goal list and a schedule.
I hope I'll actually manage to finish this, unlike .. everything else I've ever done :).
Comments are very welcome.
EDIT: Further brainstorming -
One aspect of management is your own cabinet. The ministers have different personalities, and they give you better control over the aspects of the country management depending on how they feel about you. However they have their own opinions on each other, so flirting with one minister might piss off another. Some ministers will be good, and like you if you run the country well, but you can embezzle taxes and bribe corrupt ministers to like you too. Then it becomes a balancing act, and if you fail you lose control of parts of your country management. I could put in elections too, so that you can try and fix the process to elect more corrupt officials to make your cabinet more bribable. Or try and fund and support good officials to make your cabinet more good, at the cost of taking time and resources from other parts of country management.
A friend pointed out all this control probably shouldn't come at once, in which case I can implement my "story", or at least a goal -
Your country is corrupt, and you want to either take over as dictator, or bring the cabinet to a good stage. In which case the cabinet management is an indicator of how far you are through the game - either how many ministers you've bribed to your side, or how many good ministers you've gotten elected.
it seems I can't get my head around development for any long period of time. I wish I could think of a good 4E5 entry, it might focus me. For now I'm going to go back to what I always do and putter about with various different things, rather than trying to force myself to make progress on any one aspect.
In the meanwhile, I was thinking of making this journal baking related, since I've got into baking since I moved into a real flat. Would there be any interest in me posting photos, recipes, anything? If not, I don't know if I can be bothered doing that either.
I'm such a lazy ass!