errantember: (Little Cowboy Scott)
Today I submitted my very first for-pay App to the App Store! I quit my job almost exactly one year ago to become a professional mobile game developer. In that time I have partied a lot (budgeted and planned for), published one free App in the App store, and continued to build my amazing business network. When I return from Burning Man I will still have 6 months of money in the bank, plus whatever income I've gotten from my game. I plan to ship, on average, 1 game per month for the next 6 months to a year. I firmly believe that in that time I will go from a few dollars, to supporting myself, to eventually making more money than I did in the corporate scene. I'm already planning on spending a good portion of next summer in Portland, rather than continuing to roast here in the 100+ heat. I will adopt out my dogs and take other steps to make long-term travel easier. It feels great to have accomplished all this going into Burning Man, which, for Burners, is a bit like New Years.

And now I have less than 48 hours to get ready for Burning Man.

Life is good.
errantember: (Little Cowboy Scott)
My very first iPhone game, AstroMiner, has now past Apple's muster and is available for FREE in the App Store!

AstroMiner! - MoebiusTrip

Anyone with an iPhone, iPad, or iPod Touch can download it for free. Simply do a search in the App Store for Astrominer and download it!
errantember: (Little Cowboy Scott)
As most of you know, I quit my corporate job this past August to become a game designer. I still have almost a year's money in the bank to make the transition happen. I'm using GameSalad, a visual tool for making games very easily and intuitively. You don't have to be a programmer to make a game with GameSalad!

My first deadline is fast approaching on this Thursday, February 10th. By that time, my goal is to have a completely playable game available to the General Public for playtesting. GameSalad allows one to publish one's games to their website, where anyone with the OS X Safari web browser and the correct plug-in can try it out. I've been using GameSalad for less than two months, and less than one month heavily, and I've already got a very good command of how things work.

Overall things are going very well. GameSalad is an excellent, if not 100% stable, tool. My game, AstroMiner, is coming along very well. It will take most of my time for the next two days to get it polished enough for public consumption, but I believe I will get there. My subsequent goal is to have it ready to submit to the Apple App Store, its final destination, in two more weeks. From there, iPhone, iPad, and iPod Touch users worldwide will be able to download it.

My strategy is to kick out a new, free game every three-four weeks, and see which ones become the most popular. When that happens, I will add features and levels to that game, and make a for-pay version for the App Store. This way I get to make lots of cool games, get better a lot faster, and only have to put the extra work in when it will actually pay off financially to do so. The goal is for this to be my primary form of income, and I'll be very happy if I can accomplish that goal before my money runs out. Despite the many obstacles involved, I think I'm going to make it!

I'll think that even more once I've actually gotten *paid* for something, which is probably still months away.
errantember: (darth bobo)
The first iPhone game I'm working on involves the exorcism of a few teenage demons.

Enter the Official Books of Stuff, my notebooks from junior high, filled with pages and pages of Fascinating Me Memorabilia.

There are no dates. Few subject headings. Frequent, incomplete comics. Robots. Space ships. Poorly drawn, scantily clad women. Women with swords.

I'd gone through several books, and I couldn't find them. That seemed impossible. There had been so many. But finally, half way through the third volume. I found one.

A Teddy Bear.

A Teddy Bear who has clearly underestimated the power of a Dark Clown.

He will not be the last.
errantember: (Default)
Got up today just before noon.

Yesterday I helped Amy do a cut-down and back frame of one of her biggest painting that wouldn't fit in her new truck. It took a lot of cutting and gluing and sanding, but we got it done. She worked on painting the new edges and claims it looks great.

Those who care about my health may be slightly alarmed to know that El Scooter is now working. I took the it from home up to Lamar and 71 on two different trips today, and it performed at least as well as it used to. I'm looking forward to longer trips soon, which will save me a lot on gas. Now that I have a rough idea of how often the batteries in the scooter need to be replaced, I can do a better total-cost-of-ownership calculation. It only uses about 1 cent per mile for electricity, but the batteries cost almost $500 to replace.

I continued work tonight on my Permaculture game idea with GameSalad, despite rumors that they're new licensing model will be horrible. I managed to make some rain, and a barrel to catch it in, and a plant to water with it. The tools allow me to work organically, trying out different ideas and physical dynamics to see what works and what doesn't. I have a very rough idea of where I'm going, but definitely not the kind of clarity I had around the Teddybear Eliminators game, which was going to be my first effort.
errantember: (Default)
So I'm currently investigating this thing that lets non-progammers create iPhone and iPad games. It's called GameSalad, and in my few hours of estimate, it fucking rocks. The super-popular Angry Birds was made with it, and has sold millions of copies. It was at the very top of the iPhone chart for some time.

