Wednesday, March 30, 2011

Err

It's Tuesday (technically Wednesday) and I don't really have anything to say. I worked on the tilesets some more and I made plans to switch between the current 32x32 snap grid and a 16x16 one. This to accomodate some new tiles I've been making.

Until next week then.

Tuesday, March 22, 2011

Content and Design

The past week has seen an increase in productivity.

I've decided to work on some more practical things since past Tuesday. I've finally finished the switch and door mechanics. You can now trigger a door by flipping a switch anywhere in the level. I've also made an addition to the Editor that also highlights the targeted object if you select a switch that has a target.

I also found that making the door a 'Static Actor' type wasn't a great decision, because of how I've decided to handle Static Actors. SA's are only handled when the player collides with them, or if another object directly triggers them. Because of this, they cannot transition from one state to another smoothly, unless I make a substate out of every single step, which is stupid. So I've decided to make doors into 'Dynamic Actors' (which get queried every game 'step') and keep the existing functionality, but call it an "Obstacle". Before next week I'll also allow the user to define the appearance of this Obstacle to any world tile so that it's in line with this.

A few times I considered making fundamental changes to the Editor (it needs it) but I haven't began working on that, code wise, for now. I've chosen to approach this differently. First I want to design how the program will look. I'll make sketches of every state of the program, and all of it's submenus. This way I'll have a definitive final design for the Editor itself. Then I'll start designing how I want the program flow to go, maybe write specific behavior in the form of pseudo code. After all that, design in hand, I'll start rewriting the Editor from the ground up.

I've figured that going in too hastily will cripple my ability to have the Editor 'keep up' with the rest of the game until it's been completely rewritten. This will probably take it's toll, motivationally, on my progress with the rest of the game as I will have to go back to using a Text editor to add new features to a level for proper testing. I don't want to run the risk of this taking even longer, so I figured that designing the entire thing before building it would be smart in this particular case.

I gotta watch myself to not go overboard with how 'neat' it'll be, or I risk casting this job into the depths of oblivion, like I've done with earlier projects.

As a final note, I redid the logo and title screen for CubeWars, of which I'll upload a screenshot later. It now draws a random level that passes slowly in the background. It's really nifty.

Edit: Here it is!


See you next week!

Wednesday, March 16, 2011

The "Meh" Principle

So the past 2 weeks haven't been very productive code-wise. I've written very little actual code and most of the things I did were bug fixes to behaviour that was already in place. The 2 things that are currently on my todo list are "Implementing Doors w/ switches" and "Rewrite graphical interface". The former is a lot more practical so we're going to skip it for today's exercise and move on to felon #2.

Currently I don't feel much for the task of (partially) rewriting my graphical interface implementation. It takes a lot of time, it doesn't yield very tangible results (not that anyone but me will see) and it's also a bit more taxing cerebrally. Where most of the things I work on for CubeWars are things that simply need to be written (because the implementation is straightforward) it seems that topics that require a lot of forethought and planning are less interesting some how. I mean, don't get me wrong, I love problem solving. I love it when a good design allows for some great code and I love to go through that process, but because it's results are not highly visible, it's not as exciting to work on.

This is, of course, not anything really new. I knew that this would be the hardest part, which is why this project's process is aimed at short-term results with the aim to keep my motivation up. So I'll be thinking about how to circumvent this so it becomes more manageable. I'll keep coming back to my codebase, even for silly things, to keep it on the brain, and hopefully I'll come up with a brilliant solution for this problem in due time.

Also, as a sidenote, I'll be updating on Tuesdays from now on, because I have a thing on Monday.

That's right, I have a thing.

Things are cool.

See you next week!