Here’s a tip for all you young folks out there just starting your collegiate education in the wonderful field of programming. Go out right now and get the SCJP6 study guide, and get your certification during your school years, and not afterwards. I mean it.
I’m probably going to have to switch gears a little bit with my own plan and just sit in on the course this time around until I can focus on the book and the exam, probably at the beginning of 2011. There’re a lot of projects planned for 2011, in fact, but that’s the really big one as far as I can see.
As if I didn’t have enough projects, I decided to try my hand at working with XCode and Mac development in general again. The good news is that, by and large, Core Data makes file manipulation and data storage much easier.
The bad news is that it’s still all in Objective-C and, if anything, the people who developed that abomination of a language have only managed to become more cynical and sadistic in the intervening year or so.
It’s for my own good… It’s knowledge and self-training… it’s a new language and resume fodder……..
…it’s time to go shoot some zombies until I feel better.
Just a little bit of an update tonight regarding the state of the Xbox Indie Games I was working on over 2009. Obviously, I lost a lot of momentum after losing the services of my artist over the summer. So, even though I had two mostly-working engines going, I had no games to produce with them. And now that I’m looking to have a lot of free time in the very near future, it turns out that the Windows machine I was using as my main development box had a power source failure (I think) and refuses to boot up. Meaning, quite simply, that all my source code is completely inaccessible. I have an old backup of the XVINE engine, but I primarily want to get something together using the action-oriented engine.
It’s not all bad news. I set up dual-boot on Mahoro a few months back so I could play my Steam games easily, but as it turns out I think I’ll be using her for development from here on out anyway. The source code for the old engines isn’t lost forever (I don’t think it is, anyway); I just need to get a hard drive enclosure to put the old machine’s drives in and retrieve it from there. And even though things are going to be a little rough soon, I’ll be paying for another year of the Creator’s Club here very shortly so that I can continue to develop and deploy to the 360. The action engine, from what I recall, was pretty adaptable, so putting together something simple and interesting is probably going to be fairly easy. The hardest part, as before, will be the art and music/sounds. We’ll see.
Catch you folks later.
This year has, to be polite about it, not been very good in terms of projects. I haven’t completed very many games, I’ve done little in the way of writing, and my game development has all but stalled out completely. Still, I have to take into account the things that I have done, as well as the stuff I’ve done in years past being, in all honesty, extraordinary.
Even taking that into account, I feel like I’ve wasted the better part of the year. I can’t say on what, because I don’t know. Nothing has proceeded, nothing has made it past even the most rudimentary stages. All of the work I feel most confident about is prep work for my big end-of-year rush of writing and other stuff– but, it should be stressed that what has been done is vitally important, and I feel like I’m well prepared for the November to come. And yet November is still a month off.
What has always been my tradition for the cooling days in October has been a gaming rush, to complete one game from start to finish in those thirty days. I’ve done it two years running, with a Pokemon and a Zelda game, accordingly. With my last bout of laziness sucking up my time and ambition, though, I decided to call it off for this year so I could focus on game development and projects. Now, I still might be able to do some development in the coming month, but I still need to find an artist (the last contact I had kinda fell through).
I’d love to be able to do development this year, but the wind was perfect today… Something in the wind this time of year makes me want to curl up with a good game and play it through. It never fails, really. Once the temperatures drop, so do my defenses and excuses.
I suppose I can wait, then, to do game work…. I suppose, really, that I have to.
I promise, these aren’t too abysmal. In fact, this first bit is sheer concentrated awesome.
(Okay, so the Halo “aria” could use some work.)
The second thing, though, is a bit more self-serving. Most of you folks know I’m on a big productivity kick, and part of that means getting as much information available as passively as possible (read: lazily). To this end, I’ve set up another panel on my GeekTool desktop to show me which podcasts in my regular rotation have not yet been listened to. You can see the general effect here. You also get a glimpse at my incredibly boring schedule.
Anyway, that’s really it– tomorrow I’m going to do more coding work, or possibly the D&D campaign review I keep meaning to do. Oh, and as you can see the Twitter feed is back online on the main site page. Catch you all later.
In a discussion released recently regarding the Wii version of Punch-Out, Shigeru Miyamoto said:
Now, when young game designers make games and they are not fun, they add a lot of new material to try and make it fun. Even though they should make the game more fun using what they have right in front of them fully, they bring in new stuff.
In a nutshell, he’s pretty much summed up my main source of worry about the XNA projects. I could care less about how well the game sells, honestly (though it would be nice if the game does well enough to cover costs). What I’m worried about most is if the people who play it are having fun.
Right now, I’m in the engine-building phase; I’m designing, more or less, the tools that I will use to create a game. At any point during that later phase– the game design phase– I still have the ability to go back and say, “I need this,” and then go and implement it. This gives me a lot of freedom, almost too much freedom. This is because the more times I go back to the engine and tack on more stuff, the more complicated it gets; and the more complicated an engine is, the greater the chance that there will be bugs based on a flawed or incompatible implementation of the stuff tacked on.
When I was building XVINE, I had a dozen or so thoughts flitting through my head at any given time as to what tools I would need, what objects I needed to implement, and what situations I would encounter. When it came time to finally put it all together, though, I found that many of the things I thought were absolutely necessary were in fact either redundant or useless, because I could do it with simpler tools used more intelligently. Granted, there were situations where a single tool was only used once, but that’s because what it did could not be replicated by another tool combination.
In developing this engine, I’m running into that too. The entirety of this week’s coding was cleaning up the frenzied, hurried, slap-dash experimental implementations from last week’s initial “can I do this?” phase. It was a hassle, yes. But now the engine is designed in a cleaner, more effective manner. Similar objects now have common interfaces; inheritance and abstract classes are used to make sure things get done properly; and the engine has hooks for further optimization should it be needed. More to the point, with the new structuring of the engine, expandability is made that much easier– I’ve been able to easily start adding an “environmental effects” layer to each map layer in order to allow stuff like trap tiles or exits and so forth. (That’s going to be a harder part of the engine design, I think.)
What this boils down to is that once I’ve created the engine, I have to then find a way to make it fun. My original idea– a visual novel– isn’t not fun. At least, I don’t think it’s un-fun. However, a significant portion of the target audience– that is, Xbox 360 players– probably will find it to be un-fun. Yeah, this was pointed out to me before, but I resisted because I felt that the scrolling, tile-based engine setup was going to be too much work to properly implement. It’s not as hard as I thought, but it is a lot of work. The payoff is that I’ll have an engine which could be used to create a game that more people find fun– an engine which more or less works like any old NES game’s engine would, just in HD.
So what kind of game should I make? Satoru Iwata, in that same interview, made this remark on the subject:
It’s hard to know what to do when someone says to do whatever you want.
The tool that I have now is raw and unpolished, but its possibilities are limitless. However, in order to make it the best game that I could possibly make, I first have to know what kind of game I want to make, so that I can steer the engine in that direction. Now, there are some constraints. It’s a 2-D game, it’s top-down (so far), and I only have about 150MB of total space for code and resources. Really, those constraints are pretty minor. So, instead, I must fall back to the old adage: “Write what you know.”
I know old-school RPGs, and I know action RPGs along the lines of Zelda or the Mana series. I also know older action/arcade games, like The Guardian Legend and Pac Man. I really wish there were more games like those available these days. With that in mind, mimicking one of those would be pretty good for getting started, but there’s issues of complexity in each one: the original Legend of Zelda, as “simple” as it is, is far more complex than Pac Man. Heck, Pac Man itself is no slouch in the complexity department! Still, I have to take each project as it comes, and make a decision very soon on what project I want to work with first. My first project, then, using this new engine will be somewhat pedestrian– a Pac Man clone, just as a proof of concept. Once I’ve got that running and playable (it certainly isn’t going to be released) I can start work on the next project, which… I think I’ll keep quiet on for now. One step at a time.
Overall, though, I have to keep in mind the advice mentioned above. Less is usually more. Fun must come before whiz-bangery, and it’s almost certainly possible in this day and age to have a fun game in extremely tight constraints. Tetris is no less fun today than it was on an extremely high-latency monochrome LCD screen. And Final Fantasy IV told a compelling story in just one megabyte of space. I have 720p resolution, millions of colors, a powerful processor, tons of RAM, and 150 megabytes of storage. I envy the old days.
A couple of things worth discussing today, folks, all of them rather brief. The first is that I think my tweaking of my main habits is just about finished. I spent a little bit of time setting up GeekTool to close Firefox for me if the computer’s been idle for longer than ten minutes. I then went ahead and set THAT up to disable the monitoring as needed. The net effect is that if my attention wanders, I don’t have a zillion tabs open to wade through and re-distract me once I get done. Conversely, if I’m using Mahoro to look up code while I do coding on the Windows machine, then I don’t have to worry about wiggling the mouse every so often.
Let’s move on to the new project, then: the second XNA engine. Yesterday I got it set up to sort through sprites and render them in a specific order. Today I went on to create a collision-detection engine that handles layers very elegantly. I did, however, encounter a really interesting bug that I’m going to have to figure out a better solution for, involving two sprites on the same layer having the exact same position. Right now it works on a “last in gets rendered” order, but that’s not gonna work if the sprites have different sizes. On the plus side, though, my idea of setting up each ‘logical’ map layer as a physical tile layer and a ‘pawn’ layer worked splendidly, and I may have figured out a solution to moving sprites between layers as well (but that might need work too). It’s getting there, bit by bit– but given that the system was able to handle 10 layers without a hiccup (that would be along the lines of 1700 sprites at 80 by 80 pixels, filling a 720p screen) it’s doing better than I expected.
Finally, I decided to re-start my XM radio. I have to admit that the service isn’t as bad as I had believed it to be on the day they transitioned to the “XM/Sirius” setup, but there’s still some disappointments. For one thing, I still think that they should have kept the guys doing the election coverage rather than ditching them unceremoniously. For another thing, while it’s close, Area is no replacement for The System. And the audiobook station is almost completely useless now, with most of the shows being rescheduled to oblivion. However, there are some bright spots. One of the more annoying glitches in the system was fixed: now, when the radio powers on, it’s authorized for all of my stations immediately, rather than a two-minute delay (at times) to let me tune into football games. Really, that’s how I justify it: I will be getting new music and such during the week and during the summer, but I wanted to have every football game and every hockey game at my disposal once more.
That’s the plan. I haven’t done any Japanese studying today, but I’ll be doing some later tonight (before bed)… and probably in the morning I’ll do the kana drill again. I’m also going to start up the morning exercise routine as well, but we’ll see how that works out.
Catch you folks later.
As may be inferred from the title, I have yet another project I’m thinking of starting up. Honestly, I wouldn’t mind being able to think of all these things if a) I had more time to work on each one, or b) I could ever just get one of them done before the next idea comes to me. Still, this one doesn’t seem to be all that difficult in terms of what the core is supposed to do; it seems to be a pretty simple Java web service. Writing the clients for it is going to be the seriously difficult part as I’m looking at, at a minimum, three implementations. With a fourth if I get really ambitious.
Unless someone fairly proficient with Windows programming wants to help out, that is. Hint, hint.
I can understand why I would need to re-load software after a system restore. This is a perfectly normal activity, part and parcel with having your machine cleaned out and reset to the zero point. That’s fine with me. What I don’t much care for is when programs that allow you to have multiple profiles don’t carry over common-sense settings between the different profiles– for example, Eclipse… It’s a great tool, don’t get me wrong, but for juggling projects, I’ve always had separate workspaces, and when I have to re-setup dozens of settings that should be standard in the first place– not to mention that I have likely forgotten that those things were not as they should be from the start– I tend to get frustrated, with a capital “I want to take a broadsword to the bloody machine”.
Second to this is, when I try to get someone to help me, they take one look at the trackball and freak out.
So, Laura is at a bit of a good stopping point; I really could be writing the script (which means a lot more planning work to flesh out the different story branches), but I’ve chosen to put my mind to a few more interesting problems in XNA. Specifically, I’m trying to get a tile-based map engine set up so that I can do a more action-oriented game at some point. The emphasis here is on “trying”– my first attempt, this evening, was less than successful. Matter of fact, it was downright bad. However, I think I know what I did wrong, and future efforts should be much more fruitful.
Assuming, of course, that I ever get around to doing it. Meh, no worries, I have lots of anime to distract me, and one day I’ll get back to that engine. Laura is my real priority now, and finding an artist is the next step. This weekend or next, I’ll dig through the cards I got at Tekko to see if anyone will bite for the gig.