Categories
Personal Development

Self-Discipline and the Muse

Gary Preston at Figment Games wrote about The Muse, that inspiration which creates a fury of activity at the start of a project. But what happens when the Muse leaves you? What keeps you going?

Self-discipline. It’s what keeps you going even when you don’t feel like going anymore. It’s what allows you to finish a game when the rest of the world would have gotten bored. It’s the master key to riches when applied toward helping you take control of your own mind, according to Napolean Hill. Successful people do the task that needs doing even when they don’t feel like doing it. They don’t let their feelings control their actions. Being in charge of your actions involves being in charge of your mind, and self-discipline is what helps you to do so.

Either way, there is one problem I’ve encountered more than any other this year. Its just too tempting to check your email every two minutes, read through the development forums to find better ways to code something, or read up on new development techniques. On going research and keeping up with technology is certainly a valid part of development, but doing too much can do more harm than good, especially when it eats into the time you’ve set aside for programming.

Only every two minutes?!? Gary is amazingly productive compared to me. B-)

Categories
Marketing/Business

Forming an LLC in Illinois

I had set a deadline for myself to form an LLC by December 17th, 2005. It’s now the 20th, but I’ve finally learned presumably all of the information I needed to know. I didn’t think that starting a business should be something that requires lawyers and accountants, and so I wanted to learn what I needed to do. I figured that the government would be happy to provide such information and make it easy for anyone to know what is legally expected. While the government websites could be helpful for general information, they weren’t helpful in my particular case.

I don’t plan to partner up with anyone or hire employees; I’ll be working for and by myself. Limited Liability Companies were restricted to multiple members, but this past summer a change to the Illinois Limited Liability Act allowed single-member LLCs. A single-member LLC would be perfect for my needs, but it is hard to find information on them. LLCs are still new, and single-member LLCs even more so, and so most articles and government help are still geared towards incorporation. I ended up consulting an accountant to determine the main things I needed to worry about.

Note: I am not a lawyer. I am providing this information in the hope that it can be useful to someone, but it can’t be considered legal advice. Your mileage may vary, and so you should ask a CPA or lawyer about your own circumstances if you are not sure about anything.

To form a single-member LLC in Illinois, you need to file Articles of Organization with the Secretary of State and send along a check for $500. Once I place the filing in the mail, Once the Secretary of State files the paperwork, I have officially formed an LLC. This part I knew, but what I was concerned about was what I was obligated to do afterwards. What forms, taxes, fees, or family members am I required to provide to stay within the law?

According to the IRS, since I’m not hiring anyone or operating my business as a corporation or partnership, I don’t need an Employer ID Number. My CPA still suggested that I get one. It seems pretty easy to apply for one.

He also talked about the lack of a need to apply for an Illinois Business Tax number. I’m going to be reading more about this topic…

If you look at the list of LLC forms on the Illinois Secretary of State’s website, you’ll see one form called Domestic Limited Liability Company Annual Report. Out of all of my research, I found only one reference to the $250 yearly fee, and it didn’t even mention that the fee goes with this report.

It turns out, it does. As I understand it, the state will send me this already filled-out form. I just need to sign it, attach the $250 check, and I’m fine. The report is simple restating that I’m in charge of the company, so there is no need to submit a balance sheet or profit-and-loss statement.

The final thing to worry about: taxes. It turns out that I just need to file my 1040 along with Schedule C, and I’ll cover my Social Security and Medicare tax obligations.

Once again, in summary:

  • File Articles of Organization with Secretary of State along with $500.
  • Request Federal ID Number from IRS.
  • Pay annual fee by submitting $250 with signed annual report.
  • Submit Schedule C with 1040 when I pay my own taxes at the end of the year.

That’s it! It sounds easy…a little too easy. Of course, there is the issue of the federal tax, which is supposed to be pay-as-you-go. When you’re self-employed, you’re required to estimate your income and submit your tax obligations quarterly. David Michael wrote about his simple tax plan, which doesn’t sound too different from what a friend of mine does.

