Well, nothing planet-smashing, but the problems did manage to rear their ugly heads upon releasing the Mac versions and changing dang near everything on the back-end. Specifically. . .
1. I broke google checkout by changing the name of the back-end CGI from the default without changing the link to it in the storefront. Easy fix.
2. I broke windows downloading by forgetting an "else" in the download back-end that automatically appended .DMG to every file. Easy fix.
3. My "Thanks for buying my games, here are your download instructions" email didn't include installation instructions for the Mac. I knew I'd forget something. Complete oversight on my part, but fixed without much hassle.
4. Despite being compiled for PowerPC processor, it turns out that the Zinc stuff is compiled with libraries that don't exist on MacOS before version 10.4. Unfortunately, this one's out of my hands, so I have to change the required system specs to require 10.4. Poo.
I'm really hoping that Apollo will include enough support for client stuff (like SQLite) that I can start using it and dump Zinc. Much as I was hoping that Zinc would be a solve-all-problems solution, its support outside of Windows is pretty wobbly. Details are still pretty sketchy at this time, so I can't rightly say if it'll solve problems I have now or if it'll just introduce new ones (like "you have to rewrite everything to use Actionscript 3").
On a completely different note, I finished reading pretty-much the entire Octavia Butler bibliography (as the works of a black woman sci-fi writer are the rarest of things and must be studied). Her untimely death is a real shame because most of her series' (save for Patternist, which is actually reverse-open-ended) were pretty open-ended and would've lent themselves well to new chapters. So I'm reading Footfall by Jerry Pournelle and Larry Niven. It's a fun "aliens wipe us all out" story. Lotsa 'splodey stuff.
I'm also reading The God Delusion by Richard Dawkins. Dawkins is smarter than ten smart men, and his intellect and handle of logic crushes everything in its path.
That is all for now.
Monday, October 30, 2006
The problems arrive
Friday, October 27, 2006
One more danged thing happening
Mac games are up. I'm not 102% happy because they're in Rosetta so they're slow on Intel, but Zinc's not promising Universal Binary support until early 2007 and I figured I might as well put the games up now and offer a free 1.1 version upgrade later.
I made loads of small improvements to the page. The storefront now has Mac. I also added an "order by snail-mail" feature for you folks who want a paper trail. . .
http://www.thecodezone.com/buy_snailmail.html
It did give me a chance to make a printable document with FlashPaper. Shelly insists that it be done in Acrobat with fill-able form boxes turned on, but I'm going with compatibility. Rather than hoping the prospective buyers have the latest Acrobat, I only have to assume they have Flash 7. . .and if they manage to get that far in thecodezone.com, they clearly do :)
I also added the embedded currency convertor, in case you wanna pay with Euros or Gambian Grickles or somesuch wampum like that. I had no problem clearing a Canadian check with The Code Zone's bank (Chase), so I guess it's time to stress-test 'em with something else.
And yes, I'm gonna wait for those checks to clear before anything gets sent. Apparently check forgery is a freakin' art-form in some countries.
If you're a registered user of Bulldozer or Duck Tiles, click that "check for upgrades" link in the Setup Panel (that little gear-looking-thingy in the corner). It should tell you that there's a version 1.01 available and should gently usher you to the download page to get it.
Hopefully. Seems like every time I upgrade something I break something. And I upgraded about eight things this time :)
Getting things ready
Okay, let's see if everything's ready for the Mac release tomorrow. . .
thecodezone.com front page updated. Check.
Storefront page updated with new Mac SKU's. Check.
Database updated with unlock codes and download locations for Mac versions. Check.
Games pages updated to remove "Mac versions coming soon" and adding Mac system requirements. Check.
FAQ page updated to explain what Rosetta is and promising to give out free Universal Binaries (simultaneously speeding up Intel games and jettisoning support for OSX earlier than 10.3) when Zinc is updated with same. Check.
Made DMG files out of the games for upload. Check.
Back-end downloader updated to recognize DMG format (not just EXE and ZIP). Check.
Front-end downloader updated to reflect new SKU's and the option to download DMG files. Check.
. . .danged if I don't think I'm about there.
Oh, and two things I can recommend. One is a thing called "Screenshot Helper" on the Mac. The Mac has loads of key-combinations to make screenshots. Unfortunately, one combination they don't have is the one that snaps your application window along with the surrounding frame and titlebar. If you do an application screenshot, you'll get a shot of just the client area.
So what you have to do is take a snapshot of the entire desktop and crop out everything but your app. But that's a problem too because your app has shadows and such that blend into the desktop. Screenshot Helper fixes this by slapping up a big white window over everything but your app, this making the process of snapping and trimming up your screenshots trivial.
It's free. Google for it.
The next is the combination of Dreamweaver and Fireworks. Fireworks is quite nice because you can overlay vector stuff over bitmap stuff and layer 'em and such. That's a problem for browsers, though, because custom files that combine bitmaps and vectors and layers and such ain't exactly browser-compatible. Dreamweaver, however, allows you to edit the "rich" bitmap format, but then automatically converts it to a more browser-friendly format (i.e. GIF) when you save.
Nice.
There are several updates today
First off, a scant two weeks after the release of Bulldozer and Duck Tiles for Windows, the Mac versions ship! Also the Puzzle Pack is shipping for Mac.
They're all available in the store.
Next, the development of the Mac version uncovered a couple of minor bugs in the Windows versions, so the Windows versions of Bulldozer and Duck Tiles have been updated to version 1.01. If you're a registered user, you can download the latest versions here.
Finally, you can now purchase The Code Zone games entirely via snail-mail here.
Labels: siteannouncements
Tuesday, October 24, 2006
Still here
First off, IE7 is shipped, and that means that you need to change the way you're serving your Flash content if you're just going with the default Flash or Dreamweaver-generated versions.
It's easier than it sounds. Go over here, download SWFObject, include a single .js file, and make changes to your code. The upshot is that your HTML will get simpler, as you'll no longer have to worry about keeping your OBJECT and EMBED tags in-sync.
Other than that, I'm poising myself for a release of the Mac stuff. That means updating the storefront and removing all of the "coming soon" notices. Hopefully they'll be deployed on Friday if not before.
Found a minor bug in Bulldozer & Duck Tiles while working on the Mac version, so I'll probably rev the Windows games to 1.01 at the same time.
Friday, October 20, 2006
This and that
Not much going on in the McDonald's front right now. Just a trickle of envelopes are coming in. Got three on Wednesday and three more yesterday. I don't know if they're going to continue at that pace or if one day my mailbox is gonna be bursting at the seams.
I have a small handful of unpeeled McDonald's game tickets with online codes to play at playatmcd.com. I'm not playing 'em right now, though, for two reasons.
1. I'd rather see if I can sell off the unpeeled's. The market's not really there since ebay put the kibosh on selling game tickets, but I might try other avenues.
2. The prizes right now are pretty-much worthless. This week the online prize is either a ringtone or a cellphone game, neither of which I care about. I think they're going to go back to the 25 free Snapfish pictures deal in early November, so I'll start playing again then. The Snapfish pictures are a good deal. Last year I was able to print 100 free pictures to put in Xmas cards for the relatives. Snapfish pictures look great and the price is right, so I'll wait.
So there's really not much to say. I have $10 in BB credit right now, and that ain't even enough for danged Leapster game, so I'll just wait.
Following getting SQLite working on the Mac, my games are working pretty seamlessly. I had an ugly crash bug in Duck Tiles and Bulldozer, but it turned out to be an old piece of code that was only in there for debugging purposes.
I did, however, find that Mac and Windows Flash rendering pipelines work a mite differently. For example, if a frame has some code that doesn't do anything other than go to another frame like this. . .
// check to see if the user has entered his magic code
var authorized;
[look up the user's magic code and see if he is authorized]
if (authorized) gotoAndPlay("mainMenu");
If the user is authorized, all this frame does is go immediately to the frame named "mainMenu". If not, it stays on the current frame until the user has properly entered his code and the code is authorized.
On Windows, it never bothers to render this frame if you're authorized. Since the only action that's taken is to move on to the next frame, it just hops to the "mainMenu" frame without rendering anything.
On the Mac, it renders the frame. Period. That means that when you run the game, even though you're authorized, the "enter your magic code" page flashes up for a moment before going to the main menu. It's just a cosmetic thing, but it's ugly, so I moved the "enter your magic code" page to a place on the timeline where it'll never be seen.
Thursday, October 19, 2006
Just a tease. . .
Seems to be working, albeit slowly on my poor little Intel Core Solo Mini running Rosetta.
After getting the SQLite object ported, the only changes I needed to make were to the code that determines the path of the prefs database.
And I needed to convert the icon. Thankfully IconWorkshop also groks Mac format icons. I can't recommend IconWorkshop highly enough.
Wednesday, October 18, 2006
Okay, something to show off.
Oh, did I mention that sqlite.org has the latest binary downloads for Linux and Windows but not Mac, so if you want the Mac binary you have to compile it yourself, thus requiring you to download fifty jillion meg of development tools, navigate the unfamiliar XCode environment, and compile the damn thing yourself?
So step one was building SQLite for Mac. Got that working after a couple of false starts. And then it was a matter of writing a reasonable ActionScript wrapper around the command-line SQLite engine that looks like Windows one that talks to the DLL.
And I got something working. If anyone out there with a Mac wants to help me (especially PPC macs and/or OSX versions prior to 10.4), please do the following. . .
1. Download the test app at http://www.thecodezone.com/delme/mactest.zip. It has two pieces. One's the test app. The other is a database called "sample.db".
2. Run the test app and see what comes out. Easiest thing to do is to press the "connect" button, followed by the "runQuery", and finally the "getData" button. If you see some array results in the "result" field at the bottom, then everything's working.
Also, I have a little more handle on how things will work, answering the questions I posed from a couple of days ago.
I'm just gonna pack the SQLite engine into each game individually. While that's not really an issue for Bulldozer and Duck Tiles (as I sell them individually), it's gonna be a big size-hit for the Puzzle 6-pack. While I'd much rather put the database functions into a common library and let the games talk to it (as I do in Windows), it's not the "mac way of doing things" to have runtime components hanging around outside the app. So I ain't gonna fight that. The Puzzle Pack will be 3.5 meg larger for it, but now that 500 gig drives are the norm, I'm not gonna sweat it.
My SQLite engine is built as a "universal binary", which means that it's an Intel and a PPC binary duct-taped together. The game itself is gonna be a PPC binary, so hiding a universal binary inside is a bit of a space-waste (because the database is pretty far from the redline for performance). Again, though, I'm not gonna sweat the games being a few K larger than normal.
So I think everything's lined up now. They won't be quite as small and fast as they can possibly be for each "sub-platform" in the Mac universe, but I think performance should be okay and they won't smell of "port", which upsets the Mac folks. Also I won't have to worry about the support headache of maintaining multiple Mac versions (i.e. Intel Mac versus PPC Mac versus OSX >= 10.4). There'll just be "Windows version" and "Mac version" for sale. "Mac version" should work on any OSX Mac just as "Windows version" works on any Windows machine Windows 98 or later.
So the next step is to start getting games working. I'll keep you posted.
Oh, and the Belkin KVM switch is highly recommended. I'm using it for sharing the monitor/keyboard/mouse between the Main Development Box and the Mac Mini. I heard that some switches have trouble with things like power-hungry optical mice and such, but this thing works seamlessly.
Monday, October 16, 2006
A mite more to show off and OSX woes
Okay, I have a little more stat-o-matic to show off, along with a usability question.
The stat-o-matic app is now able to grab scores from the database and display 'em. One thing it'll eventually do is grab your username from the Flash-cookies and pre-fill the "handle" text-box, so it'll default to your own scores.
Also I'll have an indicator for an empty graph, saying "hey, choose a game up there to show some stats". Until then, though, I still have the random graph data.
Anyway, open up a new browser window and go to http://www.thecodezone.com/statomatic.php
On the first graph (scores), enter "flyman" in the entry field and "poker patience" in the checkbox and press "go". Since PP is the only game that currently posts to the new database and I'm currently the only user with enough scores to make a meaningful graph, stick with these.
You should see a cute little bar-graph. If you click on a bar, you can see a little more detail on how well I did for a particular day.
Anyway, the usability question is this. . .
Click on the rightmost bar. Note the date. This is my score for TODAY!
As any Daily Puzzle player knows, scores are kept hidden until the following day. But, since the stat-o-matic page is set up to let you look at stats for anyone, you could use this as a sneaky tool to check on the scores of your greatest rivals in the high-score tables, thus giving you a clue as to the score you'll need to win.
When I first noticed this, my first reflex was to say "well, all I have to do is not show graph data from today". But then I wondered. Would it foster competition to allow you to peek at someone's score for today?
It's not like cheating's a monster problem for my games (mainly because it's really easy to cheat at about half of 'em), so should I allow an avenue for a sneaky player to gain an "edge" in the name of fostering fiercer competition?
My inclination is to not send scores for today. After all, it's fairly easy to spot the cheats in the high score tables (hint: They're the ones who make perfect scores in 18 seconds), but there's little indication that I'm peeking at the Pop Pies regulars and playing the game repeatedly until I beat their scores.
So I'll probably dump the today-bar.
Just thinking out loud.
Now then, regarding Mac games. I'm really almost there. My biggest problem is my utter lack of expertise with the Mac platform. I have Zinc for OSX (the Flash standalone EXE builder) and it works just fine building standalone Mac games. And I have a little Mac mini for building and testing. I built a couple of games on it, and they mostly worked.
But I have a lot of unanswered questions that'll take some time to research. Hopefully you OSX types can help me out.
Biggest issue is with SQLite. I chose to use SQLite to maintain data in the games (settings, high score tables, etc) because it's dirt-simple and requires no installation and runs on everything. Only problem is that SQLite didn't have a Zinc interface, so I had to roll my own for Windows. It was fairly straightforward, although I did have to write a little "glue" DLL because Zinc's DLL-calling interface doesn't support callbacks, and the SQLite DLL returns query-rows via a callback function.
Once that was working, installation for Windows is quite simple. All I have to do is copy sqlite3.dll (the SQLite engine, precompiled for me at sqlite.org) and SQLiteZinc.dll (the glue DLL I wrote) into the same folder as the games, and everything's happy.
Now then, the Mac's gotta work almost entirely differently from that. Zinc's method for talking to an external program in OSX is via the command-line or via AppleScript. While I could compile SQLite as a shared library (OSXese for a DLL) and talk to it with AppleScript, the folks on the MDM forum say that the command-line would be a better way to go even though it seems on its face to be more kludgy.
And then there's the question of deployment. While OSX 10.4 and later have SQLite included somewhere in the bowels of the OS, the older OSX's don't. That means that I need to include SQLite in my distribution. And I can't find a working SQLite for OSX binary distribution anywhere. Which means that I'll have to build the SQLite binary myself.
Then there's the case of PowerPC versus Intel. Right now I assume I'll have to build two sets of games and two SQLites -- one PowerPC native and one Intel native. Or is it better form to make a fat binary out of everything? And how do I do that?
And then there's the case of distribution. My puzzle pack, for example, contains six games. Since each game requires the SQLite and SQLiteZinc DLL, I didn't bother packing the DLL into the games themselves. I just left 'em in the directory so they could all share the DLL. This makes loads of sense from a size standpoint because the SQLite engine, while small for an SQL database, is of nontrivial size, and packing the DLLs into each game would bloat up the installation and download size.
But that don't seem to be the Mac way of doing things. Best I can tell, each game should be a self-contained archive that contains all of its runtime information within itself.
So it appears that to be a well-behaved Mac app, each puzzle must be a fat binary that also contains a fat binary of all of its required runtime components contained within itself. And that's gonna make the games REALLY HUGE --probably four times the size of the Windows games!
Then there's the installer issue. Most Mac apps I've seen don't have installers. You just download a little "virtual disk", then drag the app into your app-folder and (optionally) put it on the OSX dock for launching. While I could certainly do that, what of uninstalling? It would absolutely be bad form for me to leave behind a database of settings if the only uninstall instructions I gave were "drop the games in the trash can". I'd much prefer to have a nice friendly installer that sets up the games for you along with an uninstaller that will obligingly remove all traces of my game from your system, but I think that'll make the OSX folks cry "port".
So, as you can see, I have a few things I need to iron out logistically before I can even start on making my "run anywhere" game actually run anywhere. If any of you OSX folks out there can help me iron out all this, I'll try to make it worth your while.
Friday, October 13, 2006
I'm statisticalyzin' (almost)
Awright, I'm at the second-to-last step of the new back-end for the games, and that's the new Stat-O-Matic Statisticalyzer app. This is a little gizmo that you'll be able to use to track scores and rankings for yourself or other players on the daily puzzles.
It's here.
It's pretty-much the way I want it to look. I know that the (currently random) bar-graphs are very crowded, but this is pretty-much the "worst case" of play that you're seeing here. This is for a user who played a game three times a day for thirty days straight. For a more average user (one or two plays a day, five days a week), the graph will be a lot more readable.
Now it's just a matter of connecting it up to the database so it can grab the stats and display real stuff rather than just the fake data that's there now.
Note that this'll only work with games with the "new" back-end. And right now that means Poker Patience. Poker Patience is basically done (except for adding sound), and it's fully versed in the new back-end. So give that one a try if you don't mind. That way I'll have a few more numbers to make the bar-graphs more meaningful.
Once that's done, then I'll work on the trophy case. The trophy case will hold all kinds of little hidden awards that you'll get for making various achievements in the games (like going over 55% in Voracity or clearing a Shi Sen board four days in a row). I hope to add a few dozen hidden trophy opportunities all over the existing games so you little game-monkeys can spend hours trying to collect 'em all.
After that I'll be retrofitting the system back to the existing daily puzzles.
Then it's five more new daily puzzles.
Oh, and thanks for the kudos from Noaktree on Bulldozer. Looks like the download system's working smoothly now.
Now I need to figure out how to accept checks (even though paypal will work with checks, but go figure). I'll probably just go the low-tech route and come up with a printable order form and let folks send me ten US bucks and I'll send 'em an email with their magical unlock code.
Any other electronic-payment solution, alas, will be beyond the realm of those who still insist on stuffing cash into an envelope.
Wednesday, October 11, 2006
Tuesday, October 10, 2006
Bulldozer and Duck Tiles are shipping!
At long last, Bulldozer and Duck Tiles are ready!
Try 'em out now. Buy 'em if you like 'em. Enjoy!
Labels: siteannouncements
Monday, October 09, 2006
more stuff
Duck Tiles and Bulldozer will be this week. It's just one of those "pull the damn trigger, ya puss" things now. I know there's another bug in there somewhere, but I can't find it. I have auto-update functionality in there, so it's not that big a deal if that stealth bug isn't found.
I'll likely re-test under Windows 98 just to make sure that the new Flash 9 player didn't break anything there. Flash 9 supposedly supports Win 98 (but has officially dropped Win 95, no tears there), but I wanna make sure.
I just did my first official edit to the gamedev front-page to post my FlashForward 2006 coverage. It's no biggie, but it did underscore how we need to automate things a bit. I think it took longer for me to post the article to gamedev than it took to write it!
Monday, October 02, 2006
Some distractions
Yes yes I know. "Ain't you supposed to be releasing new games any second now?"
Well you're right, I am. Buy hey, I was ADD back when ADD still meant "compute the sum of two numbers", so I cherish my distractions.
First, I noticed that Google Reader got a facelift. I must agree that it looks quite nice. In fact, I think it's the best-looking app Google has now, as Google has always tended towards keeping their UI's a bit sparse.
Also it's got a cute "automatically mark entries read if you scroll 'em off the screen" feature.
That being said, I'm still sticking with Bloglines as my RSS-reader-of-choice for two reasons. . .
1. It's quite a bit faster than google reader. Looks like all that cute eye-candy is coming at a price. Bloglines is always quite snappy.
2. Far as I know, Google has no equivalent to "Bloglines Notifier", which is a little applet that puts an icon in the corner of your browser (or in your system tray) that lights up when there's something new to read. I've grown used to it.
Now then, I do realize that the new Firefox and IE have very pretty RSS clients built into 'em now. I'll never use 'em, though. For one thing, they lock me into one browser. With bloglines, I can pop up my little RSS news-headlines no matter what browser I'm using or even where I am. If I find myself near an internet-connected machine with a few minutes to kill, I'll often find myself logging into bloglines so I can see what's happening in the world. I can't do that if all of my feeds are married to Firefox/IE on my machine at home.
Second, I finally posted my Sid Sackson Design Documents. I was worried that the handwritten version was gonna be enormous because it's basically about 45 full-page bitmaps, but I was actually able to keep the size reasonable (under 3 meg) while still keeping the text readable.
. . .or at least as readable as the originals, given that it's written in pencil on a yellow legal pad and has apparently been stored in a hot garage for 30 years. My 1907 Mark Twain collection is less brittle than this set.
Third, I ain't in a hurry to update Acrobat. I was reading on a news-blog about how great Acrobat 8 is. Far as I can tell, though, the new version has the following enhancements over version 7.
1. You can now merge two PDF files into one.
2. It comes with a 90-day 15-connection trial of "Acrobat Connect" (formerly Macromedia Breeze) after which time you can keep up the 15-connection version for $40 a month or upgrade to more connections for more money than you have.
3. Rather than a big blank app, you now get a pretty multi-button wizard-box opening screen.
Since Acrobat now has product-activation, we only use it on Shelly's machine. We'd go with one of the multitudes of Acrobat knockoffs out there except that the Adobe version seems to be the only one out there that integrates nicely with AutoCAD, allowing you to break up layers and such. Also, Shelly occasionally uses the form and signed-document stuff that, far as I know, the clones don't do.
"Acrobat Connect", formerly Breeze, is quite cool if you've ever used it. It's that big Flash-based groupware UI that many companies use for doing online tutorials. It's a bit like NetMeeting, but it's nicer in that you just need a Flash Player to run it, so most platform issues aren't issues. That being said, it's too expensive for the couple of times a year we'd actually need it.
For the occasional PDF creation on my machine, I use FlashPaper, which is an obscure product that Macromedia made before merging with Adobe, and will likely never be updated again, given that Adobe's not too keen on competing with own flagship product. It's actually quite good at making PDF files. It can also convert documents to SWF which is kinda cool. What I like most about it is that its little "fake printer" works backwards from the way Acrobat does. With Acrobat's fake printer, you do this. . .
1. Print to "Adobe PDFMaker".
2. "Save As" box pops up. You choose a filename to build to.
3. System pauses as it saves out a PDF file.
4. Load up PDF file in Acrobat reader to see if it looks nice. Repeat with different settings if it doesn't.
With FlashPaper you do this. . .
1. Print to "FlashPaper".
2. System prints, then pops up FlashPaper app, showing what it printed.
3. If it looks nice, you choose "Save As" from FlashPaper, choosing PDF or SWF.
The FlashPaper really strikes me as the "right" way to do it. The Acrobat method always struck me as how people did things before print-preview. You'd print, then make sure it looks like you want, repeat if it doesn't look right. FlashPaper gives you the equivalent of Print-Preview, and you only have to pull the trigger when things look the way you want.
. . .umm yeah this is me thinking too hard about things, but I do like FlashPaper better. It doesn't have form-filling or document-signing or PDF-merging, but it's 1/5 the price of Acrobat and can save things as PDF or SWF.
Shame it'll never see another update.
New commercial games are imminent
I promise. Until then, I posted a little piece of game design history as a free download.
Labels: siteannouncements