I started with a very simple Asteroids style game. You rotate, you shoot, you thrust, and you can teleport, just like the original. In about two hours, having never played with GameSalad before, I made the following changes:

o There are now two weapons. A slow-fire that shoots in four direction, and a fast fire that kicks the ship backwards slightly with every shot.

o A thruster sound effect and graphic, previously absent.

o Removed extra asteroids to make testing easier.

It's all point-and-click, and quite simple. While the fact that I have extensive programming experience certainly helps a bit, it's something anyone with a passion for making their own games could pick up, even if they had zero coding experience. And that's the point. You make a little change, you hit the Play button, you see if it does what you expect or not. It's definitely the coolest piece of technology I've seen in a long time, and it may well be my gateway to a new career.
errantember: (darth bobo)
After Much Drama, I finally got a Java MIDlet to run on my Mac using NetBeans and the MPP emulator. I've been wanting to get back into programming for smartphones, and Java is currently my ticket. I became hung up on both this and the bathroom project at the same time, a prefect example of a Dip. And, in both cases, by perseverance, I managed to emerge on the other side ahead of the game.

Or, at least, ready to *program* the game.
errantember: (Little Cowboy Scott)
uses strict = no Skynet
errantember: (Little Cowboy Scott)
Some time ago, in an effort to help simply the accounting of my writer's group, I created an LJ program called The Enforcer that does the number crunching and vomits out the weekly status of each contributor. Up until now, I've been running it and posting the results manually, but tonight I finally took the time to tie together all the pieces to run automatically.

This is the first time I've ever set something lose on the Internet. Hopefully my fears are warrantless...
errantember: (Little Cowboy Scott)
About five minutes before my technical interview for a job I'm looking at, I decided to engage in some judicious cyber-stalking to get some background on my interviewer.

It turns out, in a company large enough to have a separate HR department, he's the CEO.

Not information I needed right that point in time. :)

However, I think I did very well. There was only one question I didn't know the answer of off the top of my head, but with minimal hinting, I think I managed to manufacture a suitable answer. The other five or six I got pretty easily, which was a relief. With technical interviews, you never know when the person will ask something about a feature of a language you programmed in for 20 years that you haven't used in ten. This time, it was all relevant.
errantember: (Default)
So I'm in the process of becoming an independent contractor, and one of the major thing I'd like to do is web programming. My technical knowledge is a little stale, but I can catch up on that fairly quickly. The main reason I'm doing contract work, though, instead of full-time is that I want to have more control over my schedule. And there's one *big* issue with programming that doesn't fit well into that model, and that's support. I completely refuse to create an ever-increasing support burden on myself simply because I've done more work. I've worked in software for ten years, so I understand the necessity to have *someone* support the software, and I fully intend to write high-quality, well-tested software to reduce the support load, but unless there comes a day when I can say "This project is done forever," the entire exercise is a waste of time.

The easiest solution I see to this is to find a support organization that will work with me to take the software off my hands once it's done.

I'd like to hear from any software freelancers in the crowd as to how they deal with this.
errantember: (Default)
...so one of the *other* things I need to actually do any real programming or website content creation is version control. The only version control system I've used in the past is CVS, but all my friends use Subversion now instead, so I decided to install it. Naturally, it being a basic UNIX utility, it was a pain in the ass, but, for the most part, it sort-of appears to be working. Right now I'm only using it to manage a single file, but once I get more comfortable with it I'll also be using it for my website files, so I can change things as fast as I want to without being concerned about accidentally, tragically, permanently breaking shit.

In other news, Mom's birthday has been a smashing success with the exception of one Projectile Vomiting Puggle. After cleaning up at least 7 in-door vomiting incidents (one of which was only deflected from hitting me directly in the face by last-minute Puggle-shoving) indoors, I finally got Louie to eat some burned toast (charcoal is supposed to help with digestive problems) and he hasn't thrown up now for several hours.