Hopefully this information helps someone. I’m also about to read “Your Limited Liability Company and You: An Operating Manual” by Anthony Mancuso. It was suggested to me by someone on the Association of Shareware Professional‘s newsgroup. If I learn anything new, I’ll try to post it here.

The best part? I feel confident enough to form the company without worrying about a huge backlash from any government agency or law. Now I can jump in and start making mistakes quicker. Faster mistakes means faster learning. B-)

[tags]business, llc[/tags]

Categories
General

Coincidence? Way Too Weird

This past weekend was a bit scary. Every so often, someone would say something that would be related to a topic that is on my mind. The television news made a reference to a study on psychology that directly related to a game design article I had just read. Someone at a Christmas party told me a lot more about health in terms of agriculture than I had known, and it was interesting to me mainly because I was thinking about personal health issues related to agriculture the day before.

I spent the past week looking up as much information as I could on forming an LLC for GBGames. It was starting to frustrate me that there seemed to be an overwhelming amount of legal knowledge required, which was discouraging, and the other day I discover that Steve Pavlina has a new podcast called Kick-start Your Own Business. Today I find that MicroISV has a link to A Guide to Starting Your Business. Discouragement no more.

I’m moving into a new apartment and will have a dedicated room for working on my business. It’s been a struggle to find information, and now things are popping out all over. I think it is happening way too often to be a series of random coincidences. Steve Pavlina says they could be synchronicities and that they can be a trail to follow. If that’s the case, then I am apparently on the right track with my life in general and my business in particular.

Categories
Personal Development

Reiterating the Importance of Lists, or How to Stall Development

Jay Barnson wrote about the importance of lists and mentioned his experience with a lack of productivity that made me think he was watching me at home the night before…what a creep!

I had most of an evening dedicated to working on Oracle’s Eye. The next thing I know, it is 11PM and I haven’t done much to improve the game at all. Maybe I changed some code, but I didn’t really have a good direction or focus. And even after I’ve posted about planning my next steps!

I also noticed that my Next Actions list isn’t strictly a list of next actions. I already knew that it wasn’t perfect, but a number of items have been sticking around for longer than I thought they would. I put a new entry: “Analyze/Update this list” for when I had time to do so.

When I read through the items, I realized that the problem was that many of the items weren’t next actions at all. A lot of them were objectives or goals. I wrote down what results I wanted, but I didn’t write down the actionable steps needed to get there. For example, my entry “Create level loader for Oracle’s Eye” isn’t a next action. It is too vague for me to do anything with, requires me to try to remember what I need to do, and so it is really easy to gloss over it and try to find something else to do. Next action items on a list are supposed to be effortless at reminding me what I need to do. I should not need to question what my actual action is; it’s right there on the page!

I haven’t been happy with only getting an hour to work on the game project during a session. It doesn’t seem right that I can sit down at the computer for two to five hours and only get minutes of actual work completed. By not having specific and clear lists, I’m sabotaging my productivity and making it a lot easier to procrastinate, and as Barnson says, “managing yourself can be a trick”.

As for my list, I think that rather than fixing it so that they are all Next Actions, I should recognize that the list has Projects. I could then create a few Project pages in my notebook (or at least get a good excuse for buying a new notebook for each Project) and list Next Actions under each one. It will force me to write down actual Next Actions, which will make it easier for me to work on my tasks when I do get a chance.

The next time I sit down for project development, I shall be awesomes.

Categories
Games General

Interview with PopCap’s James Gwertzman

Gamasutra published an interview with James Gwetzman, PopCap’s Director of Business Development.

It goes through a few different topics, such as the history of the company and the amount of growth it experienced, but I think the most interesting part was the overview of the development process:

