• entries
21
25
• views
18061

## Burnout ...No, Not the Game

Well I've been slowly chipping away at bits and pieces of work but i don't really feel like I'm achieving anything.
I keep coming back to comment on one of my posts from [11 days]
What i took from it was "if you don't enjoy it why are you doing it"
To which i replied that i did enjoy it; and i do.

I sincerely enjoy all my hobbyist coding, i spend a great deal of my time either coding or reading about code/designing and i have done for quite some time.
As of now I've been coding at a decent level for roughly 11 years during which i spent most of my spare time learning/coding to varying degrees of success.
I've been to university to study a programming related degree and i now work as a software programmer.

Recently over the last ~1/2 year I've started to notice no matter how hard i work or how many hours i put in I'm seeing less and less of a return/progress on my projects. In small time frames it's not noticeable but looking back there is a definite decline.
I'm still learning new things and the application of these new things comes as easy as it always has so it's not really decline in skill (hopefully) more of an increase in the difficulty of getting things done to the same quality on the same time frame.
The motivation and enjoyment is still there but the efficiency and overall capability is definitely lower than it should be.
I'm beginning to think I'm a bit burnt out from the coding centric lifestyle I've gotten used to. Not manic depression only working because i have to burnt out but more of a subtle decline in efficiency.
It's a hard thing to admit that you are not up to bar, even with yourself from year ago and it took a while for me to really see and admit that this was the case.
I spent 11 days coding something that i could have knocked out in 3 days a couple years ago and i struggled even with that.

I'm still sure that coding is what i wanted to do in that there's no doubt whatsoever (unless someone wants to pay me monies to evaluate bacon, like a bacon critic...yeah that would be awesome).

I'm going to try something unprecedented for me; I'm going to go code free - cold turkey for a couple of months.
Not as dramatic as it first sounds as i still code for my job but it's not particularly taxing and i can separate work from the rest of my life.
Once i leave work my life is code free until the next morning, now i don't know about you but I'm struggling to see my life without programming. It's all I've ever seriously done; i mean what will i do with all the spare time? What would you do?

I'll be doing this up until august (when i get back from my holiday).
During this time i will only be coding during office hours (and a very small amount of overtime), while I'm not at work i will have to find something else to do with my time.
I'm still a techie at heart so I'll probably do some old fashioned design and get a few of my ideas fleshed out on paper (they are not all programming projects).
I've also always wanted to write some short stories and that sounds sufficiently far away from programming to be relaxing.
Big fan of Zen meditation so I'll have more time for that.
Ooh also need more exercise; having a girlfriend and full time job has made me a bit more rotund than i would like to admit.
I'd quite like to obtain some level of skill in illustration and/or modelling so i might see about some classes or independent learning.
I also have a backdated log of games i bought and never played so i may get back some gaming time.

I've honestly no idea what will happen or what I'll end up doing, but it's fun to try new things (even if your new thing is NOT doing your old thing)

I'm going to try and keep a weekly journal of un-programming, just going over what I've been doing and whether or not i like it.
[On a separate note, Bacon critic is sounding more and more like a good idea]

Do any of you have any experiences with burnout, if so what were your symptoms/solutions?
Also I'm open to suggestions/criticisms; any feedback is usually good feedback regardless of the tone.

Thank you for listening

## 11 Days - [Day 10/11] & End of Project(ish)

I've got a lot of polishing and smaller interactivity done these last couple of days; mostly to do with interaction between actors.
Items are now in and i have a design for the simple GUI I'm going to use.
What I've been doing in-between all of that work is fighting with unity and some path finding implementations.
My main dislike of unity is that it does not support JIT debugging from visual studio; that being said everything else is pretty good.

Path finding has been my main blocker for the past 3 days, I'm close to a solution now, but it wasn't easy. I considered just throwing together my own A* implementation and i have done in my c++ days but i opted to try and use the community based solutions and hope i get a higher quality product.
There are some good implementations for unity out there but the ones looked at didn't do what i wanted or at least that's what i initially thought, turns out most of them will do what i want it's just that i have to use the source (or libraries) directly and try and fit my goals around the wealth of features i don't need in the libraries.

I was of the impression that because they were all singing all dancing implementations that simple a* path finding would be well...simple; It isn't and the reason it isn't is because they were designed to do path finding in the unity editor with levels and meshes that were preconstructed, which is a common unity workflow. I however am loading all of my levels at runtime and cannot rig a path finding mesh to a level that isn't in the editor.
Again this was mostly problems with my misconception of how they worked, I'm using Aron Granbergs a* implementation and it does in fact allow you to create a grid on the fly and pathfind manually, but it isn't well documented and the examples are informative but require time and understanding of how it's done in the editor so you can cobble together a code based implementation.

I am happy to be proved wrong on this point but it's been difficult to get things working in a purely code based workflow (sans editor).
I think I'm nearly there with the simple path finding and once that's done i can finish the integration with enemy ai and the game as a whole.

