![]() |
![]() |
||||
![]() |
|||||
|
||||||||||||||||||||||||||||||
6-27-07 Fixed a bug in the high score list that showed multiple awards. 6-24-07 Fixed the missing vegetable problem in the Rainbow Road level. Spent some time looking into some crash problems that a few people are encountering but so far I haven't been successful at finding any bugs that could cause the crashes. 6-11-07 I have been planning a weekend trip to Nashville ever since my Dad's passing in May. I was asked by his friend Jon, a fellow song writer, if I could come back and help him get some project files off of my dad's computer. These files pertain to a beautiful series of songs that they worked on together. This is some of my dad's best work in my opinion. There are some opportunities for these songs and Jon needed my help making sense of all of these files. Last weekend, Jon told me that this weekend (the weekend I would be in Nashville), there was going to be a benefit for MusicCares at the Bluebird Cafe (a popular hangout on the Nashville music scene). MusicCares is the charity that helped my family out with some of my dad's medical expenses. A worthy charity by the way and I say that from first hand experience. My dad played keyboard for Country singer, Kathy Mattea for a number of years. Jon asked if I would be interested in playing one of my dad's songs from that project the two of them worked on. Kathy would be singing it. I accepted the challenge despite the fact that I have never played the song before and never really performed in public before. I spent every moment of my spare time last week learning this new song on the keyboard. During the process, I learned a lot about my dad. Every verse had something different about it that you didn't really notice when you listened to the song. I think that's what kept the song so interesting to listen to (and so difficult to learn). My dad was brilliant! Well, this past Saturday night I played the song and Kathy sang to a sold-out crowd. It got a little rough about halfway through the song (I think my nerves got to me) but we got through it and there were lots of applause at the end. Several people were wiping their eyes too (it was a very beautiful and emotional song). What a great experience that was and what an awesome opportunity that was for me to honor my dad. One of life's bright shining moments. 6-2-07 Finished the German localization. 5-25-07 I've been working hard getting caught up on several projects that I've fallen behind on. There have been a few minor bug reports for MacBrickout but nothing too serious. The main bug has to do with starting up MacBrickout in full screen mode and being presented with a white screen. That one is on the top of my list right now. To solve the problem in the mean time, just go to the options menu->display and set it to 640x480. You should see a small game window on the screen. Now you can set it back to full screen and it should behave normally. 5-8-07 As we go through life we experience happy days and days of sadness. If we're lucky the happy ones far outnumber the sad ones. Today was a sad day for me. I lost my father after an 18-month battle with a form of brain cancer called Glioblastoma Multiforme. He was a brilliant musician, an inspiration, a teacher and a friend. His music at times would bring tears to people's eyes. He could play the B3 Organ like no other. Some of his accomplishments are listed here. I will miss him dearly. 5-5-07 I have gotten some help localizing MacBrickout for German. I'm working on getting the new files incorporated into the game. 5-4-07 Fixed a few glitches on the website regarding high scores. A few minor bug reports have come in. I've added them to my list so that they get addressed in the next release. 4-23-07 Today is a day to celebrate. I released MacBrickout 5.0. I looked back on previous entries in this log and reflected on all of the ups and downs I encountered along the way. Getting the game transitioned over to OpenGL was a huge effort and a grand learning experience. Well worth it. Transitioning from CodeWarrior to XCode was a huge effort. Porting the game to Carbon was a mistake. Knowing what I know now, I should have gone straight to Cocoa. Live and learn. Integrating the game with my website, both the registration process and the high score submission, was challenging and fun. I discovered that I love PHP (as you see most of my web pages end in .php). Finding alternatives for deprecated system calls was not fun but some things, like transitioning to OpenAL to play all of the sound effects, were quite painless. A big thanks goes out to all of the people who were brave enough to download the beta and report bugs. I am sincerely grateful for the extra efforts put forth by Tony Mercer and Kevin Glowacz. You guys kept my "to do" list quite full. There were times when I thought this day would never come. Occasionally months would go by with no work being done on the game. Work, family and life interrupted my progress but I persevered and got it done. There are still things on my "to do" list and I will address them, but for now I think I'm going to step outside, breathe some fresh air and.... and.... Hmmm, what am I going to do with all of my spare time??? 4-22-07 Learned that MacBrickout would not work for users who did not have administrative access to their machine. This was because the preferences and UserData files could not be created or modified. Relocated those files and set their permissions so that administrators and users could both read and write to them. Also, now that the preferences are stored in each user's local directory, each user can have their own game settings independent of other users of the machine (beginner mode, aim-for-levels, display settings, etc.). Released version 5.0b18 that contains these updates. 4-21-07 Spent the past couple of days improving the robustness of the game when running on a system with multiple monitors. When you select Full Screen mode, the monitor that contains most of the MacBrickout window will be the one selected to go full screen. Added the ability for the user to select if the game should sync to the vertical refresh rate of the monitor. Depending on your setup, the game may be smoother with one setting or the other. With sync enabled, the game screen will get drawn once per monitor refresh. With sync disabled, the screen will get drawn as fast as your computer can do it (could be hundreds of frames per second). With sync enabled, you'll use less power (for laptops running on batteries). With sync disabled, you'll get slightly better paddle response because there's less time lag between when the mouse position is read and the paddle gets drawn on the screen. The Sync To Vertical Refresh option is located in the Display menu. Released version 5.0b17. 4-18-07 Added a menu option under the Display menu that allows the user to synchronize the drawing to the display monitor's refresh rate. Depending on your display setup, one setting or the other will work better for you. 4-17-07 Fixed a bug where you couldn't start a new game in Frequent Player mode. There was a line of code missing! Looks like I was a little over zealous when I was cleaning things up and accidently deleted it. Fixed a problem where the game wouldn't start up for users of OS X 10.3.9. Posted version 5.0b16 which contains those fixes. 4-16-07 Fixed several minor glitches on the new website. Added a "Daily Diary" button that links to this blog. 4-15-07 test Fixed a bug where gates that you added in the level editor could never open or close. When two opposing gates touched, it was obvious that the image on one of them was flipped. Fixed. Another long day of pulling it all together. Removed the beta registration number restriction. Updated my website. Posted the first public beta of the game. 5.0b15. 4-14-07 Over the past several days, I've been intensely focused on code cleanup, bug fixes and level tuning. Improved the robustness and user interface of the level saving functionality. Fixed a bug where you couldn't edit the attributes of any newly added teleporters. Got rid of the Paddle Speed menu item for the time being. Found and fixed an elusive endian swapping bug in the code that prepares level textures for saving to disc. Made it so the user couldn't inadvertently edit the Aim-For-Levels level. Fixed a bug where saved games wouldn't get loaded if Frequent Player mode was disabled. Fixed countless other bugs. Huge progress today. 16 hours! 4-11-07 Made map management algorithm handle both regular levels and bonus levels. 4-10-07 Made significant progress on the level map management algorithm. Another day or so of work to do on this... 4-9-07 Wrote a function that generates a list of all levels and bonus levels in a given directory. This list will be used to correctly update a LevelMap file. Began writing the algorithm that updates a level map file with any new levels that have been added to the level set as well as removes any levels that have been deleted from the level set. 4-8-07 Accomplished a huge portion of the level saving functionality. I still need to add the code that adds a new level to an existing level map file and allows the user to position that level where they want among the levels already in the map file. Added code to automatically hide the file extensions of the various files owned by MacBrickout. Reconfigured map file structure so that it could handle longer level file names. 4-7-07 Added the code that allows the user to select a level set as a destination for the level they're saving. Also it allows the user to create a brand new level set. Found a bug where when you add a teleporter in the level editor, you can't "get info" on that teleporter to edit its attributes. Created icon for LevelMap file. Added icons for individual level files. Had to change the code in a few places to handle the new .MBLevel file extension. 4-6-07 Fixed the trigger switch problem. Started working on the code that allows the user to select which level set to use when saving a level they just edited. 4-5-07 Added a cool new feature to the lasers. Bah, I was playing level 2 and discovered that I couldn't finish it. All of the trigger switches are gone! Loaded my backup level. Its trigger switches are gone too! Bah! 4-3-07 The "Get Ready" text animation was a little jerky when resuming a paused game (but smooth when beginning a new level). Fixed. Repaired some minor problems with the ball attributes dialog box. Started looking into the ball speed on Standard Levels. Some people say it's way too fast. 4-2-07 Fixed a bug where the Aim-For-Levels screen would get stuck in an infinite loop. Got two-player mode working in Aim-For-Levels. Fixed a bug in 2-player mode where the cursor wouldn't be visible when the high score dialog came up after the Secret notice. Discovered a problem where the game wouldn't ask for the user's name if they got a high score on the all-time list but not on their individual user list. Fixed. 4-1-07 Created the UserData and Preferences icons for the game. Fixed a bug where the wrong level was displayed after changing the level order. Fixed a bug where the checkmark next to the OTHER... menu item in the LevelSet menu would not appear upon game startup. Got high scores in the game and on the website to display END and WIN. Fixed a bug where both pieces of high score music played at once rather than one for each high score screen. Well it's the end of a very productive weekend. Elizabeth and the kids drove up to Northern California to visit some friends and left me behind to work on MacBrickout. My goal was to get Aim-For-Levels working. Mission accomplished! My tired family just walked in the door after a 9-hour drive. I'm off to find out how their trip was. 3-31-07 I haven't been able to fix the debugger yet. I'm moving forward without using the debugger. I got all of the level thumbnails to appear correctly on the screen. You can't play the level yet though. The level names were stored within the levels as Pascal-style strings. I converted them all over to C-style strings (needed for proper level editor functionality). Aim-For-Levels functionality is back! Got special Aim-For-Levels scoring working. It puts a number sign (#) in front of the level for high scores that were achieved in aim-for-levels mode. It indicates the number of levels completed rather than the highest level achieved. Made it so the gray plaque behind the level name doesn't get drawn if the level doesn't have a name. Made checkmark in Aim-4-Levels menu function correctly. Here's what the screen looks like now: 3-29-07 I've been trying to debug the Aim For Levels code but the debugger kept crashing every time I'd stop at a breakpoint. I did some research on the net and it seems other people have run into this problem. Some said it was resolved with the latest version of XCode (2.4.1). I checked my version and I was running 2.2. I downloaded the new XCode package and installed it. Did a clean build of MacBrickout and tried to step through the code in the debugger. Bah! Same problem. The debugger crashed. I'll have to check through my project settings and make sure I didn't inadvertently set something incorrectly. 3-25-07 I started working on "Aim for Levels" mode this weekend. Here's what my initial screen looks like (yuck): ![]() 3-22-07 Finished the rest of the bonus level features! Yay! I get to take an item off the list. 3-19-07 Got the first 5 menu items in the Bonus menu totally working. Three more menu items to go and the Bonus menu is done! 3-13-07 Worked on getting the Bonus menu to appear correctly when the user designates that a level is going to be a bonus level. 3-12-07 Fixed a bug where if you paused a game and hit command-E to end the game which causes the Are you sure you want to quit sheet to appear, you could then hit command-N to start a new game and the sheet would remain up, blocking your window. 3-8-07 I fixed a long-time bug with the teleporters where moving teleporters would slowly drift downward until they got stuck in the sand. Released version 5.0b14. 3-6-07 I made an interesting observation on the animation hiccup problem today. There is a guaranteed hiccup that occurs at precisely 60-second intervals. The hiccup occurs exactly when the menu bar clock updates. 3-5-07 I've really been racking my brain on this occasional hiccup problem in the game play. Here's a little background on the problem I'm trying to solve: For the best image quality, the drawing of images to the screen needs to be synchronized to the refresh rate of the monitor. Older CRT monitors can have variable refresh rates (typically anywhere from 60Hz to 120Hz) while LCD monitors generally have a refresh rate of 60Hz. So, in the example of an LCD monitor, the image gets refreshed 60 times a second or once every 16.7 milliseconds. All windows on Mac OSX are normally double-buffered. This means that when I draw an image in a window, it gets drawn to a back buffer and doesn't immediately show up on the screen. By double-buffering the windows, the intermediate steps of drawing a complete image are hidden from the user. After all drawing is completed, the back buffer is flushed to the front buffer (the screen essentially) which is when the user sees the updated image. MacBrickout draws all of the objects (background, border, score bar, balls, bricks, capsules, etc.) into the game window's back buffer. It then waits until the vertical blanking period to flush the back buffer to the screen, allowing the updated image to be viewed by the user. The vertical blanking period is the time between the last pixel getting drawn of the previous frame and the first pixel getting drawn of the next frame. The vertical blanking period allows MacBrickout to synchronize its drawing to the computer monitor which has a couple of benefits: First, since the entire playfield is updated (back buffer copied to front buffer) before a new frame is drawn, the user will see all of the moving objects at their most recent location. If I were to update the playfield at any ol' time (say after the top half of the playfield has already been drawn), then any object on the bottom half of the screen would get redrawn in its new location right away but any object on the top-half of the screen wouldn't appear at its new position until the next time the screen got updated (approximately 16.7 milliseconds later), which results in a noticable discontinuity in the movement of objects such as balls and capsules. The other benefit in synchronizing the drawing to the computer monitor is power savings. If MacBrickout didn't synchronize its drawing to the display, it could easly crank out 300 frames per second. The problem is, since the display only updates at a rate of 60 frames per second, many of the frames would get drawn and then redrawn without ever getting displayed. You end up burning more CPU cycles which makes the fan run more and ultimately drains the batteries faster (in the case of a laptop computer). It's only necessary to update the image as fast as the computer monitor refreshes. Any faster and you waste CPU cycles. Any slower and the movement of objects starts to get jerky. So MacBrickout renders the playfield to a back buffer, waits for vertical blank, and then flushes the back buffer to the screen, over and over again. Most of the time this works great and the moving objects are very fluid on screen. Occasionally, (once every 15 seconds or so) MacBrickout doesn't get a vertical blank notification. Without that notification, a new frame doesn't get drawn so the old frame remains on screen. The objects are frozen in the position they were in when the last vertical refresh notification came through. Several hundred milliseconds elapse before the next notification finally comes. When that notification comes, MacBrickout calculates where the objects should be now (given how much time has elapsed) and redraws them in their new location. Since so much time has passed, the new location could be several centimeters away from where it was last seen on the screen. The user sees the objects suddenly pop to a different spot on the screen forcing them to make a quick adjustment to the paddle often resulting in a missed and then lost ball. The vertical blank notification comes from the OS and for some reason the OS is occasionally failing to send that notification in a timely manner. OSX is a multitasking operating system. Each process that runs gets a sliver of CPU time to do what it needs to do. The kernel (the very core of the operating system) controls the amount of CPU time used by each process. A process can request a higher CPU priority and the kernel will do its best to honor that request. When you start a new game, MacBrickout specifies a very high CPU priority so that gameplay won't get interrupted by other processes that are running such as iTunes, AOL or anything else the user might have running in the background. As soon as the game ends (or if the user pauses a game), MacBrickout drops back down to normal CPU priority. Even with a high CPU priority, the several-hundred-millisecond lapses still occasionally occur. I have searched the internet for clues. I have found that many other developers have run into this problem. One even noted that Apple's own example code, when built into an Application, suffered from the same occasional hiccup in animation. Nobody, as far as I can tell, has solved it yet. Discouraging. At this point, I think I will take a break from this problem and focus on the other tasks on my list and then maybe come back to this one with a fresh outlook. Hopefully a little time will be all I need to come up with a solution... 2-4-07 Fixed a problem where the paddle would lag behind the mouse movement. The problem would progressively get worse each time you started a new game. Fixed a cosmetic issue where the window title would be gone when returning to windowed mode from full-screen mode. Fixed a problem where the paddle would freeze while you held down the right mouse button or the center scroll wheel button. Made the text in the end game confirmation sheet localizable (so that it can be easily converted to other languages). The rest of the game's text has already been converted. Ok, I think all of the memory leaks have been plugged. Released version 5.0b13 2-3-07 Fixed a ton of memory leaks. A memory leak is when some part of the application allocates memory to use for something but then never releases it when it's through. If you have a leaky routine that gets called frequently, it can keep eating up more and more memory as the application runs. When I was learning to program Cocoa, I apparently allocated a bunch of data structures and never released them. Fixed now. Made some headway on the gameplay smoothness problem. Still have occasional hiccups though. Superbowl tomorrow. Looks like I get a whole day to program :-) 2-1-07 Spent the past few days trying to track down memory leaks. I suspect it's a memory leak that's causing the occasional stutter in the game... 1-28-07 Spent the day trying to track down an occasional hiccup in the movement of objects on the screen. I think the problem was always there but became more apparent once I got everything moving so smoothly. 1-27-07 Made the game remember the previous display settings so you don't have to reset the display each time you start up the application. Fixed a problem in the high score comments where all text after a comma would get truncated. Fixed a problem on the online high score list were too many awards were getting displayed. Made significant progress in getting the movement of the objects to be smooth. Released 5.0b12. 1-26-07 Made the game automatically pause if it gets switched out for some reason (command-tab for instance). Released 5.0b11. 1-24-07 There's one bonus level in the Mania Levels set that gives you an insane number of balls. So many in fact that it would cause the game to crash. I located the source of the problem and fixed it. 1-21-07 Fixed a rare bug where sometimes the ball wouldn't drop when you started a new game (you had to pause and then unpause the game to get the ball to drop). 1-20-07 Fixed a bug on the online high score list where sometimes blank lines would get inserted. It happend when the user typed a carriage return when they entered their comments. 1-19-07 Fixed a bug where some of the fruits in the border overlapped others. Played around with the CPU priority and thread scheduling of the application to try and resolve the jumpy gameplay issue. It seems better but we'll have to see how it does on various machines. Found and fixed a bug where the display was getting flushed twice per game frame making a lot of extra work for OpenGL. This should improve frame rate and yield much smoother game play! Fixed a couple of bugs pertaining to the falling paddle. 1-17-07 Released 5.0b10 which should take care of the the crazy game speed problem. I think I've got the crashes under control now too. I'm looking into a problem with the high scores on the website. Sometimes when people submit their scores, a blank line appears in the high score list. Subsequent scores get inserted into the list at the wrong location because of the blank line. I added some debugging code to help me trace down the cause of that problem (I just need more registered users to submit their scores). I'm hoping to resume working on my top 10 programming tasks soon... 1-14-07 Fixed a bug where the game would sometimes get confused and reverse the interpretation of the mouse button causing the paddle to not move unless the mouse button was held down. It seems the game was not reliably receiving "mouse up" events. Fixed a problem where sometimes the game would end after completing the first level. 1-13-07 I found a problem which could have caused the game speed up problem. Not sure if it's *the* problem yet but we'll see. Working on a fix... OK, fixed it! I think this solves the game speed up problem. Waiting on feedback from some users... Rats! It looks like the problem is still there but not as bad as it originally was. Back to the drawing board. [some time passed] Ok, I got the problem fixed now. I got positive feedback from one tester. I'll scratch this bug off the list once I hear good news from a few more testers. 1-12-07 I've been able to duplicate the bug where the game speed is way too fast. I had to boot my G4/450 into OS 10.3.9 in order to get the bug to exhibit itself. The game works fine on the G4 running 10.4.8. Haven't solved it yet... 1-8-07 I got one of the crash bugs fixed. If you didn't have a particular font installed, the game wouldn't know what to do. Now the game will gracefully proceed without crashing if the font is not installed (it's just that you won't see the level names in the levels). On to more bugs... 1-5-07 I'm focused on tracking down the crash problems and game speed problems. I'll post a new version (5.0b8) once I get these issues resolved. 1-4-07 I'm looking into the problem where the game runs too fast for some people. I recorded a short quicktime movie showing the game being played and posted it here. That way, people can compare the speed of the game on their machine with the speed on my machine and see how far off it is. Got rid of a spurious Preferences menu item. Worked on making the game remember the user's screen size preferences. 12-28-06 Several people have downloaded the game and for the most part it's working for them. A few people are having crash problems (crashes upon opening the game, crashing upon entering beta enable code, crashing between levels, etc.). I'm hoping these crashes are all related. A few people are having a problem with the game running too fast. I'm not sure why yet. More investigation necessary. 12-24-06 The beta is pretty far along now. There's more work to do on the level editor (handling bonus levels and making it so you can add and delete levels from a level set). Aim For Levels mode needs to be worked on and completed. The game is a little choppy on older macs and I'll need to investigate that. I've decided to make the beta available to those who absoluely can't wait any longer. Simply contact me at the e-mail address listed on the Ordering Info page on this site. I'll send you a link where you can download the beta. Happy Holidays! 12-17-06 Arrange Levels is finally done! Whew. For some reason, I really struggled with that one and it wasn't really that difficult of a task to complete. I must have gotten a little discouraged when that task popped up unexpectedly and then the problem got compounded with the limited time I've had lately (DVD project, crazyness of the holiday season, etc.). Well it's finally done. Now I just need to remember what I was supposed to do for the next task: Bonus Level Features... Ah, OK, figured it out. In the level editor, when you're editing bonus levels, there's an extra BONUS menu where you can set various bonus level attributes (time limit, no bubbles, full paddle range, etc.). I'm on it! 12-13-06 A few hours of programming time. I got Arrange Levels mostly working; you can move levels up and down in the list and you can restore the original level order. Right now the game gets confused between bonus levels and regular levels. If you rearrange the regular levels, the bonus levels get rearranged the same way. I'll fix that next. I'm thinking about letting people still post high scores even if they've rearranged their levels. Maybe there's a certain level order that allows you to get higher scores.... 12-9-06 I finished my DVD project. What a delight it was to use iMovie. I ended up making a 45-minute movie with all kinds of trick transitions, effects and lots of music. The program effortlessly handled about 26 gigabytes of data and never crashed. I struggled with iDVD (it burnt partial DVDs and then spit them out) and finally I figured out I needed to create a disc image with iDVD and then do the actual burn with Disc Utility. I'm back on MacBrickout now. Made some headway on the Arrange Levels task. I got MacBrickout to display the levels in a different order. Now I need to make it be able to change the level order using the Level Jump dialog box. 12-7-06 I haven't had any time to continue working on MacBrickout lately. I seem to have gotten caught up in the chaos of the holiday season. Back in July, we had an enjoyable and memorable family reunion in Tennessee. Since then, I've been working on an iMovie that I plan to give as gifts during the holidays. Time is drawing near and fortunately I'm almost done. I have a few more DVDs to burn and I need to finish up the artwork for the DVD labels and inserts. I estimate 2 more days. Afterwards, I expect to be back on MacBrickout. 11-23-06 I got a crash report today. I made a special build to help isolate the cause of the problem. I've been putting some thought into how to approach the arrange levels task. Originally, once a user rearranged the order of the levels, it would invalidate the level set meaning that the user could no longer post high scores. There was no way to revert the level set to its original order and restore the valid status. The only option was for the user to re-download the game. I want to make it easier for the user by having some sort of "restore" button that would put the levels back in their original order. To do so, I need to make some minor changes to the level map file (which specifies which levels are in the level set and what sequence the levels occur). 11-20-06 I got lots of feedback from people regarding the 10.3 vs. 10.4 issue. Thanks for voicing your opinions. Most of you opted for me to forget about 10.3 and just make the game compatible with 10.4 and up. There were just a few people that requested compatibility with 10.3. Your arguments were convincing though. I decided to give it one more shot. With the help of a friend of mine, I managed to achieve compatibility with 10.3! So this issue is over. MacBrickout will work with 10.3 and up. On to Arrange Levels... 11-19-06 I took a break from MacBrickout for a few days. I'm back now. I'm having some compatibility issues with OS X version 10.3.9 (and earlier). I'm considering making the game only work on OS 10.4 and higher. 10.5 will be out soon and I can't imagine there being a lot of people still running 10.3. Let me know. It would sure speed up the release of the game if I could forget about 10.3... 11-12-06 Got background image saving capability working. Level save capability is now working. Argh. I forgot about the "Arrange Levels" dialog box that lets you rearrange levels and add new ones that you created. I'll start on that next. Mania Levels borders are fixed so I'll take that off the list. 11-11-06 Successfully scaled down the playfield to a 100x75 thumbnail and saved it in a level! The resulting image looks great! Now I need to save the level's background image. 11-9-06 Level naming capability has been implemented! Started working on the level save capability. Got most of the level save functionality working! It doesn't yet save the level thumbnail (which shows up in some level editor dialogs and in Aim-For-Levels mode). Looking into creating the level thumbnail using OpenGL... Hey, it looks like I got the Cocoa version of MacBrickout up to the point where the Carbon version left off on 4-20-05. Let's see if I can tackle these thumbnail images this time around! 11-8-06 Border Attributes functionality is complete. I decided to skip "Sound Management" and "Apply Texture From Background" for the time being. They're not critical features for being able to edit levels. 11-6-06 You can now add textures to the game. Got the remove texture functionality working. Texture management is complete! For those of you who are wondering, textures are pictures. If a brick is a solid color, then it's "flat shaded". If there's a picture or pattern on the brick then it's "textured". Texture Management deals with how the game keeps track of the various textures within a level (bricks, borders and backgrounds). Populated the Border Attributes Dialog. 11-4-06 Got the "Set Background Pattern" menu item working. Made it so the user can pick 1 of several different image formats. Populated the Texture Management dialog. Made it show a list of textures in the game. You can click on each texture name and see the selected texture appear in a little imageView area. Started working on the ability to add textures to a level. 11-3-06 Fixed a bug where invisible bricks didn't show up in the level editor. How funny. Fixed a bug where textured bricks would disappear when you selected them. Fixed a bug where textured bricks didn't highlight correctly in the level editor when selected. Fixed a problem where a brick would show up with the old texture even after you changed its texture in the level editor. 11-2-06 Finished the Teleporter Attributes Dialog functionality. Populated the Gate Attributes dialog. Finished the Gate Attributes Dialog functionality. Made it so you can option-click on gates to rotate them 90 degrees. Same with the trigger switches. Populated the Trigger Attributes Dialog. Implemented the functionality of the Trigger Attributes Dialog. SWEET! I'm done with all of the attributes dialogs! Got the "Select All" Tools menu item working. Got the "Center Selection" menu item working. Got the "Duplicate Selection" menu item working. Got "Add Ball", "Add Fruit" and "Add Vegetable" working. Got "Add Teleporter" working. Got "Add Gate" working. Got "Add Trigger Switch" working! Insane progress today! My fingers are sore. 11-1-06 Got the cage rectangle working. The cage rectangle specifies an area where a ball cannot destroy bricks. That's what allows the bomb ball to bounce around inside the "O" in the HELLO level. In the level editor, you can now grab an edge of the cage rectangle to resize it, or if you grab it from the center, you can drag the entire rectangle to a new location. Made it so you can delete a selection by hitting the delete key. Made it so you can move a selection one pixel at a time by using the arrow keys. Got the Teleporter Attributes dialog populated. Started working on the functionality. Fixed a bug where the 25,000 bonus was actually giving you 50,000 points! 10-30-06 Finished the Brick Attributes Dialog!! Whew, that was quite an effort. There's a lot of stuff going on in that dialog box. I'm glad it's finished. I blasted through the Ball Attributes dialog so that's done too. Great progress today! Trick-Or-Treating tomorrow so probably not much progress. 10-29-06 Made great progress completing the functionality of all the items in the Brick Attributes dialog box. Well, everything except the OK button. When you hit the OK button, it has to save all of your changes to the brick (or group of bricks) that you selected. I got about halfway through implementing that functionality. Hopefully I can wrap up the Brick Attributes dialog tomorrow. 10-28-06 Fixed a bug where the red-X capsules sometimes moved upward too slowly in the Be Happy bonus level. Got the brick textures to appear in the Brick Attributes dialog. Made a texture attributes sheet that allows you to select different brick textures. I expanded out my level editor programming tasks in the top-10 programming tasks list and have sorted the tasks roughly in the order of highest complexity to lowest complexity. I've got a day or two left on the Brick Attributes dialog. The rest should go a lot faster. 10-27-06 I've been continuing work on the Brick Attributes dialog -- specifically getting the brick textures to appear. I need to expand out my list of level editor tasks so you guys can get a better idea of what I'm working on (rather than seeing Level Editor at the top of the list day after day. I'll try to do that in the next day or so. 10-25-06 OK, the entire Brick Attributes dialog box is initialized with the correct values whenever you get info on any brick. Now I need to make it behave properly when selecting groups of bricks. Also, I'll need to write any changes made by the user to the affected bricks. Fixed a bug where the game would hang if you completed the last level. Added an End Game confirmation dialog. 10-24-06 Got the capsule checkboxes working in the Brick Attributes dialog. Filled in the width, height and number of hits text fields with the correct values. Got the Layer Popup menu working. Got the color wells to display the correct brick colors. Fixed the OK button in the help/shareware dialog box. Added Gold and Gray color wells to facilitate making gold bricks and gray bricks. Made the All and None buttons in the Brick Attributes dialog function correctly. 10-23-06 In the level editor, I made it so you can click on an object and highlight it. Got the group selection rectangle working. Made it so you can select a group of objects and drag them around on the screen. Got New Brick menu item working in Tools menu. Got New Row menu item working. Made Brick Attributes menu item active. Populated Brick Attributes dialog. Began working on functionality of each item in that dialog. 10-22-06 Ported entire level editor module over to the Cocoa project. Got CANCEL, ABORT menu item from the Tools menu working. Fixed a bug where no capsules would fall in the following level after completing a bonus level. Thanks Tony! 10-21-06 So far the Beta is stage is going great. Several minor issues but nothing really major. Dove into the level editor. I populated and added the Tools menu to the project. Modified the Level Jump dialog to have a table which lists all of the levels in a level set rather than a popup menu. Made the Edit button exit the level jump dialog and activate the Tools menu. Now I need to start activating each item in the tools menu... 10-19-06 I made significant progress using Photoshop and Dreamweaver... Fixed a few small bugs. Moved the Frequent Players menu item back to the High Scores menu. Started reviewing the level editor tasks. 10-17-06 Wow. What happened to yesterday? I've been extremely busy the past few days keeping up with the bug reports and fixing bugs. I'm making fantastic progress! 10-15-06 Still looking into the frame rate problem. I noticed that some of the objects in the game vary in speed depending on the frame rate. Not good. At high frame rates, the capsules spin too fast, the lasers shoot too fast (hmm. that's kinda cool), the teleporters swivel too fast and the "Get Ready" text falls too fast. Fixed the capsules. Fixed the umphee and fruit rotational velocity. Fixed the teleporters. Fixed the Lasers. Fixed the GET READY text. Fixed a problem where the game could potentially come up with a black screen (because it couldn't find the level set). Fixed a problem where the gates opened and closed too fast. Fixed the clean sand bonus which happened too fast. 10-14-06 Updated the registration process on the website so that it instantly gives the user their enable code rather than making them wait for an automatically generated e-mail that may or may not arrive. Started looking into the only bug reported so far: Jumpy frame rate. 10-13-06 Released a beta copy of MacBrickout to a very small number of people. Now I'm waiting for feedback. 10-12-06 Added Jump To Level dialog box. 10-8-06 Worked on preparing the application for beta release. Lots of little things to address. 10-6-06 Spent quite a bit of time on the display stuff. I really fought with the OS trying to get it "just right" but ended up losing the battle. If you go to full-screen mode and then return to windowed mode, any other application windows that are open will get resized. The only way I can see to keep that from happening is if I "Capture" the display first, before going to full screen mode. Unfortunately when I capture the display, it prevents the menubar from appearing which means if you paused the game in full-screen mode, there would be no way to select any of the game's menu items (unless you remembered the command key equivalents). I opted to go for the lesser of two evils and not capture the display. Another battle I lost is when you go back to windowed mode from full-screen mode, the game window is positioned partially off of the bottom of the screen. At some time after I return to windowed mode, the operating system puts the window there. Even if I place the window in the center of the screen, it still gets slammed to that same spot off of the bottom of the screen. Frustrating. There are some extreme measures I could take to programmatically reposition the window but for now I think I'll just leave it. It's not too big of a deal to manually drag the window to a preferred spot. Besides, I'm burnt out on display stuff and want to move on to other things :-) Started working on the secret menu. Fixed a bug where you could advance past the last level and crash the game. Knocked another task off the list. Now I need to clean things up and prepare for a beta release! 10-5-06 Made good progress on full-screen mode. I can now switch out of full-screen mode back to windowed mode but there are still a bunch of little issues to resolve like restoring other windows to their previous locations and sizes. 10-4-06 Got several window sizes working. Added those selections to the Diplay menu. Got full-screen mode to work but some effort is needed in order to get the game window centered on the screen and to provide an option for the user to stretch the playfield to fill the screen entirely. Also played around with single-buffered vs. double-buffered openGL contexts. In double-buffered mode, there's no tearing of the images as they get drawn but there's a small noticable lag in the paddle movement. In single-buffered mode, the paddle feels solid but sometimes you see tearing in the images as they get updated on the screen. I may end up adding a preference setting so the user can decide which they like better. 10-3-06 Made it so you can resize the game window by dragging the bottom corner of the window. Kinda neat to play the game all stretched out in one direction. Figured out how to determine the size of the display the game window is currently on. I will use this information to dynamically populate the display menu with allowable playfield sizes. 10-2-06 Researched what needs to be done to support various display modes. The code will need to provide the user with options to play the game either in windowed mode or full-screen mode. Each of those two modes needs to support various playfield sizes (640x480, 1024x768, etc.). 9-28-06 Disabled certain menu items like 2-player mode, beginner mode, etc. when the game is in progress but paused. Fixed the problem with the paddle starting out slammed to the right wall. Updated the New Game menu with correct information after the user adds or removes a frequent player. Made sure the game counter wasn't getting overly incremented. Fixed the problem where the balls became uncaged upon resuming a game. It was a timer issue. The game thought a huge amount of time had elapsed and thus set the ball's position too far ahead making it go outside of its caged area. I noticed that the game is still pretty jumpy on PPC macs (G4/450 in particular). Ported over the old MacBrickout code to set the application's CPU priority higher to see if that smoothes things out. Got the permanent fruits and veggies working again. 9-27-06 Got the registered features wrapped up. On to other things... There was an issue where the sand looked bad on PowerPC macs. It was an endian issue. Fixed. Got the game save feature working again! 9-26-06 Fixed the problem where you can end the game more than once. The menu item is now properly enabled and disabled when it should be. 9-21-06 Made significant progress today! 9-19-06 I've been working hard on the registered features. Still have several more days of this... 9-14-06 Got the monthly high scores linked to the main site. Got the NSFormatter figured out. When a user gets a high score, they're limited to typing 32 characters or less for their name. 9-13-06 Made major progress on the server side coding that manages and allows me to administer the online high scores. Linked the Mac online high scores to the main website (you can now hit the high scores button and see them). The player2 selection dialog box is up but I need to populate the popup button. Popup button populated! Player 2 selection dialog box is working. 2-player functionality is totally working! Now how do these NSFormatter thingies work? 9-12-06 Found some problems with the high score stuff. Got it all fixed. Got the monthly high score list working. Got the "Didn't start from level 1" dialog box working. Started on the player 2 selection dialog box. 9-11-06 Two player mode is mostly working. I still have some work to do on the dialog box that allows player 2 to select their name. I should get that wrapped up tomorrow. 9-10-06 Got correct user name to appear in the sand in two-player mode. The "Player 2 Have a seat" dialog box is partially working. Spent the rest of my weekend cutting off a 40-foot section of rotted wood from my roof. Next weekend I'll probably need to devote some time away from MacBrickout to repair the area with new materials. All in an effort to get things patched up in time for our rainy season (which usually amounts to 1 single day some time in November). 9-9-06 I reordered the bit positions for the achievement awards on the website. I had to change them in the game to match those on the website. Fixed a bug where if more than the maximum number of capsules were spawned, the game would crash. Made "25000" rise up from the paddle if you got the "twenty-five-thousand" bonus. 9-8-06 Made the world record submit button only appear when the user has selected the "All Time" high score list. Got "Two Player Mode" menu item working. Made killer progress on the High Scores website. It's pretty much done, functionality wise, but needs more testing and a few small bug fixes. 9-7-06 Got the alternate level set selection stuff totally working! All-time achievements are working. Another item off the list! Make that two. Got beginner mode working. Verified that the pearl ball gets stamped into border. Got the "Resume Game" menu item working under the FILE menu. Wrote a ton of php code on the website that will be used for accepting high scores that people submit directly from the game. Got some very basic communications between MacBrickout and the website working. Built a universal binary of the app. The Intel version works great. The PPC version has a few issues. :-\ Lots of progress today. I'm getting close to where the Carbon version left off. 9-6-06 Added "Other..." to LevelSet menu. This is where people will be able to load user-created levels. The functionality isn't there yet. Added an "Open File" dialog box. Spent the rest of the evening researching how to turn a folder into a "document package" but no luck so far... Ha! Figured it out. Made a cool custom icon for the level set files. Made the open-file dialog box only recognize LevelSet files. Tomorrow, I'll finish up the alternate level set work (and double-check the all-time achievements). 9-5-06 Something just didn't look right with the high score achievement icons. Turns out there were 3 problems. There was a bug in my code which caused the blue component of the image not to render correctly, The OS was antialiasing the images which made them look fuzzy and it was scaling the images to be about 8% smaller than they should be. Fixed. Now the achievement icons look splendid! Noticed that the player wasn't getting any of their bonus completion achievement icons. Fixed. Currently there are 26 items remaining on my programming tasks list, the last one being "BETA". Ok, so user achievement icons are done. I'll probably attack the all-time achievement icons next (since I'm already in that area of the code). Not tired yet. Went ahead and tackled the all-time achievement icons. I can force them to show up in the high score dialog. I'll have to play a game and earn some and see if they show up on their own. Now I'm tired. I'll try that tomorrow. 9-4-06 Got the user achievement icons to appear in the high scores dialog! That was tricky. I had to tell the NSTableView that its last column was to draw an image instead of text. Then I had to generate 10 images (one for each row in the high score list) that contained all of the achievement icons for that row. Played a game. Got 172,776 points! (using a trackpad!). Scored two achievements and both appeared in the high score dialog after the game. Sweet! 9-2-06 Set the app's main thread priority to 0.9 (out of 1.0). As a test, I had iMovie playing in the background while I played a game of MacBrickout in the foreground. Both ran smoothly. Got Aim For Levels menu functionality working (puts a checkmark next to the menu item when you select it & puts the game in "Aim for Levels" mode. No level thumbnails are drawn yet though. Hmmm. Got a little further into it and found that the data format of the special "Aim for Levels" level is very old (circa OS9). I really need to be able to open it up and save it out in the new format before I can use it which means I need to get the level editor working first. I'll hold off on Aim For Levels until after I get the level editor working again. On to user selectable level sets! 9-1-06 Started researching thread priority stuff (this is what gives MacBrickout higher CPU priority while it's running so that the game doesn't stutter while other stuff is running in the background, such as iTunes). Added command key equivalents to the frequent players in the frequent player menu. 8-31-06 Created a generic User Notification class that allows me to pop up a dynamically configurable dialog box to notify the user of various things. So yeah. The Secret notice is working. On to Thread priority... 8-30-06 Got the bonus completion dialog text working. Got the images working too. The bonus completion dialog is done! 8-29-06 I decided that I'm ok with the way the sand looks for now. I'll go ahead and cross it off the list. Did some code cleanup. Figured out why the game was freezing after completing a bonus level. It was because there's no Bonus Completion dialog box yet. Started working on the Bonus Completion dialog. Got a skeleton dialog box up. It doesn't specify the text of the prize you won nor does it display any of the prize icons. The OK button works though! <Yawn>. Will pick it up again tomorrow. 8-28-06 Made some good progress on antialiasing the sand. I ended up using an 8-bit alpha channel in OpenGL which required me to re-photoshop my original sand image to include the alpha channel. Getting OpenGL to render it was a cinch. Getting the edges of the sand to look smooth and not fuzzy or giving off a radiant glow was the hard part. I'll take another look tomorrow. If I still like it then I'll call it done and move on to the next task. 8-26-06 Fixed some bugs in the border rendering code that cropped up whenever textures were used whose widths weren't evenly divisible by the width of the border area being drawn. Whew! It was about as tricky to type as it was to fix! Fixed the problem with the backgrounds that I noted yesterday. This also happened to fix the messed up background on Bonus level 1 so I get to kill another programming task from the Top Ten Programming Tasks list. I cheesily antialiased one-third of the sand. It looks pretty bad but at least I got the openGL alpha-blending stuff figured out. Now I just need to learn how anti-aliasing algorithms work... 8-25-06 Got the user's name in the sand. I just realized that all of my backgrounds are upside down! It's not really noticeable until you get to the "pipes" level and then it really looks obvious! 8-24-06 Got the little plaque working again that displays the level name (near the top of the screen). That was hard. I had to create a temporary off-screen buffer and draw two gray circles and a rectangle between them (to create the backing of the plaque). Next, using a certain font, I drew the level name on top of the plaque. As a final step, I converted that buffer into an OpenGL texture and uploaded it to the graphics card so it can be displayed in the level. Putting the user's name in the sand should hopefully be a lot easier. 8-23-06 Created the Player menu which hangs off of the File->NewGame menu and shows a list of frequent players. Made it so you can select any person in the player menu and start a new game as that person. Made it so when the game is over, your high score gets saved in the proper list. Got the game counter working for the frequent players. The end-game high score music is now working. Made the most recent score highlight in red. Folks, the high scores are pretty much working. I need to draw the achievement icons still but I'll come back to that later. 8-21-06 Created the "You got a high score" dialog box. Made it so the box comes up with the last high score text the user entered in the text entry box. Made the box pop up at the end of the game if the user's score is high enough to go on a high score list. Made the regular high score box pop up after the user completed entering their name. The high score box doesn't show any high score information yet. Created the picture that goes at the top of the high score box. Got most of the high scores dialog working. It shows the rank, name, level, score and date of each user's top-10 scores. It does not yet show the user's achievement icons or the all-time achievement icons. The game counter works. The world record submission button does not. The user-popup menu works, allowing you to show the high scores from each user. Now I need to make it so that you can start a game as a user other than "guest" which means I need to add a submenu to File->New Game 8-20-06 Got the Frequent Players dialog totally working! 8-19-06 Still working on the Frequent Players dialog box, creating the frequent players database and updating the database when users are added or removed. In the old days, I used to store the high score information inside the Level Map file (which is part of a level set). I decided to move the high score data out of the level map file and put it in a more appropriate place which is the userData file. This requires me to change some data structures around in the user data in order to accomodate the additional high score information. 8-17-06 Got further into the high score stuff and realized that I needed to get the Frequent Players stuff working too since the two are so tightly integrated together. Got the Frequent Players dialog box up. It contains an NSTableView that just shows some placeholder names at the moment. Did some major (and much needed) reorganizing and cleaning out of file.cpp. It's much easier to find a particular function I'm looking for now. Ported over several functions that get and save user data. 8-16-06 Added checkmarks to the level set menu. Made the menu function correctly (populated with Standard Levels checked) the first time the game is run (when the preferences file is created). The only thing left for the level set menu is to add file browse capability so people can load their own custom level sets. I'll come back to that later. Started working on high scores. Got a skeleton High Scores dialog box up and running. All you can do right now is view it (no scores content yet) and hit the OK button to make it go away. 8-15-06 The level set menu is working!! Made the game save the current level set in the preferences so that level set will return next time you start up the game. 8-14-06 Populated the LevelSet menu with the names of the three default level sets. Nothing happens yet when you select any of those items. 8-13-06 Got the preferences system working. Made it so whatever sound settings you select are saved when you quit the game, then they are restored next time you start up the game. Positioned the About Box in the center of the game window. Positioned the Help/Shareware box in the center of the game window. Played a game. Got to level 2. 40,154 points. Fixed a bug where the paddle would jump when you resumed a game (because all of the mouse deltas that occurred while the game was paused were remembered). 8-12-06 Got all of the game sounds loaded and decompressed. Now I can play any sound in the game! Now I need re-implement smart playback where a sound will replace itself if it's already playing rather than have the same sound being played multiple times (sounds weird especially with the bricks and the lasers). Got Smart playback working. If a sound is already playing, it'll just start the sound playing over again. Otherwise it'll start a new sound playing. Added ribbit sound to about box. Got cued sounds working (where you can cue a sound to be played at some point in the future). Added level completion sounds and bonuses (still need to do the bonus prize alert though). Got "Normal" and "Wacky" effects working in the Sound menu. Added a new "Strange" effect. Hey! First new feature! Got all the volume menu items working. Got the checkmarks working in the sound menu. Started working on the preferences... 8-11-06 Fixed the caught ball problem. The ball now sticks to the paddle as the paddle moves. Noticed that lasers had the same problem. Fixed. Got "Game Over" working again. Made the cursor reappear after the game. Made it so you can cancel "catch" mode if you hit the C key during gameplay. Added the end game command "CMD-E". The fruit X and Y coordinates were swapped causing the fruit to appear in the wrong place on the screen (and sometimes off the screen entirely). Fixed. Restored the functionality that draws the next level after you complete a level. Figured out how to lock the cursor to the center of the game window so the player won't inadvertently click outside of the window sending the Finder to the foreground and MacBrickout to the background. I really need sound. I can't take it anymore! Researched several sound technologies including NSSound, CoreAudio (audio units), OpenAL and QuickTime. Decided to settle on OpenAL because it's cross-platform and looks pretty simple to use. Downloaded some Apple sample code and played around with it. Figured out what methods I needed in MacBrickout and implemented them. Started up the game and instantly heard some of the old familiar game sounds! Right now, there's just 4 sounds and they loop forever. Next step is to tie the sounds to actions that happen during gameplay. Getting close! I'm glad I already converted all of those sounds way back in May! 8-10-06 Finished reconfiguring paddle.cpp. Compiled. Ran. The ball dropped into the sand. No paddle movement. Bah! Took another look at paddle.cpp. Oops. I accidently constrained the paddle to a single point! Fixed. Now the paddle movement region is a rectangle situated at the lower portion of the playfield. Compiled. Ran. The ball is falling... WE HAVE DEFLECTION! The paddle moved! Here comes the ball again. Missed! Rats. THE UMPHEE SAVED THE BALL! Still in play! 3 capsule! Mult! Too crazy. Lost 'em all. 16,304 points that game! Well the game is actually playable now although the user interface is still extremely fragile. I need to get "Game Over" working again. I noticed when I caught the ball it didn't follow the paddle but instead remained frozen on the screen in the place where it was caught. My cursor was gone when the game ended. I really need sound... 8-9-06 Learned how to disassociate the cursor from the mouse. Also discovered how to turn off mouse scaling (or mouse coalescing). Both are done by calling CoreGraphics routines. Now I'm updating paddle.cpp so that the AppController module can pass new paddle coordinates to the paddle once per game frame. Progress, but I still don't have a moving paddle. My high score so far is 204 points. I got that by exploding the bomb ball to get some Multiplier points and then having the green ball mosey over to my stuck paddle. Fun. I need sound... 8-8-06 Spent the evening trying to figure out how to disassociate the cursor from the mouse so that I can lock the cursor to the center of the game window. That way, if the user clicks the mouse button, the cursor won't be outside the window, causing the application to lose focus. Also researched how to disable mouse scaling. I need to be able to get raw mouse deltas, not scaled by whatever speed setting is in the user's system preferences. No success on either front. I did learn the Cocoa way of hiding the cursor though. 8-7-06 Learned about NSEvents. Got keyboard input and mouse button input working again. Made it so the space bar pauses and unpauses the game. Made it so that the button explodes the bomb ball. 8-6-06 Found a method to determine how many microseconds have elapsed since the computer started up. I can use that to keep track of the time delay between game frames. Rewrote timer.cpp to use the new method. Compiled and ran the program. Hey! The "Get Ready..." text appeard and fell into the sand at the proper speed. Afterwards, the ball appeared and fell to the sand (also at what appears to be the correct velocity). The paddle didn't appear. Also, the ball should have appeared as soon as "Get Ready..." appeared but it didn't show up until after the text started falling to the sand. Hmmm.. I also saw a musical note bouncing on one of the bricks (good sign). Debugged and got the ball, paddle and umphee to appear correctly. I can't move the paddle yet as the routines to get user input have to be rewritten for Cocoa. Then I need to work on the sound. 8-1-06 To do a periodic timer in Cocoa, you use an NSTimer. It looks like for game loops, people are setting the timer to fire once per millisecond (0.001 seconds). It also looks like people have issues with an NSTimer not firing when it's supposed to (because the CPU is busy doing other things when the time interval elapses) which causes jumpy display updates. I think I'll start out using an NSTimer just so that I can get the game animation working again and then decide how to proceed based on what performance results I get from the NSTimer. Got the NSTimer working. Put in the old game loop function calls (BeginGameSequence() and RunGameLoop()). Got lots of compile errors. Had to stub out a lot of calls that aren't working yet such as stuff that processes game sounds and user input from the keyboard and mouse. Hmmm, just about every sprite module needs to know how much time has elapsed since it was last called so that it can calculate the velocity of objects (balls, falling capsules, umphee, etc.). I need to research the Cocoa way of determining how many milliseconds (or microseconds) have elapsed. 7-31-06 Finished the border rendering code. I added code to render flat-shaded borders. Got rid of all of those grapes. I think I'm ready to start getting the gameplay working again. I'll need to learn how to set up some sort of Cocoa timer to run the game loop... 7-30-06 I've spent a long time contemplating how to get the border working again. In the old days, I kept the border textures around in the game. When some object was drawn in the vicinity of the border, I would redraw only that portion of the border that got uncovered by the moving object using the texture data at hand. OpenGL is different. In OpenGL, I just redraw the entire border unconditionally every game frame. The border textures are no longer kept around in the game because they are uploaded to the graphics hardware and used solely by OpenGL. I also had to solve a problem regarding identifying textures by their offsets (the old way) and identifying them by their OpenGL ID (new way). Finally, I was lightening and darkening the textures in code (right wall is brighter, left wall is darker). Today, I figured out the proper OpenGL calls to achieve the same effect (using a lot less code!). The end result looks almost like the original MacBrickout! I just need to get rid of all of those grapes in the border! Here's what it looks like now: ![]() 7-15-06 Ok, NOW the shadows are really working. I thought I got them working a week ago but I noticed that whenever two shadows overlapped, the area of overlap would be even darker which doesn't look good. I ended up turning on the OpenGL stencil buffer, rendering all of the brick and sprite shadows to that buffer, then drawing one giant alpha-blended polygon that fills the screen, using the stencil buffer to dictate where on the screen it actually gets drawn. So now the shadows are working. Back to the border. I wrote a temporary routine to display all border textures on the screen so I know they got loaded. Now I just need to position them in the correct locations. 7-9-06 Got the sand working again (the bottom region of the border)! Here's what it looks like now... ![]() 7-8-06 Got shadows working again! Now it's time to work on the border. 6-30-06 Got the background working again! Now I'm working on getting the shadows back and the border... 6-29-06 Got the bricks oriented correctly. Started working on displaying the level background. It never got ported to OpenGL so this will take a good amount of effort. 6-28-06 YEAH! I got the very first MacBrickout screen up in Cocoa! Um... But the bricks are backwards and pointing the wrong direction. No sand. No background. And what's up with all of the grapes on the sides?!?!? Well at least the screen is up and now I know I was able to successfully open a level file and read the data out of it (because the bricks are the right colors and are positioned correctly with respect to each other). So now I can go back and fix each thing that's not working.
6-26-06 Got most of Level::Draw() to compile and run. Worked on separating out the cross-platform OpenGL stuff from the platform-specific code. Successfully loaded a level map file and a level file. The code goes through the motions of drawing the level but I'm still not seeing the level on the screen. Bah! 6-23-06 Continued working at porting preferences.cpp and file.cpp over. Also delved into language.cpp which handles any text strings in the game that can be localized to different languages. Oh. Here's some pictures from yesterday's airflow replenishment procedure:
6-22-06 My Toshiba laptop suddenly powered off today while I was using it. When I got home, I had to disassemble it and clean the dust out of the cooling radiator. It was completely blocked and was not properly keeping the CPU cool. After I got the computer back together and tested (ah, good airflow now!), I switched gears and resumed work on MacBrickout. Started porting all of the preferences stuff over to the new project. 6-21-06 Ported texture.cpp. Got rid of display.cpp (it had a bunch of stuff in there that I uh, well, "deprecated". It's all been replaced by OpenGL). Figured out how to load a file from my application's Resources directory. Successfully loaded the Resources.dat file. Successfully imported all of the graphics for the moving objects in the game! Got the sand image loaded into memory. I don't know if it'll look right but at least it's loaded. Got several other utility source files ported over. Ported over File.cpp but had to stub out a ton of routines to get it to compile. Many of the routines I will no longer need. Some I'll have to come back to. Got the code to execute to the point right up until it tries to load a level, then it crashes. 6-15-06 While working on level.cpp, I got to the point in the code where it draws the user's name in the sand. Ported User.cpp to the new project. Created a "Localizable.strings" file and put all of the game text in there. Added code to read the desired strings out of the file. I need to be able to load the Resources.dat (formerly known as WinBrickout.dat) file from MacBrickout's "Resources" folder. This file contains most of the graphics used in the game and level.cpp needs access to the graphics in order to draw the levels. Spent some time trying to figure out how to get to the Resources folder from within the game but ran into problems calling Cocoa methods from a C++ function. Gonna hafta call it a night. I'll try again next time. No spiders on my keyboard tonight although I did get beaned in the head by a June Bug. 6-14-06
6-13-06 I got some OpenGL polygons (a triangle and a square) to display in my MacBrickout game window! Ported most of level.cpp over to the Cocoa project. 6-12-06
6-11-06 Ported all of the Carbon header files (about 80 files) over to the new Cocoa project. Ported the following source files over: Alpha.cpp (Displays the big colorful "Get Ready", "Paused", and "Game Over" characters), background.cpp, ball.cpp, bonus.cpp (displays the little yellow floating bonus points), border.cpp (draws the border and anything in it). Removed language.cpp. All localization for different languages can now be handled by nib files and property lists (interface builder). Ported bricks.cpp, bubbles.cpp, capsules.cpp, chest.cpp, coin.cpp, color.cpp, fruit.cpp, lasers.cpp, MusicNote.cpp, sand.cpp, shell.cpp, smoke.cpp, sparkle.cpp, spriteManager.cpp (big one), sprite.cpp (another big one), teleport.cpp, trigger.cpp, umphee.cpp and warp.cpp. That was about 80% of the core game engine and for the most part, it plopped in as expected without too much trouble. Still looking at an empty window; no graphics yet. I need to get that remaining 20% implemented... 6-10-06 Defined all of the game menus. Moved "Frequent Players..." over to the FILE menu. Got the utility module to compile. There was some platform-specific code in there so I split it out into a separate source file called MacUtils.cpp. 6-8-06 I've been fighting a cold the past few days. I get home from work. Bed. Sleep. I feel like I'm on the mend now so progress will resume shortly. I've started porting some of my core utility source files over to Cocoa. These files contain functions that are used throughout the game. It's a lot of work without the reward of instant gratification but I figured I'd get this hard stuff out of the way first. The fun part will be when it comes time to drop the core game engine into the Cocoa project and actually see the familiar "Hello" screen displayed again! 6-4-06 My friend Adam Harris put the finishing touches on the RSS feed. There's a little RSS 2.0 icon on the main page that will take you to the RSS feed. Thanks Adam! I spent most of the day porting Carbon source files to Cocoa. 6-3-06 Improved the Help / Shareware dialog and the About Dialog. Added a skeleton Beta dialog. Organized my source files into "common" and "osx" directories. Worked some more on the RSS generator but made no significant progress. 6-2-06 Created an RSS feed for this blog to make it easier for users to get progress updates. I'll post it when testing is completed. 6-1-06 Started working on the Help / Shareware dialog. Got the dialog box to pop up with a scrollable HTML view of the tips and tricks text. The "Buy Now" button takes the user to the ordering page on my webiste (although the registration number is incorrect at the moment). The OK button dismisses the dialog box. I am amazed at the difference in code size needed to implement this functionality in Cocoa vs. Carbon! It's about 5 pages of code in Carbon and only 1 page in Cocoa. 5-31-06 Work has continued to be slow so I elected to take a couple of weeks off (unpaid) and focus my efforts full-time on MacBrickout. I immediately began struggling again with Carbon. I ran into a couple of issues: First, it seems that as of MacOSX 10.4, many of the system calls that I was using became "deprecated", meaning that they're no longer being supported by Apple. This means that I will need to find alternate ways to get these things done. The area most affected is in my usage of Quickdraw. I will have to replace all of the drawing code that uses Quickdraw with new code that uses Apple's current 2D drawing engine, Quartz. Secondly, I need to support the new Intel based Macs. I tried running the game on a MacBook Pro under Rosetta and found that it mostly worked but there were some strange behaviors. Some of the graphics looked bad because of my use of deprecated routines that apparently aren't properly supported under Rosetta, and the sounds were terribly distorted (likely an endian (byte-swapping) issue involving Rosetta). I still have that graphics scaling issue too which I mentioned a year ago (OpenGL vs. CopyBits). Oh by the way, CopyBits is now deprecated. Quartz would do the scaling elegantly. I sat back, sighed, cleared my mind and realized that I could keep paddling upstream; making remedial progress with MacBrickout Carbon or I could use this time to learn Objective-C and Cocoa (the preferred Mac OSX programming environment). Cocoa applications are supposedly much faster to write once you know the tools. My plan would be to rewrite all of the user-interface code in Cocoa and then integrate the existing core game engine (which is all OpenGL based and should just drop right in). I got 5 programming books on Cocoa (and Objective-C) and have spent the past 2 weeks walking through the tutorials each book has to offer. Cocoa is madly object-oriented and I'm finding it difficult to "unlearn" my procedural programming tendencies and adopt the new object oriented paradigm. But I'll get it. Last night I compiled and ran my first Cocoa application. All it does is display a custom About Box when you choose "About MacBrickout..." from the Application Menu. Hopefully the rest of the user interface components will materialize with minimal effort. It's amazing how little code is actually needed to implement a Cocoa user interface! I know my decision to take this step backward may come as a let down to those of you expecting a June release but I believe it's the right decision in the long run. MacBrickout will be solid and will be supported by future versions of OSX and I'll be able to start writing my next game using the Cocoa methods I have learned which should make the development time short and fun. Got the look of the About box just right. Need to add the ribbit sound. Eew yuck. All of the sounds are the old System 7 'snd ' format. Converted all 78 game sounds to WAV files with the help of HexEdit and Audacity. 12:05am. I'll resume later... 4-29-06 I successfully got the game to compile and run natively on an Intel Core Duo processor. All of the user interface dialogs need work. I'm probably going to have to break down and learn Cocoa as it seems that's the easiest way to get user interface dialogs working on OSX. It's too much of a struggle trying to get Carbon to work right. Things at my day job have slowed down so I found some time to update our website (since I can't be working on MacBrickout at work :-) ). If you happen to know anybody looking for some good quality engineering work, you might point them to our site at www.simpleeng.com. 3-7-06 Just a quick note to say that I'm planning on a June release. 10-6-05 It has been a long time since I have worked on MacBrickout. Work at my day job got very busy during the summer as we were finishing up the design of a high-volume consumer product. I even spent a week at the factory in Malaysia which was quite an experience! Things are still a little busy as we prepare to go into full production. I'm hoping that things will settle back down to normal in about 2 to 3 weeks. At that point I believe I'll have time to finish up the game. First on my list is to resolve the scaling issue I was battling in May. Then I'll go down the issue list below and try to tackle each outstanding item, one by one. I need a couple good five to eight-hour blocks of time and I think I can finish this thing. sigh, it's always just a matter of time... (I have been getting ideas (and writing them down) for my new game. I'm eager to finish MacBrickout so I can start on something new! 5-29-05 Spent much of the day struggling with the aim-for-levels thumbnails. If I use OpenGL to scale them down to 100x75, they look really bad but the data is in the perfect format for me to save them with the level. If I use the Mac OSX routine, CopyBits, to scale them down, they look great but the data could be in any format (depending on the user's hardware) which makes it difficult to save with the level. I spent a lot of time trying to coerce OpenGL into generating a better looking image but no luck so far. I will probably go with the CopyBits method since it looks better. When saving a level, I'll need to copy the full-size image out of the frame buffer into an off-screen GWorld. Scale it down using CopyBits then manually extract each pixel and pack it into the game's internal 1-5-5-5 pixel format and finally save it with the level.
5-7-05 Work has been very busy. I've had no time to work on MacBrickout unfortunately (worked 56 hours last week!). Today, I made some progress on the aim-for-levels thumbnails. I just need to convert the little thumbnail image to a format that I can save to disk so it gets saved properly with its associated level. 4-20-05 Successfully saved a level after editing it in the level editor, although some information was missing like the 100x75 thumbnail graphic which is displayed in "aim-for-levels" mode. Made some attempts to extract that graphic from the game window (an openGL context) into a small buffer but was unsuccessful. Will try again tomorrow... 4-11-05 Still working on the save level item in the Tools menu. I've been having to convert a bunch of old OS9 resource stuff over to OSX. Right now I'm working on generating a small thumbnail graphic that gets displayed in the "Aim for Levels" screen. 4-10-05 Got some help from a friend and now the SECRET menu is working! Worked on getting "Save Level" to work. 4-9-05 I just finished my first week at my new job. Things have been very hectic during the transition so I haven't not had much time to work on MacBrickout until now. Today, I set out to make the level editor work. I ran into a problem where I would add menu commands to the level editor menus but they wouldn't do anything. That's when I discovered that I was using an OSX style NIB menu resource and an old OS9 MENU resource. The game was trying to load both of them! Having both resources loaded could be why the menu bar sometimes doesn't appear when the game first starts up. I set out to remove the old OS9 MENU resource. Upon doing so, I discovered a large amount of menu functionality in the game went away. I had to add submenus to the NIB file and basically bring the NIB file fully up to date. I'm at a point now where I can't make the SECRET and TOOLS menus reappear after I delete them. I may have to reload the menu bar from the nib file whenever I want to make a menu reappear. There doesn't seem to be a HideMenu() call. 3-11-05 Fixed a problem where really large scores in the high scores dialog would overrun the date. Fixed a bug where you wouldn't get your clean sand bonus on saved games. Issue #2 is fixed. Issue #16 fixed. Fixed issue #30. Found and fixed a bug where the game would crash when you manually advanced past the last level. Fixed issue #27. 3-8-05 Fixed issue #19 (FINALLY!). Added issue #30. 3-5-05 Fixed issue #25. Looked into issue #23 but couldn't duplicate. Seems to work as designed. Still trying to get to the source of issue 19. 2-27-05 I was able to duplicate a problem where the teleporter in level 23 stops moving. I had to have a bunch of other tasks running in the background in order to get it to happen. Fixed. 2-21-05 Discovered a problem with Aim For Levels. Posted issue #28. Also saw a ball start out in the upper right corner of a level. It immediately hit a bubble and went up off of the top of the screen and disappeared. I'll have to look out for this again as I don't remember what level it was in (I was in the process of trying to duplicate issue #19 which was successful). 2-20-05 Spent much of the day addressing issue #10. I've been playing around with increasing MacBrickout's priority level and its task scheduling to ensure it has enough CPU time when it needs it. I believe I've had a little bit of success but I'm still seeing hiccups in the gameplay when other applications such as Mail, iTunes or AOL perform tasks in the background. Fixed issue #5. 2-19-05 Added some more bugs to the list. Fixed the stuck teleporter problem (#8). Fixed pipes problem (issue #13). FIxed issue #15. Resolved issue #21. Fixed issue #22 (that took a good 3 hours!) 2-16-05 I narrowed my job search down to 4 contenders. My last day will be March 31st so I've still got some time to weigh the pros and cons of each. It would be fun to get involved in some real cutting edge science. I like to do software / firmware design, embedded circuit design and a little bit of mechanial. Hard to find a job that offers all three. On the MacBrickout front, it looks like I'm going to have some time to invest this weekend. Hopefully I can nail some of these issues. Added issue #20 and then fixed it. Discovered a way to get issue #5 to happen all the time. 2-5-05 Job update: I've got about 8 engineering opportunities to explore so far. Many of which came from people I used to work with that heard the news about our design center. It's nice to be thought of. Looking at the list of issues below, I'm considering just taking some time off between jobs and devoting it to finishing MacBrickout. The main reason it's taking so long to finish the game is lack of time. A lot of the issues can be fixed within a solid 8 or 9 hour block. Some will take days (level editor, game ending). 1-31-05 Today I got the news that the design center where I work is going to be closed down. I was given the option to relocate to another design center but I think I want to stay here in San Diego. So I will begin the search for new job opportunities shortly. 1-27-05 I had to go out of town for a wedding last weekend. Missed a day of work on Monday. Have to work extra hours this week to make up for Monday. Added issue #17. 1-19-05 Looked into bug number 8. So far, haven't been able to duplicate on my machine. Was able to fix bug number 11 though! Added Bugs #15 and #16 1-13-05 I haven't done a thing with MacBrickout in a while (except collect bug reports). The holidays were crazy. Went to Nashville to see family. Actually saw some snow! Cool. After returning from vacation, I discovered that no less than 6 projects at work needed my attention. Finally, things have calmed down on that front. I'm just about ready to take a long deep breath and plow back into MacBrickout. Several more people have requested to try out the beta. I'm going to hold off releasing any more betas until I get some of these bugs fixed. The current bug list is at the bottom of this page. 12-5-04 Got paddle speed feature working! Got checkmarks in Display Size menu working. Fixed level set menu so "Standard Levels" has a check mark next to it when the game is started for the first time. Released an updated beta to a small group of people. Looks like there's a problem with paddle control for people who use Wacom tablets. Two people have experienced a crash but there's not enough data yet to determine what's causing it. 12-4-04 Started working on the adjustable paddle speed feature. 12-3-04 I sent beta copies to a handful of people that responded to my last post. >From that group I got a good list of things to fix so I'm going to hold off sending out more betas until I get these bugs fixed. Then we'll go for a second round... Fixed a bug where you can't change level sets. Made it so command-H hides the game. 11-28-04 The "Buy Now" button is working! If you're dying for MacBrickout and would like to try a beta copy of the game, drop me an e-mail. The "Buy Now" automated purchasing process could really use some testing before I officially release the game. Better to work out any kinks now than later. Someone reported a bug where the game wasn't restoring the mouse acceleration afterwards. I was able to duplicate it on my machine. You had to go to the Mouse System Control Panel and jiggle the mouse tracking slider to fix the acceleration. I found another way to change the mouse tracking speed and it looks like it has no side effects (MacBrickout changes the tracking speed so that it has a linear response. That way the player won't accidently overshoot the ball). While I'm at it, I'll go ahead and add the "Paddle Speed" options to the options menu. Then I need to get back to the data browser stuff which is part of the level editor. Is that light that I see at the end of the tunnel? 10-19-04 Been working hard the past week and a half on the back-end processing of the Buy Now button. This will allow people to register the game and immediately get their enable code. This work has mostly been in the form of writing server scripts in PHP4. PHP is a really cool language. Very "C" like. Still working on it. Just wanted to post an update while I had a chance... 10-7-04 I set out to add a "Buy Now" button to MacBrickout to facilitate the registration process for people. The best place to add the button was on the "Help - Shareware" window that pops up when the game first starts up. Unfortunately, that window was created with the old ResEdit program which is no longer around in OSX. I found some shareware resource editing programs but they only allow editing using hex code, not a nice graphical interface. I spent some time trying to figure out how to add a button to a dialog, describing the button in cryptic hex code but was unsuccessful. I finally decided to create the window from scratch in OSX's new resource format -- the NIB. This required me to rewrite the part of the code that handles the help/shareware screen. I've now got the window working again, text is scrolling and there is a "buy now" button that takes you to my website when you push it. Some minor refinements are needed but the hard stuff is over. Another instance of two steps back, one step forward. Er.. or is it one step back, two steps forward? 9-12-04 Researched DataBrowser controls. I need to use one to display a list of brick textures in the level editor. Wrote a little mini-program to demonstrate a functional DataBrowser control. Now I need to import that code into MacBrickout. 9-7-04 I'm back! Sorry for not updating this log in a while. I took a much needed summer vacation (to Pennsylvania), came back, got really busy on various projects at work and somehow managed to get a little bit done on MacBrickout from time to time. I finally had a good chunk of time (8 straight hours) to work on MacBrickout and tackled the full-screen mode. I did manage to get the dialogs to appear over an OpenGL context as well as the menu bar (for when you pause a game or when the game's over). There's no need to switch back to the original resolution until you acually quit MacBrickout. So things are looking good. I've had a request to support a few other display modes (such as 1024x768 screen with a 640x480 game window). I'm pretty much ready to address the last major task which is to complete the level editor. The big challenge here is to make it easy for people to edit levels, make their own level sets and save them, and hard for people to accidently save over the "factory" level sets. That was a big problem with past versions where it was hard to make level sets and relatively easy to clobber the factory levels. I also want to crank out a new level set or two as well as exploit some of the cool features that come free with OpenGL (stretch, squash, translucency, etc.). 7-18-04 Been working on the display stuff on and off for the past few weeks. Full screen mode is working but I haven't found an elegant solution for displaying the in-game dialogs yet. Currently, I have to switch out of full-screen mode to display the dialogs then switch back when the user clicks OK. This can be visually displeasing to watch. I'm considering replacing the in-game dialogs with in-game graphics and just do some animations in OpenGL (like have a gem stone fly across the screen when you complete a bonus level). We'll see. 7-3-04 Moved the preferences over to the Users/Shared folder instead of the Users/username/Library/Preferences folder. That way, frequent players and high scores will be preserved on computers that have multiple log-in users. Increased the clean sand bonus by a factor of 10. Now there's much more incentive to keep the sand clean! Got MacBrickout to add whatever display resolutions are valid to the Display menu. The menu items don't anything yet though... Got two of the menu items working (640x480 windowed and 1280x960 windowed). Full screen mode is going to be a challenge because I can't get the menu bar to appear in a full screen OpenGL context. 7-2-04 Got MacBrickout to query the display and figure out what the maximum resolution is. The resolution info will be used in building the display menu, allowing the user to select only those playfield sizes that are possible on their display. Created the display menu (under the options menu). Now I need to get MacBrickout to dynamically add the possible resolution configurations to this menu. 7-1-04 Just finished a month long project at work. I was in charge of desigining the electronics, firmware and software for several testbeds (machines that test certain aspects of a final product, usually involving great accuracy). Now that things have slowed down a bit, I'm looking forward to continuing work on MacBrickout. Top of my list is to get the game to work on various sized monitors and allow the user to select various playfield sizes, full screen mode vs. windowed mode, etc. 6-5-04 Fixed a bug where the high score list would get totally clobbered if you switched out of the application while the submit high score dialog was up. 5-20-04 Fixed bug where bonus completion dialog wouldn't tell you what prize you got when you completed a bonus level. Found a bug where the game locks up and you have to force quit when you complete the last level. 5-19-04 Played several games tonight. Found several minor bugs along the way. Made notes. 5-18-04 Made it so MacBrickout remembers the position of its window the next time you launch the application. Figured out how to disable mouse acceleration during gameplay so that the player won't accidently overshoot the ball with a sudden mouse movement. 5-17-04 More Spring cleaning. Went through most of the source files and deleted old code. 5-16-04 Went through and cleaned out a bunch of legacy code that was no longer needed (and was bogging me down). This is old code from the days of DrawSprocket and OS9. The software renderer was no longer used (using OpenGL now) so it's outta there. There's quite a bit of code that survived the various generations of the OS and is simply not needed anymore. I believe that if I rip out the rest of this old stuff, the codebase will be a lot easier to edit and maintain which will hopefully speed up the release of the game. One step back, two steps forward.... 5-2-04 Fixed crash bug in frequent player dialog. Found a bug where immediately after adding a frequent player, the popup menu in the frequent player dialog box would appear totally empty! Fixed. Fixed a bug where the game counter would disappear if you switched to a different player in the high score dialog. 5-15-04 Started working on variable play area sizes depending on the user's screen size (640 x 480, 1280 x 960, 1920 x 1200, full screen and windowed mode). Fixed scaling problem in level editor which caused wrong brick to be hilighted when the user clicked on a brick. Thanks for the "keep up the good work" e-mails. They help! 4-20-04 Fixed a bug where the game counter in the high score dialog didn't work. Found a bug where the game crashes when you try to add a "frequent player". 4-19-04 I went over to a friend's house this weekend and compiled the entire project on his dual G5 machine. We were able to duplicate the crash problem and tracked it down to some initializations that weren't happening in the proper order. It's too early to say for certain, but we may have finally licked the crash problem. I'll be keeping a close eye on things for the next few days. Found several minor glitches in the user interface. Will fix those over the next few days... 4-8-04 This past couple of months has been frustrating. I have tried many times to fix the bug where MacBrickout would work on my machine but crash on everybody else's and have had no success. I tried installing XCODE and using that as a development environment instead of CodeWarrior but ran into tons of compiler errors. Discouraged, I went back to CodeWarrior but learned that XCODE clobbered all of the system header files CodeWarrior was using which broke CodeWarrior. I was no longer able to build the project in either development environment! So I took a deep breath and slowly started fixing the hundreds of compiler errors and warnings in XCODE. Tonight I finally got the game to compile, link and run again. Several things are broken like there is no sound for some reason and you can no longer choose different level sets but I'll be able to fix those. Right now, I have to find out if the game works on any other machine than mine. If it does, then that means I'm finally past this terrific bug that has plauged me since early December! 2-1-04 Shortly after my last update, MacBrickout started working on my machine again but still failed to work on everybody elses. I wish it were the other way around! I spent quite a bit of time sending updated builds to one of my beta testers but we have not succeeded yet in resolving the problem. I have some ideas to try but haven't had a good chunck of time to try them. I got really busy again in Janurary with the voting machine project (you can read about it at Vogue Election Systems). This is really starting to look and act like a real product. It's very exciting. It's looking like February is going to be really busy too, unfortunately and I won't have much time to work on MacBrickout. I keep getting ideas for my next game (and I'm writing them down) but I refuse to start working on it until I complete MacBrickout! 12-13-03 Panther arrived in the mail today. Installed it. Now MacBrickout won't start up on my machine. At least now I can duplicate the problem here and hopefully track it down quickly. 12-8-03 Very little time to work on MacBrickout unfortunately. Been working 11-hour days at work. Crunch time. I'm hoping the project will wind down by Christmas and we can turn it over to Manufacturing. My shedule should return to normal, giving me more time to work on the game. I did get a lot done last weekend (and forgot to post about it here) in the level editor. But now one of my beta testers is having problems starting up the game. He has Panther. I do not. Maybe there's an incompatibility with Panther. I've ordered a copy. We'll see... 11-20-03 Ok, now when you click on the different levels in the arrange levels dialog box, the level thumbnail picture changes accordingly. There's a problem when I go back and forth between bonus levels and regular levels. When it switches to the bonus level list which is shorter, the entire list box doesn't get updated so you see a bunch of the levels from the regular levels at the bottom. When you click on them, they disappear. I need to figure out a way to cause the entire list box region to get updated when I switch back and forth between regular levels and bonus levels... 11-16-03 I just figured out the problem with the list box being unresponsive. Now I can click on the names of the various levels and scroll the list box. Now I need to implement the ability to rearrange the levels and update the little level thumbnail when you click on different levels in the list. I'm still extremely busy at work (in fact, I'll probably go in today and help out the other guys who are putting in weekend hours) but hopefully that should start tapering off in December. I'll try to update this diary more frequently. The occasional encouraging e-mail finds its way to my mailbox which is great! Those e-mails are my motivation for finishing this project! 9-28-03 I have actually made progress on MacBrickout this weekend and last weekend. I've made the dialogs and menu items attributed to the SECRET menu more user friendly. Also, I'm working on making the level editor less destructive. Before, it was easy for users to accidently mess up levels and render them "unauthorized" making it impossible to continue to post high scores on the website. I got stuck porting the Arrange Levels dialog over to OSX. I'm trying to display a list of all levels in the level set in a list box. That part works, but the list box is completely unresponsive. You can't move the scroll bar and clicking on one of the levels in the list box does nothing. Any OSX programmers out there have experience using ListBoxControls? Thanks to those of you who have sent encouraging e-mails. It helps! 8-27-03 I have not made any progress on MacBrickout, mainly due to my day job. I've been very busy doing both electronic and software design on a product that will aid disabled people. The schedule is aggressive and I come home tired and not wanting to look at another computer screen every night. This project is going to last until November. I know nobody wants to wait that long for MacBrickout OSX so I will do my best to find the time to put the finishing touches on the game and get it released for everybody to enjoy. Sigh. I really want to start on my next game too but that seems so far off... Words of encouragement are welcome :-) 5-31-03 I've been very busy with family and work lately so I haven't had any time to work on MacBrickout unfortunately. Next on my list is to add "save level" functionality to the level editor. This should be enough to get people started working on the new level set. I'm going to make it so you can't save over your default levels (that was a big problem in previous versions). Also, I'll make it easier to create new level sets and start making new levels from scratch. The other thing I need to work on is full screen mode. Apparently, I can't draw dialogs in an OpenGL context (there are several in-game dialogs such as "player 2 have a seat", "are you sure you want to end your game?", etc.). I was going to have to switch the monitor resolution to windowed mode just to display those dialogs and then switch back to full screen to continue the game which would have been annoying for the user. I think I came up a good idea to get around this by displaying the in-game dialogs using OpenGL polys. 5-18-03 Got the teleporter and trigger attributes dialogs are now working. Still need to be able to display textures in the brick attributes dialog... Fixed! Fixed a bug where "Game Over" appears in the level editor. It was neat because you could drag the individual letters around but it was pointless. 5-17-03 Got "New Brick" and "New Row" working in the level editor. Started working on the Brick Attributes dialog. Got color picker working. Got ball prize and music num menus working. Got all capsule checkboxes working. All and None buttons work. Got Gold and Gray buttons working. Got everything else in the Brick Attributes dialog working except for the texture management stuff. Got Ball Attributes dialog fully functioning. Gate Attributes dialog is working. Fixed a bug where the texture would get twisted on gates. 5-5-03 Fixed the openGL problem. Had to reinstall Jaguar. Some of the animations are way too fast on this monitor. Must have something to do with LCD screens reporting a refresh rate of zero. 5-2-03 I finally gave up my old blurry 10-year old CRT monitor and upgraded to a flat screen LCD monitor. Now I have no OpenGL acceleration. I'm hoping it's just the video card (Radeon 7500). I can't do any MacBrickout development until I get this fixed! Argh! 4-27-03 Found that textured bricks didn't hilite when selected. Same with 3D bricks. Fixed! Added music number text which gets displayed over musical bricks in level editor. 4-25-03 Dragging of sprites is fixed. Got selection rectangle working. I made it a translucent openGL polygon. Looks nice! Got all selection logic working: Shift-click, shift-drag, etc. Made sprites turn white when they're selected. Clamped objects to the window bounds so you can't drag them off of the window. I think I can now start implementing some of the TOOLS menu functionality... 4-22-03 Moved level editor functions over to Carbon Events. Completely gutted my old HandleMouse() routine and started a new one from scratch. Got it so you can click on bricks and they hilite. Restored the ability to select multiple bricks. Got sprite selection (teleporters, balls, trigger switches, etc.) working. Got dragging objects working..uh..somewhat. It seems that you can drag them once and then after that you can't select them anymore. Fixed...for bricks. Sprites still misbehaving. 4-20-03 Hmmm. Old level editor code uses the old OS9 event loop. I need to switch this over to carbon events. Looks like I can still use a lot of this old code. Really the only things I need to revamp is the event code (mouseDown, mouseUp, mouseDragged) and some of the drawing code (I'll need to draw the selection rectangle using an OpenGL polygon). 4-19-03 Started working on the level editor. Got the TOOLS menu up but none of its menuItems are functional yet. I can't wait to be able to grab a brick and drag it around! 4-16-03 Finished the Jump To Level dialog! Well, the "Edit..." button doesn't work yet but everything else does. Released Beta 5. Major tasks ahead: Full Screen mode and the Level Editor. I decided not to go forward with the splash screen. It much cooler to have the game come up instantly. 4-13-03 Played game. Got red umphee ball and pearl ball. Both showed up in all-time achievements but not on individual achievements. Individual achievements only showed quartz crystal (which I got for completing bonus level 1). Looks like when you complete a bonus level, it wipes out all of your achievements up to that point!!!! FIXED! Ball direction no longer changes when resuming a paused game. Ball no longer starts off too fast in beginner mode. Got save game feature working. Fixed a problem where you'd let go of a caught ball when resuming a paused game. Started working on the Jump To Level dialog (which leads to the level editor). Didn't release a beta tonight. 4-12-03 All text in dialog boxes is black instead of gray. The laser paddle no longer jerks when you fire. Two player mode works. The laser ball on the right side of the paddle is lined up with the cannon. Aim For Levels is 100% functional. The OK button in the Help / Shareware dialog responds to the return key. Crash bug in high score dialog if one of the scores was achieved with aim for levels is fixed. All time achievements now shows up in high score dialog. Released Beta 4 4-11-03 The comma has been removed from "full featured version" in the help/shareware text. The help/shareware docs have been updated to reflect the new way to load level sets. Problem where game magically unregisters itself for no reason has been fixed. Text in frequent players dialog is now black instead of gray. Game now automatically pauses if you apple-tab out of it. Hitting space bar in other programs no longer causes MBO to pause and unpause. Frequent players stays black after you register. Released Beta 3. 4-10-03 Spent the entire evening tracking down a bug where the ball changes directions every time you resume a game. This made it possible to play an entire level without having the ball ever touch the paddle. Seemed like an easy bug to fix but it turned out to be quite elusive. Released Beta 2. Bug reports still coming in strong. Lots to do... 4-9-03 Fixed bug where submitted high scores shows tomorrow's date. Got Beginner mode working. Made it so you can resume a paused game by hitting the space bar. Fixed a bug where a gate would magically open when you resume a paused game. Fixed a bug where the game window position was slightly off the left edge of the screen. Investigated Aim For Levels mode. This is going to be a lot of work because of the switch to OpenGL. I need to convert all of the thumbnail textures to openGL textures and then associate them with their respective bricks. Got two player mode partially working. Dialogs aren't perfect yet. I really need to get the level editor working so I can make some test levels to fix some of the remaining bugs. This is going to be a big job... 4-8-03 Released the private beta to all of my beta testers. So far, nothing major has popped up (except for the missing features which I will start working on shortly). 4-7-03 Turned off all of the debugging code. Set the application's version number to Beta 1. Released a private beta copy to one person. If I get a "thumbs up", then I'll release the private beta to the rest of the testers. I've still got a lot of work to do: Full Screen Mode, Beginner Mode, Two Player Mode and Level Editor (just to name a few) but at least the game can get some testing while I work on th | ||||||||||||||||||||||||||||||