Abandoning Project 2

So, I’ve been giving it a bit of thought yesterday and today, and I’m thinking two things at the moment.

   Firstly, even though I’m rather enjoying the dev challenges and the complete control that programming with C++ brings, I’m starting to find I’m wasting more and more time focusing on things that I don’t want to be.  In the past couple of days I’ve spent time studying design patterns and the source code of other games to try and figure out how I should be coding my own stuff.  As the end result, I’m not focusing on the fact that at the end of all this, I want to focus on design, and not development.
   Having development skills and understanding the way games can be implemented is important, and even more so if I want to create my own project from scratch.  That being said, it is currently taking too much away from the time I want to allocate to designing – my target area in the Games Industry.  And so, being fed up with Abstract Factories, draw order, object lifetime management, manager classes and annoying angle calculation implementations, I’m going to start a new project in which I can focus more on design, using a tool-set and with an end goal that facilitates this.

   Secondly, as some of you already know, stuff has been pretty heavy in life at the moment, and as a result I’m having a bit of a rough time concentrating on programming.  As such, I’m wondering if a holiday of sorts at the moment is in order.  Today I’ll consider what I’m tackling for the next project, and look at how we go forward from here.

Final Build

* Finally with a little bit of interactivity. Left-click places the monkeys on the field.  Other than that though, nothing special.

Working Weekends

Today was relatively productive.  Not really talkative lately, sorry about that!
Probably doesn’t help I should’ve been in the shower 15 minutes ago…
Nevertheless, enjoy!

Latest Stable Build

Yep, got enough work down to upgrade to 0.1!

12 Hours Late

So yesterday was a really shit day.

Last Build

Okay, so normally I don’t post debug builds, mostly because they’re a little annoying, but it’s a little less boring than the release build – Just try pressing [F1] for a bit of prettiness.

Project 2: A Long First Day

So today started out a little bit unproductive, as I squandered a couple of hours trying to decide what to tackle as the next project.

Happy to say though, that after considering what I want out of the project the decision has been made, and at the end of the day I’ve got a good 10 and a half hours behind me.  Such is the life when one of my “success criteria” is new working product at the end of every day.

As for the decisions?  Playing it a little safe.  I’m getting relatively comfortable with ClanLib and C++, so I’m sticking with them, (even though I spent a good 15 minutes trying to work out why I was getting a malloc error when I called the basic window constructor…) and thus, by default, Visual Studio and Mercurial.  I’m not aiming to push new technologies for this one, just organisational skills really.
I was considering warming up UDK and nFringe again, but I think that the problems there are such a choice eliminates the need to build an editor, it’s massively overkill for such a short small project, (see: totally prone to scope-creep,) and I already know that I like things to be pretty – taking a step into 3D would multiply my resource searching and visual tuning by 5, minimum.

So, it’s not much but at the end of the day I’ve retuned the basic stuff from the Sirtet framework, (and was relatively surprised at how transportable it is considering I wasn’t coding very modularly…) fiddled around with a relatively new style of class, and found a few sprites that make me smile!

Tomorrow I’ll plan out the end goals / targets, and maybe get a better idea of how far this project will come.  Hopefully your at least a little bit excited 😉

End Of The Day

So I’m not telling you which of the four game-styles I’ve gone with yet, but there’s a few hints around.  Unfortunately for you, I kinda like being cryptic sometimes!

A New Project – What do you want?

So, I’ve been doing a little bit of fluffing around the past two days, looking at what exactly I want to tackle as the next project.

Design

In terms of the design I’m looking at either of a Tower Defence, a little strategy game, an RPG or a Trading Card Game.  As of yet, I’m not a fountain of ideas, but I know they’ll come.  I have a few ideas for each of them though.
Feel free to vote in the comments!

Timeframe

At the moment I’m a little unsure about the timeframe, but it’ll most likely be a two-week project with around 6 person days when I look at it realistically.  Unfortunately the lack of response from the German University hasn’t helped at all.
Last day (as it currently stands) will be 16th of March – Hey, hopefully it’ll be a nice birthday present for my brother! 🙂

Goals

My targets are as follows;

  • Implement minimum of one user-noticeable feature by the end of every working day
  • Setting targets at the start of every day for the day ahead, to avoid scope creep and give myself short-term goals
  • Monitor time-planning and review achieved / attempted vs. planned
  • Minor: Develop some form of editor (something I haven’t even considered so far)

Sirtet: Last Version

Last Stable Result

After a little bit of mucking around this morning, here’s the final product – [ Sirtet 0.1.2 ]