Here's quick rundown of my 11 days
Mistakes:
One of the biggest mistakes I've made on this project is to separate the code into an external library, it makes sense from an organisational point of view but it's made debugging things much more difficult.
Stack traces don't extend into external libraries so when something dies you only get the point in the unity solution where it died, having all of the game code in an external library means i made it 10 times more difficult for myself.
Having to put in debug lines for everything is time consuming and clutters up the console no end. What I'm doing currently is moving the code back into the unity solution itself so i can get decent stack traces on issues.
Another mistake i made was to not derive from the MonoBehaviour class; i unity this means you can then attach the script to an object which isn't needed for a lot of my internal classes, it also however means that i cannot make use of variable interrogation in the inspector panel within the unity editor and again I've made things difficult for myself.

The main point is that while i chose unity i was only really using about 30% of the functionality and nearly none of the editor features. This really became apparent once things got a bit more complex and i started to use the rendering and display features.
My intention was to create and external library so i could re-use bits and pieces in other projects but it doesn't really fit in well with the unity workflow. I don't think i was entirely wrong in my intention but i do admit I've gone about it backwards; i need to focus on getting the prototype working and then once I'm done i can strip out the bits i want to make re-usable, that way they are tested to some extent.

Good Bits:
Picking unity was a good decision overall, even though it is lacking JIT it does have many impressive features that make life a lot easier (yes i know you can do JIT from monodevelop but visual studio is superior).
Making lots of mistakes is good, any mistake made is something you've learnt for next time and I've learnt a LOT.
Actually getting things finished is a great motivator and while I'm still overshooting my estimates I'm still motivated to finish which is good.
Having done this prototype I've gained a lot of knowledge in what does and does not work within the confines of my initial design; once I'm done i can go away and update my design with all of the changes i need to make based on what I've learnt.

I'll also have a solid base with which to work on (or scrap depending on how much the design changes)
My initial goal was focused mainly on bettering my workflow, i did want to have a finished prototype but that was a means to learn better ways of working or at least to better understand how i already work. In this respect i succeeded, i now know that i work best when i feel like working. That sounds like an obvious statement, but i genuinely thought i might work better with some sort of structured timeline but alas, that failed miserably.