Loki, locked in a small box with him, hopes this trend will continue until morning.
errantember: (Little Cowboy Scott)
I belong to The Voluptuaries, a writer's group started by [livejournal.com profile] kitfox and [livejournal.com profile] eposia. The requirement is to post at least one work for critique per month, and two critiques of other's work per month. Previously this was enforced by hand, which, on an ever-expanding body of work coming from as many as ten writers, is a daunting task. Recently its difficulty combined with busyness on the part of our admin has led to no enforcement, which, naturally, has led to laxity. We've only had one contribution at all in February.

Thinking on this conundrum, I realized it was probably possible to do this accounting programmatically.
Read more... )
errantember: (Little Cowboy Scott)
When we last left Our Hero, he was here. I had finished tracing out the functionality of the first MIDI subroutine in MIDIStroke, only to find that all it did was convert incoming MIDI signals into a list of pre-defined numbers, presumably for use Elsewhere in the Program.

After a successful Christmas and first-turkey roasting (thanks to the New Best Recipe, which I should be a salesman for, and my Mom, who'd I'd rather not sell) it's time to find out, exactly, where Elsewhere in the Program is, and precisely what it is they *do* there.
Read more... )
errantember: (Little Cowboy Scott)
So I've finished processing the first MIDI subroutine in MIDIStroke. The good news is that this is definitely the subroutine that takes the raw MIDI data and translates it into something more palatable by the rest of the program.
Read more... )

I did it!

Dec. 11th, 2008 02:00 am
errantember: (Little Cowboy Scott)
I *finally* found the location of the *actual* MIDI message inside MIDIStroke! It's at 0xF007FD6E! Of course! I was already pretty excited when I discovered the part of it moved into r2 looked like the preamble for a note-on, but after changing the MIDI transmission channel and hitting the key with different levels of force, which changes the velocity number at the end of the note, I'm 100% sure I've got it!

The path from this info to finding out what needs to be in the box to make my pedalboard work should be *short*. I'm *very* pleased with myself!

Go me!

Eventually I will post a link to a little presentation that explains all of this in more laymen understandable terms, at which point it won't be *nearly* as rad.
errantember: (Little Cowboy Scott)
This is where things get interesting!

00003e90	bne+	cr7,0x3eb4     		*** CNon,UNon,UNoff,UPC,UCC  our first decision!
errantember: (Little Cowboy Scott)
I continued my adventures to figure out MIDIStroke tonight.

Read more... )
errantember: (Default)
Or, if you don't have the source, go to the assembler. :)

I made a bit more progress in using the GNU Debugger to run around inside MIDIStroke, and also made some progress in disassembling the entire program using otool. It does look like it might be possible to actually figure out the encoding scheme for program changes and control changes using this method, thought it won't be easy. For those generally unfamiliar with this sort of thing, what I'm doing is taking a complete program and looking at it's guts to try to figure out something about how it works. When you create a program, you have something called "source code", which is a sort-of englishy-language description of how you want the program to run. The computer can't read this, though, so it has to be translated into machine language, which is called assembler. Generally, when you're using an existing program you didn't write, you only get the assembler to look at, which is very much akin to trying to figure out how a car works without having the design diagrams or any manuals.
Read more... )
errantember: (St. Ember)
So I'm trying to help a customer figure out how to use a pointer transparently whether it's in p-memory or x-memory. First I try to declare all the variables locally, but the compiler won't let me declare any p-memory variables locally, because the stack, where locals are stored, is in x-memory. So I declare them globally instead. Then I assign each type of pointer to an integer stored in the same kind of memory, doing the address assignment with the declaration. The compiler eats this without complaint, but fails to actually place the correct address of *either* integer into the appropriate pointer.

At this point, I break for bacon.

After bacon, I try doing the address assignments inside main, and now the addresses are correct. So finally I go for the typecast, going through a void pointer. However, assigning the address of the int to the void pointer results in some crazy address that isn't where the int is located, so there's no point in even *trying* to make the p-memory pointer point toward the x-memory pointer since the intermediate void pointer isn't getting the correct address.

So *finally* I just decide to typecast the entire operation in one line, skipping the void pointer. I fear an error, but the compiler eats it!

Fabulous.

I run it, and when I get to the actual assignment statement, the debugger jumps to an "incorrect long-word alignment exception."

Time for bed.

Profile

errantember: (Default)
errantember

December 2015

S M T W T F S
  12 345
6 789101112
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 3rd, 2025 09:05 pm
Powered by Dreamwidth Studios