“Our path of development is extremely prototype-heavy,” said Gwertzman. “We’ll make half a dozen prototypes, and pick just one of those to be a hit casual game. And once we develop that one, it’s a very iterative process. It’s a sandbox model. We try different things out, and find out what’s fun. Only when we find out that the core mechanic is fun do we worry about the art, content, and all the other little details.”

“We really obsess over the core game mechanics. In a game like Bejeweled, hardcore developers look at that and might think it’s kind of…it’s very easy to kind of dismiss it, but we literally spent weeks on just the right way for the gems to fall when you make a match. In a game like that, it’s little details like that. How does it feel? Getting those little details right is what we prioritize. So when we’re designing a new game, we’ll spend months and months prototyping core mechanics.”

Casual games are perceived to be simple to create. People still talk about how Tetris could have been made in a day and made someone very rich. They slap their foreheads at missing the opportunity, but I think it is very easy to look back on games like Pac-man and Bejeweled and decide that they were incredibly simple to create.

What’s forgotten is that a game like Pac-man still took months to create the first time. The developers cut features, agonized over details, and tweaked until it was finished. You could implement a clone within a few weeks, but I’m sure that the same team could throw away what they made, start from scratch, and come up with the same game in a much quicker time frame, too.

The idea that it takes a lot of effort to make high-quality casual games might be surprising to a lot of people, but how often does a great game get made accidently?

Categories
Game Development

Oracle’s Eye Development: Gameplay Tweaks, Planning Next Steps

Oracle’s Eye is really shaping up as a game. I’m awfully close to the project, of course, so there could be lots of things wrong with it, but it’s definitely much more playable than when I called it “technically completed” a few weeks ago.

The links from December 9th still reflect the game’s current state, which means I haven’t done too much to update it. I made the Player’s sprite smaller and haven’t been able to walk through walls so far. Some of the small tweaks I’ve made with the code have made drastic changes in the resulting gameplay. For example, I combined two sections of code knowing that it wasn’t exactly what I wanted. I just wanted to get closer to whatever it was I was doing. The result: now instead of just pushing the Ball, you can push against the Walls, and depending on the direction you are facing, the Ball moves. Psychic powers?! Maybe I could make some Walls into switches that create a gravitational pull on the Ball? It might be an interesting gameplay development.

Of course, I haven’t exactly created or updated a detailed design, so how can I know when something is progress or the introduction of a bug? This project is starting to become a bit more concrete, so I think it is appropriate to list specific implementation goals. Since I’ve gotten this far, I really think it would be appropriate to turn it into a commercial quality game. Besides having a game to sell, it would also allow me to have the experience of finishing a game that doesn’t look and feel like a newbie’s first project.

It’s clear that Oracle’s Eye is becoming more like a puzzle game than anything else. The basic premise: maneuver the Ball through the Room to get to the Exit. Maybe that’s all a player needs to know, but what about me? I’m still making it!

  • The Player should not be able to occupy the same space as a Ball. If the Ball hits a Wall, the Player should find that he/she needs to push at the Ball from a direction that isn’t towards the Wall in question. The point is to force the Player to use the level layout to find the best way to move the Ball. Allowing the Player to move the Ball through him/her would break the game since the Player would not need to worry about where certain Walls are.
  • Graphics: the Ball should rotate when it is moving and in a way that implies rolling. As it stands,the Ball rotates in only one direction, and while it might not be too noticeable, it is incorrect. Similarly, the Player should have images from multiple angles and various key frames. The static Player image is fine for placeholder art, but it will need to be replaced by someone that looks alive and breathing. The Ball and the Wall and Floor tiles should also be updated with higher quality art. The graphic style should be cartoonish but not exaggerated.
  • Sound: the game is silent currently. I should work on getting at least one piece of music for the background. The music should be upbeat and fun. There should also be sound effects for the Player when he/she kicks the Ball or hits a Wall. There should also be sound effects for the Ball hitting a Wall or getting to the Exit.
  • Levels: each level will consist of a Room with Floor and Wall tiles, an Exit, and a starting location for the Ball and Player. Rooms should be able to have different dimensions. One Room might be 10×10, another might be 5×15, and another might have varying widths. The purpose is to allow vastly different level designs as well as varying visuals. The maximum limit is related to the screen dimensions and the Tile lengths. The Player should be able to choose levels from a menu, and finishing one level should allow him/her to continue to the next one. I imagine that the game would require the ability to restart a level if the Ball gets stuck in a corner or gets in some other situation that prevents Player progress.