Future:
I AM going to finish this prototype if it kills me, once the path finding is done there's the system integration and path creation for character movement as well as a minimal gui and then I'm about done(well i suppose there's testing a bugfixing as well).
Once that is done I'll be reviewing my initial design and then I'll start work on the game proper. I'm still leaning to modularisation of the subsystems of the game, not so much for the re-use, more for the fact that i better understand things if they are separate and have clearly defined interactions.
As it stands i think I'm about 3 days away from finishing the prototype, so I'm going to have Sunday coming(8th May) as my new deadline to give me lots of contingency.
Once it's done I'll release an exe (or a web demo) for people to try, should anyone be interested in buggy prototypes with atrocious programmer art.

Writing these entries is helpful but it's a bit much to be doing one every day, so I'm going to be writing one every week (maybe increase it to 2 weeks at a later date) and I'll document the whole process of the creation of my game. I don't see a downside; maybe I'll release it in the documentation as part of a limited edition heh.

Thank you for reading if you have been reading, even more so if you've been enjoying.
I'm open to feedback, questions or suggestions if you feel like it.

## 11 Days - [Day 10/11] - End

This entry is coming soon, with a roundup of the entire 11 days.

## 11 Days - [Day 8/9] - End

Hello,

I'm rolling day8/9 into one day as i only really got a days' worth of work done.
Having said that it's good to get a break once in a while and it's been really nice outside the past couple of days so I've been out and about doing regular people things.

I have got the team system sorted, you can now create groups of actors and query individual and collective data from them
The victory conditions setup is now working as well, uses a multicast delegate to run through a set of functions that return a bool if any of them return true the game is over.

This way you can have different game types other than just destroying the other team, such as king of the hill:

Victory Condition - Player must be on tile[2,4] for 5 turns.
Logic - check whether player is on tile, if so note actor ID, increment counter; if counter = 5 return true.
If no player on tile, counter = 0;

This does pose the problem of multiple enemy AI systems to cope with different game types but that's more fun tasks than a problem.

attacking/defending has been implemented, again using delegates; this allows you to have the attack calculations that are individual to characters(as opposed to global constants).

what I've been struggling with is the path finding, as the enemy AI, path creation and essentially the rest of the game depends on the path finding.

I've looked at third party libraries but for some reason can't seem to get my head around how to utlise them within my tile based system. It's not that they are incapable of it, i's pretty sure it is possible it's just that for some reason my ability to incorporate these libraries was completely annihilated.
I've left this alone for the moment(and also asked a few questions on some forums) but i will be coming back to this implementation later today and hopefully I'll get it done tonight.

Motivation wise I'm middling around a 5/10 at the moment, mostly because of my inability; i prefer things when they are a challenge but the path finding stuff isn't really a challenge logically because i feel like i should be able to do it. It seems more like a mental block which is kind of frustrating, but we'll see how it goes tonight.

Task wise I'm only left with the stuff that relies on the path finding and the GUI, the list is as follows:
- Path finding
- Path creation module
- Enemy AI
- Gui Stats display
- -For individual
- -for team
- -for enemy team
- Hit probability calculation and display
- Damage calculation and display

With only 2 days to go, including today it's a bit of a squeeze to get it all done.
We'll see how it goes, i plan to finish this even if it runs over the 11 days but I'd like to finish within the deadline.

## 11 Days - [Day 8] - Entry 1

Pathfinding........AARRRRRGHGHHHGHHGHGHG

That is all.

## 11 Days - [Day 7] - End

Day 7 - End
Still not got around to finishing the path creation, managed to get some mild cleaning up done and some extra work I'd missed on the character stats/damage calculations.
I also implemented the team collections and once the path creation is done then that should be most of the core functionality out of the way.
apparently i haven't been sleeping enough because i went for a nap around 7pm last night and didn't get up until 9am this morning so at least I'm well rested.
In light of the lack of coding done I'm going to go over some of the end game ideas both for this prototype and for the project as a whole.

Prototype:
This prototype is mainly to get something for me to use as a base onto which i can build and rebuild my originally designed modules.
It's essentially a very cut down version of what i had planned but hopefully by doing this i can get the unity integration niggles and maybe some design flaws out of the way.
(a similar list has been posted in a previous entry so you can skip over this if you like)
In the prototype i plan to have the following things
- Single level tiles
- Simple animations for characters
- Path creation from one point to another
- Ability to attack enemy characters
- Teams
- Simple Enemy AI
- Skills
There's probably a few things I'm missing from that list as well but that's the general gist.

Looking at the list above makes it seem like a standard TRPG copy however i have an few ideas on how to make it stand out.
In the finished product I'd like some more standard TRPG element such as:
- Item/Inventory
- Weapons
- Jobs
- Skill Trees
- Scene scripting (for story)
- Quests

Most of which i already have designs for, I'm also going to be adding some extra features which I'm going to be going into a bit more depth about.

- Large Multiplayer Instances
When playing a single player TRPG you don't usually see huge maps, i imagine because it would make the turns much longer and less people have the patience to invest in something that long.
As such while there are optional large maps in the single player, there will be a multiplayer component where large maps will be commonplace.
I plan to include a few different modes of play and I'll go over a couple here.

"Standard" will just be run of the mill 1v1, you have a set amount of points that you can spend on equipment during set up and then you go at it against another player.

"War" will consists of Its own sub modes but the overall premise is a very large map with multiple teams fighting each other, this gets more interesting when you add the fact that you can play in groups of teams in what i call team-team death match.
You can have a group of say 4 teams per side that work together to bring down the other group of teams. You can spec out your particular team to perform a certain role, such as snipers, demolitions, foot soldiers, medics, spy's etc.
You will also get bonuses for specializing.
There also some much more exciting "War" modes but they are only formulate at the moment and trying to explain them would only confuse me but I'm leaning toward adding RTS features such as supply lines and outposts and bases.

Another key feature is persistent games, there will be either a server client(for end users to create their own server) or I'll push it to some cloud infrastructure and make it centralized. This will enable you to play games over a period of time, so if you do have a huge map and a game is taking too long you can take a break and come back(perhaps with some sort of notification when It's your turn)
Another feature I'm looking at is cross platform play, as TRPG's are turn based i hope to be able to provide a client for the game to multiple platforms so they can play together.
For instance say i set up a game from my PC, i create a server so i can play with my friends, some on pc some on mac. Not necessarily groundbreaking stuff but It's much more accessible, however I'm playing a long game so i install the notifier for my android phone. I'm out and about and i get the notification that It's now my go...Ii have to wait to get back home before i can play....or do i.
well...that was little overdramatic but what i was getting at was that unity provides the ability to build for multiple platforms so i can port the game over to different platforms from the same code base and allow you to play from your mobile devices(provided i tone down the graphics etc).

This is one of the reasons i am trying to make the pipeline for all assets as extensible as possible, so i can swap out models for low ploy ones, or change them completely with minimal effort.
The extra effort required to do this will hopefully pay off when i can create whole new levels and worlds with minimal code.

Back to work then, have to make those promised video's or people will think I'm slacking.

## 11 Days - [Day 6] - End

Day 6 - End
I got partway through creating the path following mechanism and got bogged down by some unwieldy code I'd done before. As I'm now connecting different parts of the system i can see just how much of a hack job it all is.
Don't get me wrong, it works and individually its fine, but when trying to get it to work together the deficiencies are more obvious.
I went through and cleaned up most of the code I'd already done to follow some sort of common standard.
I can now add/remove methods to modules without worrying that it'll break anything else.
While i was doing this i moved the final section into the external library, leaving only the code that is dependent on unity in the project library.
To reiterate this is only to make the debugging easier, if something is better suited to the project library it will be moved back once I'm done with the bulk of the development.

I have finished adding the character stat collections, this has some interesting design choices as I'd previously completed 90% of a much more comprehensive stat/item/damage system.
This system is a module that i was developing as a standalone library (to be used in this project) but was part of a much grander design. I am still planning on completing that library after this prototype because it is one of the better projects I've attempted.
It is a simple XML driven stat system with some not so simple features, however i felt it was disproportionately complex when put against the rest of the prototype. So i have created from a scratch a hugely cut down version of the system that i can quickly integrate and use in the prototype.
When i come to full development of this project i will finish the original module in its standalone form and use that library as the basis of all item/stats in the finished game.