You can’t lose, which in itself is a memory problem, so don’t go trying to play it for hours on end!
Also, as you’ll probably notice, the left button functions a little differently to the right button… Have fun with that one!
Highlight of the thing, is that you can alter the gravity in the settings.  Unfortunately that’s the only highlight 🙂

The Future:  I might continue work on this someday, but at the moment I happy to let it lie.  I was originally planning an Android app next, but I’m currently considering prototyping something in Python.  Guess you’ll find out later!

Sirtet: Post-Mortem

So, that went interestingly…   I meant to get this written up a weekend ago, as I promised, but unfortunately planning and organisation fell through.

H4 First Feeling:
Mostly I learned a butt-load about scoping and organisation, which in all honesty, was what I was aiming for.  I would like to have a beautiful polished game to offer, but I don’t think that was a realistic goal… Mostly because it was over-scoped!

Developing for today:

A lot of what went wrong, was that I coded for what was to come.  While I am actively concentrating on trying to code minimums and then alter as needed, there is still so much modularity within the code structure that is a) superfluous because I never used it, and b) “extra” functionality.  While I know that these “extra” functionalities can make the difference between a good game and a great game, if I don’t have a game to offer, then it’s the difference between good nothing and great nothing – multiplying zero by one million is still zero.

Learning ClanLib and C++:

It was a good first project for really getting going in ClanLib and C++.  I’m pretty sure that the next C++ project I get into will get off the ground a bit quicker, as I really feel that my understanding of the pros and cons has increased, my ability to utilise the language to achieve my goals has grown, and as I mentioned earlier, I also know now why people don’t use C++… ClanLib is also good but is really still a relatively young framework.  One downside is that it is completely 2D: the rendering order for objects must be controlled from my side of the code as the concepts of Z-Depth don’t exist.  A con, that is a little annoying.

Version Control Softwares:

Oh man.  I am never working without this stuff again.  The amount of times comparing revisions saved my arse, or the ability to test out extremities with the security that undoing everything is just one click away is fantastic.  I am really glad that I took on learning a little about the stuff for this project, because I can’t wait to keep using it in future.  With a little more understanding behind me now, I’m also really glad that I went with Mercurial.  One of the greatest features is the ability to version things locally.  I’m under the impression that SVN, for example, doesn’t offer such functionality.  Working in the train, where I didn’t have the internet available, is a prime example of the benefit of the local versioning.

Scoping:

A benefit of using a low-level language such as C++ helped my a little with scoping.  It still needs work mind you, and I really need to concentrate on the goals of a project so that I don’t get too sidetracked and develop unnecessary rubbish.  Sometime developing unnecessary rubbish is fun, but it is, as the name suggests, rarely an important or worthwhile use of my time.

Schedule:

One thing I really noticed is that as many people suggest, attempting to brute-force a product with man-hours rarely works.  I really need to make sure that I get moving in the breaks I schedule – cleaning and cooking are things that I don’t really mind doing, so it shouldn’t be too hard – and stay away from the screen as much as possible.  That being said, I’m pretty impressed with how hard I can be on myself.  I really feel like taking on self-employment as a full-time job could work for me… in the sense of organisation.  Whether or not I have the entrepreneurial spirit that a friend of mine has so recently made me envious of, is something I’ll find out a little further down the road I guess.

Organising:

One thing that I never thought I would need was a calendar.  Man, some people (see: me) are idiots!  Blocking out time with GCal was one of the greatest things I tried out.  It really helps to not only know when to work, but when not to work, and as a method of showing myself how little time I actually have.  It failed towards the end and I am certain that it was a major factor in the reduced productivity.  As I mentioned above, throwing man-hours at a problem doesn’t help if they aren’t organised.  Towards the end, when feeling like I hadn’t done enough work, I did just that, and lost focus, and wasted heaps of time.  Lesson learned!

Final Words:

I was hoping that the final product would resemble a infinitely configurable version of Tetris, however what I have has fallen far short of that.  That being said, the goal of project had little to do with the final product – it was a learning experience.  I’m not trying to make a sell-able game, or even a portfolio piece, it was an exercise in learning about self-organisation, taking my biggest bite of C++ so far, looking at a couple of new tools for games dev, and most importantly, a “test of the waters” to see if I could one day do this as a full-time thing.  So naturally, with no predefined fail-conditions, I feel that the project was a success! 😉

A Messed Up Head