I was about to add that I wanted extra items, like angled banks for the Ball to bounce in new directions, but I already decided to cut out such features. It’s a nice-to-have, and maybe I’ll find that it will be easy to add, but the above listing is what I want to concentrate on. I think that focusing on these things will greatly improve the game, and I can always write down the gameplay elements I come across that don’t fit this design but might be useful elsewhere. I will keep an offline version of what I have here. It should be easy to update as I gain more insight into the project and its needs. I already know that this isn’t nearly detailed enough, but it should be good enough to show you (and me!) what I’ll be working on.

Categories
Games Geek / Technical General

IGF 2006 Finalists Announced

The 2006 Independent Games Festival finalists have been announced. Among the finalists are a few games that run on Gnu/Linux, such as Darwinia, Tribal Trouble, and Professor Fizzwizzle.

I’ve played those three games, if only in demo form, so I know they’re good. I’m also in the middle of reviewing Weird Worlds, another finalist which is also really good.

I decided to check out a few of the other games. For instance, Glow Worm looked like a typical match-3 puzzle game, but it is a finalist for Innovation in Visual Art, so I had to check it out. It definitely deserves to be in the running, and it is a fun game to boot. I also tried Strange Attractors. Well, actually tried isn’t a good word. I got to level 25. I should have gone to sleep, but I couldn’t help it. And that giant head! I would have destroyed it if I hadn’t teleported and got stuck right into those damaging electric beams!

Suffice it to say that the 2006 IGF looks like it is full of quality games.

Categories
Personal Development

Happiness Is a Choice

Jon Jones recently wrote Happiness is a CHOICE, a short post on the idea that happiness isn’t just something that’s “out there” or something you only get after accomplishing something.

A key idea from the article is that being upset about something doesn’t have to affect your mood. It isn’t productive to focus on negative things. It makes it very hard to be motivated or think positively when you have thoughts about your bad day burning mental cycles. They don’t even have to dominate your thoughts; if you think about it at all, it means you aren’t focusing on whatever you should be focusing on.

Some people think that once they accomplish something, then they will be happy. I think you can be happy now, in the moment. Why wait?

Categories
Geek / Technical Linux Game Development

Distributing Binaries: G++, libstdc++, and Static Linking

I’ve been asking certain Gnu/Linux-using friends to test out Oracle’s Eye while I work on it. I’ve already found that I need to specify SDL_image as a requirement because of such testing; however, I don’t want to have to send an 8MB source package that contains mostly useless-for-the-tester code or binary data. Asking someone to get such a huge download and build a project themselves just to check it out or test it is asking too much, I think.

Since they don’t need the source to test it, I can just put together the binary files I need and send them together in a tar.gz or zip file. Or so I thought.

I stumbled upon one of the things that developers face when they are new to Gnu/Linux: shared libraries that prevent distribution of your binary files. When you distribute the source and expect people to build it usually isn’t a problem, but I don’t anticipate all of my end users being proud geeks who wouldn’t mind spending hours getting my game to work again when it was working perfectly fine previously.

I have two Gnu/Linux systems, one which runs Debian Testing, with a 2.6 kernel and GCC 4.0.2, and the other which runs Debian Stable, a 2.4 kernel, and GCC 3.3. I don’t update the latter often because I use it as a backup machine. I don’t want to accidentally introduce incompatibilities that would prevent it from working properly.

When I brought my “release” over to the other machine and tried to run it, I got the following:

./oracleseye: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