The path creator/movement is nearly done but was slowed by the refactoring(a necessary evil), I'm also actively trying to avoid having to write my own a* implementation but its looks as though i will. I 've see a couple of libraries but they are non-commercial licenses.

I'll post some movies once i have working path creation/following.

Back to work....

## 11 Days - [Day 6] - Entry 1

Today is game mechanics day, i will be finishing off the path selection for player characters and implementing some Simple AI for NPC's.
Bur before all that i need to create a team management class, this should allow me to add a few characters per side and control the strategy movement and attacking of NPC's.
As it's only a simple prototype i don't want to get bogged down with complex strategy code(well i do but i shouldn't) so I'm going to put some simple placeholder code in for the moment.
The team management and strategy is linked to pretty much everything else so any real worth is only going to be seen after I've added all the stats/items code anyway.

I'm getting to a point where it's difficult to complete a single thing in its entirety as it depends partially on something else being finished which in turn depends on something else, so I'm switching between different tasks as needs dictate.
Meant to include more screenshots yesterday but forgot , here are the latest screenshots.
#1

This is a simple 3x3 map with the character on the initial square, I've added some simple texturing and a free model for the character(no animation yet).

#2

Here is a much larger map with the character moved to a different square.

Note the only difference between these two is the XML file that generates them, camera positions, model positions and movement are all calculated at load.

I realise that looking at it there's not much difference between these and the last set so tonight at some point I'll record some small video's and put them up on vimeo so you can see the movement(and hopefully the completed path logic)

Also if you have any question about anything or anything you'd like explained better let me know.

## 11 Days - [Day 5] - End

it's 2PM on Day 6 and I'm just getting around to the entry for day 5.
This, I've found is the only drawback to flexible working; once you are on a roll and work late it messes with your sleeping pattern.

Got the character class and models working as well as the movement between tiles working for characters.
I have also nearly finished working on the path creation mechanism for moving characters around.

Similar to FFT you select the character you want then select the position you want to move them to and the pathfinder generates a path between the two points(if it can).
This path is covered in a glowing blue path so you can see the movement steps.

I do need to do more research on the path finding systems used by common trpg's and then make sure i adhere to something similar; i may have to adjust some of them slightly as I'm planning on being able to support huge scale maps(up to 128x128) and path finding may be different on such a large scale.

I've been using iTween for the movement between tiles and its worked out pretty well so far, it has some nice features such as orient to movement direction(which makes you face the direction of movement).
This is especially useful as I've also added a forward facing direction to the characters, this is to help with rotation for animations and calculation for attacks from different directions.

Motivation wise things are good, still working best late at night but I'm also getting up later and later in the day. Which means I'm getting more dev done, but having less time in the day.

Couple of snags using unity, mostly around model import and scaling but those are sorted now. Not looking forward to the animations, anyone know any good resources for learning the animation pipeline in unity?

## 11 Days - [Day 5] - Intermission

Hello,

In the unlikely event that anyone is waiting eagerly for the next entry...it will be coming in the morning.

it's 1AM here and i'm still going stong so i'm gonna work through and do my entry for today in the morning, see you then.

## 11 Days - [Day 4] - End

Today is going great so far, i seem to be much more motivated at night, not sure of the reason but that's 2 days in a row no I've got more work done at night. Perhaps it's the quiet.

Finished the camera controls complete with rotation of map and different camera heights, this is now linked to the keyboard so it works in-game.
Also been working on the in game tile selection controls, they are working now and i can move between tiles using the wasd keys. This also compensates(changes) when the rotation of the map is adjusted.

Each time the map is rotated a value designating the forward direction is changed accordingly; the tile selection movement is based on this value, so you will always move forward in the same direction relative to where the camera is.
This also works no matter the size of the loaded map.

Surprisingly it took about an hour to implement and worked first time, love when that happens.

One thing i have noticed is that it's getting easier to ignore the usual stringent naming/structuring i normally have around my code; this is increasing output substantially.
However that is not to say i wont' go back and neaten it all up...because i will...i need to, but for the moment i can ignore it in the name of progress.

Also finished the character class and some simple models for the characters, need to implement character/npc path designation before i can do anything with it though.
As you would imagine, NPC's and player/NPC path finding are up next, once they are working i can get some simple interaction working.

Updated the textures of the test tiles to see how it would look...still looks terrible, albeit slightly less terrible.
More screenshots tomorrow.

Sessions are a bust, i put this down to the interference of rest of my life; it's intensely difficult to schedule any sort of blocks of time on a regular basis. Perhaps if it was full time office hours those sessions would be of much more use, but so far all its done is make things more difficult.
I'm back to working whenever i can fit it in(although i am still trying to get in at least 8 hours of coding a day) and its working well.
Up to 4 hours today so quite below my target but honestly I'm happy with the amount of progress so I'm not going to worry too much.

10 Open items in Wunderlist:
- Character Class[Still needs some work]
- NPC Class
- Player/NPC Pathfinding
- Character/NPC Stats
- Team Class
- Skills/Attacking
- Victory Conditions
- Simple AI

Seems a lot for 6 days but I'm an eternal optimist so well see how it goes.

## 11 Days - [Day 4] - Entry 1

I have decided on a working title name of Frontier, I'm sure this will change at some point but i relate better to things with actual names so for now this'll do.

Finished the basic camera movements last night and got started on the character class, things are progressing smoothly now. I'm using iTween as my camera movement library, i used this extensively back when i was doing some AS3 programming and it's still just as awesome.

The planned sessions are still on for today but I've yet to see any great benefits from a tiredness or code quality point of view.
I created a high level to-do list in Wunderlist(great app btw) and am working through the items on there.
The design has small things, that i have already worked through but other than that it's been next to useless as the changes I've made once i got down to coding have rendered it so.

Not sure if this is because of my lack of skill in designing or because of the rapid changing nature of prototyping.
- Double check camera controls
- Character Classes
- Map Controls [Moving a cursor around the map and highlighting squares]
- NPC's

I'm getting into the groove of things now so there should be a few more screenshots by the end of the day.
Anyone know of any places that do small free models for me to test out my map system with actual tiles?

## 11 Days - [Day 3] - End....Ish

Well, today i got a lot done, finished the rough version of the map loader/renderer(screenshot included), Currently finishing up on the camera controls.
The 2.5 hours sessions are not as useful as i would have imagined, it's difficult to fit 2.5 hour block in my normal day, however i did try and fit as close to those boundaries as possible. The work produced during the sessions is of a higher quality/efficiency than the attempted 4 hour sessions but the effort of trying to block out the time from my day is quite substantial.

As i hinted this morning I'm going to try my regular method of ad-hoc work sessions at some point this week but I'm keeping with the same session tomorrow as it's a weekday and i would like to see if there is any difference.

Work wise today has been great, as i said i got the map system rolling and finally some screenshots. Working on the camera controls has been less fun...Maths is hard; it never fails to surprise me how little math's i know.
Simple arithmetic used in array's lists and counters, i use all the time, however quaternions and 3d maths aren't areas i usually tackle. That being said it hasn't been too bad and I've learnt a few tricks in the unity framework that helped things along.
The way unity scripting works is a bit strange, mostly because there are multiple different ways to accomplish the same thing and they are usually wildly different in their implementation.

I've moved as much of my code as possible into a separate .net dll project, this is a personal preference that I've always used when dealing with unity projects. It allows/forces me to work on the library in a completely editor agnostic environment. That is not to say that the library is standalone as i use quite a few classes from the unityengine.dll it just means i can separate all of my logic from the rendering/modeling side of things.

The other major reason for this is the lack of JIT debugging for visual studio from unity, I create the library in separate project and then have a small console application(or nunit test library) so i can run through the code and benefit from the debugging features of visual studio. There are a few areas where this does not work, for example the instantiation of unity prefabs, but i find it works much better for me if i reduce the amount of testing i need to do in the unity editor.

Still coding strong and probably will be for the next few hours so i should have some more screenies tomorrow.

Have been working hard today, perhaps some time for some portal 2.
Oh yeah portal 2 is awesome.

Screenshot:

Not much going on here just a simple rendering of a map, however there is quite a lot going on in the background.
I created a map system that uses TilePacks to populate map files that are written in xml.

When a map is loaded it is provided with a corresponding TilePack the map file is traversed and each tile has a corresponding TileName attribute.
When a tile is loaded the TileName attribute is matched to the corresponding tile from the pack and cloned, positioned and rendered accordingly.
This will allow me to adjust swap out TilePacks without having to rewrite maps and also quickly write and adjust maps without having to code.
The dimensions of each map are calculated from the amount of tiles in the map file, so i can have maps that are not perfectly square.

As always comments and suggestion are welcome.

## 11 Days - [Day 3] - Entry 1

Didn't really get a chance to properly test out the 2.5 hour sessions yesterday so I'm sticking to that system for the moment see how it pans out on a regular day.

a heady list of things to get done today want to pick up as much of yesterday's slack as possible.

- finish integrating unity game object(for rendering)
- start(and finish) camera system for viewing maps
- ??????
- Profit
- SCREENSHOTS
- set up system control system
- set up system for moving cursor around map and selecting tiles(a la FF Tactics)
- create programmer art models and import them into game
- have simple character system to house programmer art.

As you can see there's a lot here and going by my previous two days that's intense optimism, but I'm going to smash through the work today and get things done.

As promised here is a high level layout of the sections of my project (with corresponding days of estimated completion.

- Map System - 2 days
-[color="#0000FF"] Structures and classes - 1/2 day
- Samples and Test Maps = 1/2 day
- Tile modeling and integration to unity 1/2 day[/color]

- Rendering/Camera - 1 day
[color="#0000FF"]- Camera 1/2 day
- Rendering Pipeline(such as it is in a fully formed engine) 1/2 day[/color]

- Character/NPC - 2 days
[color="#0000FF"]- Character Classes - 1/2 Day[/color]

- Skill/Attack - 2 days

That's a total of 8 days with 3 for slack and polish and it is entirely possible that all of this will change in content and estimation.

There were a few things that came up in a comment on a previous post and i would like to add some context to this series of posts in the hope that i can clear a few issues with my articulation.

Normally i work freeform, that is i pretty much develop when i feel like it, sleep when I'm tired and then develop some more.
As i enjoy programming a great deal i find that i get lots done this way, this is contrary to the structured time periods i am trying in these 11 days.
I am trying a few new types of working to see if there is anything i like about them and/or can incorporate into my current working methodology.

As it's an entirely new way of working for me (in my personal projects at least) there is a certain elevation in frustration for me.
None of this is directed at my partner who is in no way responsible for my frustrations as part of my project.
i only mentioned her to add context to the fact that things get in the way of development on a daily basis, it's not that i bear any grudge it was just to illustrate that there is more to life that programming and some that in my pursuit of structured nirvana i found that life is the main obstacle.

So far structured sessions are not really a good fit for my working style(or indeed the rest of my life) but I'm going to stick with them for a while more see if anything improves.

That being said, as a hobbyist my freeform method of working is suitable and indeed efficient, however in a setting where this was my main job i'm not entirely convinced that freeform would work within the boundaries of external and internal deadlines.

## 11 Days - [Day 2] - End

Today was a disaster from a project point of view, only got 4 hours of work done.
I did finish the serialization and structure of the tile/map system but that was about it, I'm going to try and claw back some progress today.
i learnt that no matter how hard i try i cannot concentrate while my partner is interrupting me every ten minutes, all trying does is frustrate me and make it harder to concentrate.

So, I've decided I'm going to fit my project work in around the times when she is not here or asleep.
Sounds drastic when i read it back but i cannot stress enough how much energy it saps trying to work with someone hovering.

This is mostly due to the fact my computer is in the front room(it's a massive open plan area).
one thing is for certain, if i ever do this professionally i need an office or at the very least a separate room with a lock.

Progress wise I'm almost through the map/rendering system and the camera system is still to be done.
No screenies unfortunately but as soon as i have I'll post it.

I need to figure out why today was such a write off even though i had at least 1.5 times the workable time than i did yesterday.

Stressful day today and i can't even pinpoint why.

## 11 Days - [Day 2] - Entry 1

It's nearly 3 PM here and I'm only just sitting down to work.
There are however benefits to this approach,

- I have got all of my daily non-work chores done
- got all of my small workstation niggles fixed

So in theory i should be able to work with my 2.5 hour sections right through to 12 am (overrunning a bit)
Personally i think this is optimistic but we'll see how it goes

As i said previously, I'm using 2.5 hour sections and I'll be taking 15 minute breaks in between.
Rather than have a set time table I'm going to have set tasks that i think can be done in one of these sessions and then i can pick whichever one suits my fancy at the time.

- Complete map/tile structure(including load from and save to XML)
- Integrate unity gameobjects into map system and have first map rendering in game loop
- Sort camera system for viewing maps.

Today's sessions

- 4 * 2.5 hour sessions separated by 15 min breaks

As you can see there are only 3 tasks here and i plan on having 4 sessions today. The extra session is for contingency as I've never once finished anything within my original estimations and i doubt i will start today.
Hopefully tomorrow morning i will be able to post some hideous programmer art screenshots of my first map.
Tomorrow morning I'll go over the plan for the rest of the 9 days as a whole and how everything should fit in.

Anyone have any suggestions or comments feel free to post and I'll do my best to answer

## 11 Days - [Day 1] - End

Well, things did not go as planned.

A quick overview of my day,

- 2 hours' work

- 20 min break

- 1 hour work

- 1 hour lunch

- 30 minutes to be guilted into going to a pet store 30 miles away by my partner

- 5 hours stopping in every shop to and from said pet store

- having said that i did sit outside a couple of them and got 40 mins of work done in my emergency work notepad.

- 1 hour unpacking shopping i didn't want to do in the first place

- 2 hours winding down from stressful shopping

- 1 hours' work

- 10 min break

- 2 hours' work

Totals:

[ 7 hours' work ]

[ 30 min designated breaks ]

[ 5 hours wanting to end it all ]

[ 3 hours avoiding work ]

All in all not a terribly unproductive day, i got most of my design down and worked through a few issues with it.

At first i though that I'd wasted lots of time, but when i note the work I'd done there was actually quite a bit.

Analyzing how i spend my time is an interesting exercise, I've come across a few things i never noticed before such as how large a proportion of work i get done after the first 30 minutes of work. I've heard tell of people being in the zone but never really thought about how it applies to my working. Turns out that i only work about a 15% as well during the first half hour of any session.

Kind of like a warm up.

Another thing i noticed is that once my concentration is broken it's really hard to go straight back into work, i think this is because once I'm bumped out of my zone i feel anything I'm doing afterwards is such an uphill battle it's not worth it.

A few things came out of today, namely that i need to work in blocks of more than an hour to get any serious work done but 4 hours is difficult to maintain.

So I'm going to be working in 2.5 hour sessions to see if this makes it easier, however I'm only counting 2 hours of this as actual work time and allocating 30 minutes per session as warm-up time.

From a design point of view I've been struggling to work at a higher level than normal. as i previously said i usually work with a much generality and flexibility as possible, which is very useful in its own way but does not necessarily lend itself to quick prototyping design. Especially difficult is my own personal need to make everything as agnostic/modularized as possible, i have fighting goals of speed and re-usability and the more complex re-usable design is winning(despite my best efforts to the contrary).

Still got an hour and a half of day left so i may yet get some work done.

Here's to unencumbered hope

Any one got any tips on how to move from a very structured design methodology to a freestyle rapid prototype working philosophy? because to be honest change is hard.

Footnotes:

Q10 editor is amazing for writing these entries, hands down the best text editor I've ever used.

I'm using pivotal tracker to map out some of my programmatic goals but I'm finding it hard to map design ideas to individual tasks as the moment, hopefully this get easier as i move away from design and more into programming.

## 11 Days - [Day 1] - Entry 1

[color=#000000][font=Arial][size=2]Firstly I'm just quickly running over my setup and tasks for the day,[/font][/color]
[font="Arial"][size=2]I plan on doing a fair bit of writing so I'm going to be using Q10 which is an amazing simple text editor that blacks out the screen and emulates typewriter noises(best to swerve the spell [size=2]checking[size=2] version as its bugged)[/font][font="Arial"][/font][font="Arial"][size=2]
[/font][color=#000000][font=Arial][size=2]Makes it much easier to concentrate.[/font][/color][color=#000000][/color][font="Arial"][size=2]
[/font][color=#000000][font=Arial][size=2]I'm going to be using Unity as my prototyping engine of choice, mainly because of c# background and previous experience with unity.[/font][/color]
[color=#000000][font=Arial][size=2]So I've got both of these things sorted, time for some time planning.[/font][/color]
[color=#000000][font=Arial][size=2][/font][/color]
[color=#000000][font=Arial][size=2]I'm gonna try working to an 8 hour day(with 1 hour lunch) in the format 4h - 1h - 4h we'll see how this goes.[/font][/color]
[color=#000000][font=Arial][size=2][/font][/color]
[color=#000000][font=Arial][size=2]I've sat down and realised the rest of my house is in a state of cleanliness that is less than required by the laws of common decency so i will be cleaning while eating my lunch.[/font][/color][font="Arial"][size=2]
[/font][color=#000000][/color][font="Arial"][size=2]First up is design refinement
[/font][color=#000000][font=Arial][size=2][/font][/color]
[color=#000000][font=Arial][size=2]Right....Onward...To Victory[/font][/color]

## 11 Days - [Day 0]

I have a contiguous 11 days off starting from tomorrow (Friday)
During this time i am going to try and develop a working prototype of a game design i have been planning for a while.

As I'm sure many people do, i tend to think that if i didn't have a job i would be able to develop games much quicker. I'd be able to concentrate on a solid 8 hours (or more) of game-dev a day.
Unfortunately i am an accomplished procrastinator and as such i am unconvinced that this would actually happen
so..
I am going to spend the next 11 days as if i was a full time indie game developer (or at least what i imagine it would be like)
Hopefully i will achieve my goal and prove to myself that i can do it (at least for a short amount of time)
I will be journaling my progress, hopefully with screenshots.

First up on my list is a quick overhaul and refinement of the cacophony of notes i have compiled on this game, in summary it's a small TRPG with a simple skill/magic system.
There is a lot more to the final design but this is the subset of features i will be concentrating on during this stint.

I have a clearly defined outcome for this stint of development and that is:
- A small working prototype of a single level
- 3 Different classes of character
- Simple skill system for attacking/defending
- Focusing on completing the demo in the time allocated
- As opposed to making everything with the underlying engine as the focus

Coming from a background as a background systems developer(both applications and games) i tend to design and develop with re-usability and utility in mind, however for this project i am trying to move more towards a "as long as it works" then i can focus on the refinement after the fact(after the 11 days). Not because i believe my previous methods of working aren't good but because i wish to try other ways of working to see if i can find some crossover skills i can use.

As you would imagine there will be at least 11 updates in the next 11 days (perhaps more), if you're interested come back tomorrow for more adventures.

## Work Smarter .. apparently (Part 2) - Work Smarterer

Okay lets go over the setup for mercurial api project creation.

i went with a simple batch file as i'd never done anything substantial using them.

you'll also need Curl (this is what i used to send the get requests)

Here is the code i used

[spoiler]

@ECHO offset /p _folder=FolderName: call ToLower %_folder% >temp.tmpset /p _folder_lower=del temp.tmpecho ------------------------------- >Setup.logecho --- Creating Mercurial Repo --- >>Setup.logecho ------------------------------- >>Setup.logecho. >>Setup.logcurl -X POST -d "name=%_folder%&is_private=true" https://api.bitbucket.org/1.0/repositories/ -u [UserName Here]:[Password Here] -k >>Setup.log echo. >>Setup.logecho ------------------------------ >>Setup.logecho --- Cloning Mercurial Repo --- >>Setup.logPING 1.1.1.1 -n 1 -w 5000 >NULecho ------------------------------ >>Setup.logecho.echo ------------------------------ >>Setup.logecho --- Cloning Mercurial Repo --- >>Setup.logecho. >>Setup.loghg clone http://[UserName Here]:[Password Here]@bitbucket.org/[UserName Here]/%_folder_lower% %_folder% >>Setup.logecho. >>Setup.logecho ------------------------------ >>Setup.logecho ---------------------------------- >>Setup.logecho --- Creating Local Directories --- >>Setup.logecho ---------------------------------- >>Setup.logecho. >>Setup.logecho empty > %_folder%\.emptymkdir %_folder%\Designecho %_folder%\Design >>Setup.logecho empty > %_folder%\Design\.emptymkdir %_folder%\Assetsecho %_folder%\Assets >>Setup.logecho empty > %_folder%\Assets\.emptymkdir %_folder%\Deliverablesecho %_folder%\Deliverables >>Setup.logecho empty > %_folder%\Deliverables\.emptymkdir %_folder%\Sourceecho %_folder%\Source >>Setup.logecho empty > %_folder%\Source\.emptymkdir %_folder%\TestFolderecho %_folder%\TestFolder >>Setup.logecho empty > %_folder%\TestFolder\.emptymkdir %_folder%\Marktingecho %_folder%\Marketing >>Setup.logecho empty > %_folder%\Marekting\.emptyecho. >>Setup.logecho ---------------------------------- >>Setup.logecho --- Adding Files to Repository --- >>Setup.log echo ---------------------------------- >>Setup.logecho. >>Setup.logcd %_folder%hg add >>./Setup.loghg commit -m "Project Setup" >>./Setup.loghg push >>./Setup.logcd ..echo. >>Setup.logecho ---------- Done ------------- >>Setup.logmove Setup.log %_folder%

[/spoiler]

It takes a single argument which is a folder/project name

Most of what it does is pretty standard but i'll go over some of the more interesting parts.

set /p _folder=FolderName: call ToLower %_folder% >temp.tmpset /p _folder_lower=del temp.tmp

This is neede because the project names in butbucket have some issues with capitalised names and was the best method i coudl find for lowercasing a string.

all it does is uses ToLower and saves it out, then reads it in to a variable called _folder_lower

I had some trouble with getting the result of ToLower to save directly to a variable which is why i used this method, feel free to swap with something less ugly.

curl -X POST -d "name=%_folder%&is_private=true" https://api.bitbucket.org/1.0/repositories/ -u [UserName Here]:[Password Here] -k >>Setup.log

This creates the project in bitbucket, i won't go into detail about the curls syntax as its pretty well documented however the properties i am passing are:

name=[FolderName]

is_private=true

As i said previously, bitbucket allow private repositories which is what the is_private variable is for.

PING 1.1.1.1 -n 1 -w 5000 >NUL

I found this to be almost always needed, it gives some space between the creation of the project and the first cloning of the repository

mkdir %_folder%\Designecho empty > %_folder%\Design\.empty

This is a mercurial requirement, it only stores files(as opposed to folders) so to have the folders in the repository structure you need to add a file to them.

I chose a .empty file

you can remove these once you add someting else to the folder.

After this i add the newly created .empty files, commit to the local repository and push to the bitbucket repo.

Job done.

It is very ugly and could probably be much prettier/more efficient, but it does the job so i leave it alone.

also the directory structure is my own personal preference, there is no reason you cannot substitute your own folder structure(provided you add.empty files to each folder)

## Work Smarter .. apparently (Part 1)

Well after a lengthy break from anything game related I've finally got some free time to start doing something fun.

First up i am setting up my workspace for new projects and mildly efficient dev work.

A disclaimer, most of my set up is for my own personal amusement, it is not necessarily the most efficient or elegant way of doing things.

(in fact a lot of it is overkill for the size of the projects I'm working on but getting it all working is fun nonetheless)

I have a short attention span unless i'm really into something, thus i usually work on 3 or 4 smaller projects at the same time.

I also work in lots of different languages so i generally have all IDE's and tools i need to use any given language installed and ready to use.

Right, first up i have a small atom based server i use for project storage, backup, CI etc ; this is where all the most of the server based stuff goes.

I work on a windows based system, so standard dev setup dictates visual studio. I also have Eclipse + ADT(android Dev) + Aptana Studio(python mostly) and Unity.

Additionally on my local setup i also have

• Toggl
• Timekeeping app so i can better track what I'm doing(or pretending to do)
• NUnit
• Unit testing for .net
• Nant
• for building a better executable
• Skype
• Not even sure why this is here its not like i talk to anyone on a regular basis
• Spotify
• #1 Essential install after visual studio
• TortoiseHG(and mercurial)
• Because mercurial is just plain awesome

Once my local machine is done i like to get some decent off site code storage, in my case I'm using mercurial and my go-to hosting is bitbucket(although i hear Google code now support mercurial as well).

Bitbucket allows unlimited private projects(last time i checked) and also comes with a wiki and issue tracker per project. There are various other kinds of goodness to be found as well so go check it out.

My favourite part of mercurial is the API that allows you to create projects using get requests, this is nice because i can now create a batch script(or command line app) that allows me to specify a project name

and auto create all the folders and subfolders and automatically push to the server.

(part 2 to follow)

[Edit: Fixed Layout]

[Windows live writer is apparently not a fan of posting things in whatever format these journals likes - any recommendations?]