Today was really a weird one.  I haven’t been sleeping well, and couldn’t shake the feeling of imminent stress.  I’m pretty sure that it has something to do with the fact that I still haven’t heard anything from the Uni.  Not really a great feeling when the semester officially starts in exactly one week!

Nevertheless, it was a learning day.  I spent almost 6 hours today on one task.  A logger.  For those of you that code, you know that’s way too long.  As such, there’s only two minor changes to the version for today.  A log.txt for when “shit hits the fan” and (finally) the ability to change the drop speed for the blocks.  That’s actually something I’m happy about, even if it’s not a major development, it’s a step in the right direction.  With only two and a half more working days for this project, I’m feeling a little under the pump, and really wanted it prettier…

I think it’s time to stop fiddling about with the fancies, and get the basics done.  Definitely will be doing a bit of scoping and organising tomorrow!

Until tomorrow night, feel free to fiddle with this – [ Sirtet 0.1.1 ]
   * Oh, actually something else nice to note, is that there’s no memory leaks anymore!  You can leave it on for as long as you want now, and there shouldn’t be a problem… Except that you can’t lose… and the blocks keep coming… I suppose that could be a memory problem, but it’s not a leak in itself!

A Second Day in the Train

Things are moving well forward… even if it’s a lot slower than I’d like.  It’s rather frustrating to learn I can’t make a whole game in just two days! 🙂
Had another day in the train, and had planned about a 4 hour work-day.  It has turned into an 8.5…

Today’s Lessons

  • Must be a little bit more careful when reverting changes in Tortoise… today I accidentally rolled back a half hour of work in trying to resurrect a single file.  Must say though, I’m very glad it happened now and not at a critical point in time, with critical files, with critical changes 🙂  For half hours worth of work, it’s a good mistake to make at this point in time.
  • Starting to understand why people use languages other than C++…  Before today I’ve be strongly of the opinion that C++ is the be-all and end-all of programming languages.  Today, however, I had to tackle some virtual and inheritance problems that don’t really exist in other languages.  It was a long-hard lesson about why sometimes, letting a language such as C# or Python automagically handle is just that much easier.  Furthermore, in an attempt to create a custom container for a custom class, I also discovered how useful languages that automagically handle memory, and pointers to objects can be.
  • On the plus side, the custom container situation had one major benefit.  It taught me to stop being a smart-arse.  Most of the time when coding, I’m trying to imagine every permutation and situation in which a class could be used.  Today I worked out that not only is it a waste of time and resources, but I know every permutation and situation in which this class I’ve made will be used.  There’s one situation.  This game I’m making right-now.  Why am I spending hours fiddling around with entry removal and memory management when I only need to add items to the container?  Scoping and time-management are two of my weakest skills, and this experience with C++ has reminded me that sometimes, it’s because I’m trying to be too smart.

Last Stable Result

Anyhow.  I know you want something to fiddle with.  So here’s [ Sirtet 0.1 ]
   *Still going to eat your memory if you play it for a few hours straight.  Other than that, it’s relatively harmless.

A Day in the Train

   So today wasn’t spent in front of the desk, it was instead spent on the 6 hour train to Berlin!
   Was an interesting experience, but more due to the fact that it was the first day I’ve spent flat-out devving, not due to the environment.  I found that I’m lacking a little focus at the moment, as I was flitting between projects, unable to decide what to work on.
   I took a look at some old Uni spike work, and found that it really is way too difficult to make a console app in ClanLib… (I’ll be on the forums on Monday about that!) and have ended up getting back into the Tetris clone I’d started a whiles ago.  It’s kind of weird: I tend always look down on my past self – I tend to think of him as an idiot.  To that effect, I don’t like opening up old code because design mistakes jump right out at me, and I spend more time “making something work better” than actually “just making it work”.
   I must say though, I’m really loving TortoiseHG.  The ability to take a step back when I’ve gotten too far off track helps me keep focused: I pruned 2 code branches today, and I can see it happening again in the future.

Lesson Learned

   Like always, I really need to plan out what I’m going to do, and not let myself deviate from the plan.  I get lost, distracted and feel useless, when I’m lacking clear direction.  The stuff I’ve learned at SAP is ridiculously relevant, and ridiculously useful right now 😀

Last Stable Result

   Please enjoy the first fruit of my labor – [ Sirtet 0.0.1 ] 
   *As a warning, I know that it doesn’t work properly, and that it’ll eat up all your memory if you leave it on for a few hours without closing it – but it’s more than I had yesterday!
   * The link didn’t work properly, and so I’ve simply removed it as the file itself is obsolete.  I’m sure you’ll, want to download a newer version anyways 🙂