Let me just say that searching for solutions to this issue is difficult. You get a lot of results that aren’t relevant. Or I did, anyway. And I knew it had to be possible. Quake 3 Arena works fine, and I’ve upgraded libstdc++ a number of times, so why can’t my own code work so nicely?

So I asked on IRC, but people who leave their clients running all day even if they aren’t there are not too helpful. I searched some more, posted a question gamedev.net, but then found the possible solution immediately after the post.

Linking libstdc++ Statically by Johan Petersson talks about the exact problem I am having and offers a solution that is easy and seems elegant.

Basically, you need to statically link to both libstdc++ AND libgcc. GCC won’t let you do one without the other. And so far it seems to work.

I managed to get my code to run on my main system, my backup system, and my work system, and I no longer have to recompile on each. It only adds 0.5MB to my download, and I may even get better results once I stop using the debug build options. I’m not sure if there is a “better” solution, but I’m pretty happy for now. Thanks, Johan!

Categories
Game Development Linux Game Development

Oracle’s Eye Development: Graphical Enhancements

To continue with the improvements necessary for Oracle’s Eye, I decided I would focus on simple and quick things. On my list:

  • Shrink the Ball images to half size.
  • Create an actual sprite for the Player.

No coding for tonight, mostly. And there really isn’t too much to describe for the Ball, either.

The Ball

I just took the Ball image and scaled it so that it was 32×32 instead of 64×64. The tough part was rotating it 45 degrees at a time and putting it in the graphics collection for the Kyra Encoder. I could use the Kyra Sprite Editor to create the animation, but I found it much easier to manually edit the XML file. I already had the larger Ball, so I just changed the numbers. It was really easy, and I only had to fix a problem once. When I ran the game, the top of the Ball was cropped so it looked flat on top.

I even added some more Walls to the level. Eventually I’ll be able to dynamically load the level from a file so I don’t need to recompile for each change. For now I’m still working on the mechanics. The new Walls actually make the level a slight challenge. You can’t just kick the Ball three times and win anymore, although it isn’t all that more difficult either. Still, it is definitely a nice improvement. What is especially nice is that the Ball only spins if it is moving now. Once it stops, it stops spinning as well. Eventually I’ll change the rotation depending on which way it goes, which means more frames of animation to handle movement up and down.

I also decided to change the movement of the Ball. Instead of bouncing perpetually between the Walls, it now stops upon collision. I think handling the Ball movement will be more interesting this way, and levels can be created that take advantage of the fact that the Ball stops once it hits a Wall. We’ll see how it works out. It’s actually more of a puzzle now, so I think it might stick.

The Player

Next, I wanted to change the image of the Player. A white stick figure isn’t all that exciting. A non-animating stick figure is even more so. If he can’t move between two Walls, that would be a problem. I needed to provide a better Player.

I didn’t exactly want hyper-realistic graphics, but I realized that I hadn’t thought of an art style to use. I was thinking about making it simple for now and using a cartoon blob, but I felt it would be cheap and would make it look too much like Lolo. I wanted something that showed character but was also mine. I still wanted a cartoon feel to it, but I thought I would do well to make up a nifty character. Beetles? Snails? Pigeons?

I made a quick drawing of a corporate cubicle dweller. No reason, really. Yeah, this is all very temporary, but it is easier on the eyes, as you can see:

Image of updated Player and Ball

The Player still floats around the Room, but I figure that animating him would be premature. I would prefer something a bit more adorable than this guy. B-)

Downloads:

codenameOraclesEye-r97.tar.gz, 8.0 MB
codenameOraclesEye-r97.zip 8.5 MB

To build, you will need libsdl1.2 and libsdl_image. Go into source/kyra_2_1_1/kyra/engine/ and run ./make. Then, you go back to source/ and run ./make. To run, ./oracles-eye.

Only available for Gnu/Linux currently, but apparently it doesn’t take much to get it to run on Windows. Thanks, Scott!