Thursday, January 9, 2025

It's Time to Resume the Game

Hey, everyone!  I'm back!  It's really me and I'm not a ghost.

I wanted to tell the story of why I was away for so long and what happened to derail my game development career, but I don't feel like writing that much and I doubt more than a handful of people would read it anyway, so I'll just tell you the short form.

The short version: After presenting at a symposium in 2014, I put my game dev work on pause while I returned to graduate school to pursue a Ph.D. in software engineering. I got through all of my coursework quickly and successfully (straight A!), and then I started my dissertation. Around that same time, my employer at the time went through a rather tumultuous reorganization. I ended up being promoted into an impossible and thankless administrative position which made it extremely difficult to work on my dissertation.  So I left that job and took another one which promised more time, flexibility, and support to complete my degree.  However, after only being there for a few months, I was promoted into a leadership role that once again ate up all of my time and energy, leaving none for my research...or anything else.

In a nutshell, I paused my game dev work to get a Ph.D., and then abandoned that, too, so I was left with neither.

But last summer, exactly ten years since my last post to this blog, I decided to return to my passion. Like pressing the trusty Continue button, I'm resuming my life and work as a game developer.  Last summer, I went through a major growth sprint as I started rebuilding MHFramework from the ground up. Now, on winter break, I continued building that foundation AND started my first actual game project in over a decade.  More on that later!

The past ten years have been a journey, filled with personal growth, teaching, and exploring other avenues. Along the way, I’ve gained fresh perspectives and ideas that I can’t wait to bring into my game development projects.

Deep down, I always knew I’d come back.  I had to.  I just had to figure out how.  

Now let's get on with this!


Saturday, May 17, 2014

LIME Status Report (05/17/2014)

Ladies and gentlemen, LIME 4 is go for alpha!  Version 4.0.01A has been released to a small group of testers, and I hope to recruit more as we go.  This will probably be the last of this sort of status report because the focus of the project is now shifting from growth to hardening.

If you'd like to volunteer as a tester, post a comment on this blog entry or email me.

If you're already a tester, here are some important links for your convenience:


Here's a little peek at the current alpha release.
Longtime followers of my work may recognize the assets from the Beltzhian Marauders
gameplay prototypes from ten freakin' years ago!  Am I getting too old for this yet?

Accomplishments
  • Corrected the save location of the New Map dialog.
  • Implemented isometric map modes in both diamond and staggered varieties.
  • Added a function to automatically populate the tile set selector with the tile sets available.
  • Officially reached code complete and entered the alpha testing phase.

Sunday, April 20, 2014

LIME Status Report (04/20/2014)

I should have known better than to congratulate myself on being ahead of schedule last month.  Life got in the way, as it often does, and slowed my progress.  Nevertheless, progress was made, and LIME 4 is now at the point where I wanted it to be three weeks ago.  I'm not going to complain, though, because I'm pretty happy with the way it's turning out.  There are bugs to address, testing to do, some refactoring and optimization to consider, and a couple more requirements to implement, but it's gradually turning into the product I envisioned.

For now, my son, my cat, and myself are the actors, but we're good enough to show that it works!



Accomplishments
  • Designed and implemented the Actor palette.
  • Added a toggle button to the View panel for actors.
  • Modified the high-level file I/O classes to support reading and writing of actor lists.
  • Began to reconsider the relationship between the actor lists and the tile maps.  In short, the tile map view only needs the actor list for rendering, and therefore a composition relationship is unnecessary and undesirable.  Instead, the actor list could be passed as a parameter to the tile map view's render function.  This does add one complication though -- how to load the actor file for a game world.
  • Optimized the core game loop by enhancing the game timer and moving some initialization outside of the loop.

Known Issues
  • Functionality Issues
    • The New Map dialog creates the map files in the app root rather than the data directory.
    • Full-screen mode quit working as soon as I started porting functionality from MHF 2 to MHF 3.  Gotta find out why.
  • Usability Issues
    • If the layer currently being edited is hidden, the view panel gets out of sync with the edit panel.
    • The buttons on the New Map screen's cycle controls are occasionally unresponsive.
    • The tile map view's anchor space doesn't always scale correctly when resizing the editor pane.  I've had trouble reproducing this on command, but it happens occasionally.
  • Performance Issues
    • When the tile ID view option is turned on for large tile sets, the frame rate drops sharply to the point of being unusable.
  • Supportability Issues
    • The keyboard event handler for the Android platform doesn't seem to work at all.  Testing and troubleshooting are in order.
    • The Android platform layer doesn't yet have the ability to rotate the captions for the slide-out tabs or dynamically resize a graphics canvas.  Currently a low priority since this tool is intended to be used on a developer's PC, but something that needs to be addressed eventually.
Next Steps
  • High Priority:
    • Automatically populate the tile set selector on the New Map dialog.
    • Fix the dependency between the view panel and the edit panel.
    • Make the New Map dialog save map files to the right location.
  • Medium Priority:
    • Implement isometric modes.
    • Improve performance of tile ID renders.
    • Test, test, test!
  • Low Priority:
    • Fix full-screen exclusive mode for the PC platform.
    • Update and test WallTileTransformer.
    • Do more testing on FloorTileTransformer to make sure the vertices are right.

Saturday, March 29, 2014

LIME Status Report (03/29/2014)

It was a rough week for finding time to work on this project.  I only managed to squeeze out a few short hours to devote to LIME 4, so the list of accomplishments is brief.  Important, but brief.

The only major additions remaining, aside from the other map modes, all involve adding actors to a map.  That will be next week's priority.  After that, it's just bug fixes, optimizations, and the isometric modes.

Those buttons to the right of the tile palette scroll the palette up and down.
Is it obvious enough?


Accomplishments
  • The tile palette now scrolls in response to the up and down arrow keys as well as its own pair of buttons.
  • Tried a minor optimization to the tile palette render which seems to have saved me a few frames per second.
  • Corrected a mouse mapping problem on the tile palette.  I think so, anyway.  It requires more testing to be sure.

Known Issues
  • Functionality Issues
    • The New Map dialog creates the map files in the app root rather than the data directory.
    • Full-screen mode quit working as soon as I started porting functionality from MHF 2 to MHF 3.  Gotta find out why.
  • Usability Issues
    • If the layer currently being edited is hidden, the view panel gets out of sync with the edit panel.
    • The buttons on the New Map screen's cycle controls are occasionally unresponsive.
    • The tile map view's anchor space doesn't always scale correctly when resizing the editor pane.  I've had trouble reproducing this on command, but it happens occasionally.
  • Performance Issues
    • When the tile ID view option is turned on for large tile sets, the frame rate drops sharply to the point of being unusable.
  • Supportability Issues
    • The Android platform layer doesn't yet have the ability to rotate the captions for the slide-out tabs or dynamically resize a graphics canvas.  Currently a low priority since this tool is intended to be used on a developer's PC, but something that needs to be addressed eventually.
Next Steps
  • High Priority:
    • Add the actor list to the tile map view classes.
    • Add "Actor Mode" to the palette window.
    • Add an actor toggle to the view panel.
  • Medium Priority:
    • Fix the dependency between the view panel and the edit panel.
    • Automatically populate the tile set selector on the New Map dialog.
    • Make the New Map dialog save map files to the right location.
    • Implement isometric modes.
    • Improve performance of tile ID renders.
  • Low Priority:
    • Fix full-screen exclusive mode for the PC platform.
    • Update and test WallTileTransformer.
    • Do more testing on FloorTileTransformer to make sure the vertices are right.

Saturday, March 22, 2014

LIME Status Report (03/22/2014)

Happy birthday to me!  Let it be known that this status report shall be the extent of my work efforts today because I'm taking a day off for playtime and indulgent food.

The main thing I can say about this week's accomplishments is that my testing efforts paid off in a good, long list of defects.  This is a good thing -- it means that my testing accomplished exactly what it should have.

However, I am going to resist jumping in to fix these defects at this point.  I have learned that focus is very important, so I am going to continue to focus on development tasks rather than maintenance tasks for the time being.  That is why my priorities under the Next Steps section are laid out the way they are -- the priority for now is to finish the current growth sprint and put the finishing touches on the user interface.  Once that is accomplished, I will turn my attention to fixing bugs.  Then, finally, I will implement the isometric modes and LIME 4 will be complete at last.

May as well post a screen shot though.  This shows that the tile palette is sort of working correctly, but not entirely.

Look!  Different tile set!


Accomplishments
  • Implemented an intrinsic Open File dialog in the engine and then utilized it in LIME.
  • Tested the tile palette with a different tile set.  It mostly works, but mouse mapping appears to be slightly off and the view doesn't scroll.
  • Updated the TileRipper program to remove dependency on the old MHF and add customization through command line arguments.
  • Used TileRipper to create a large tile set for testing.
  • Did a lot of testing and uncovered a list of issues which are categorized below.

Known Issues
  • Functionality Issues
    • The New Map dialog creates the map files in the app root rather than the data directory.
    • Full-screen mode quit working as soon as I started porting functionality from MHF 2 to MHF 3.  Gotta find out why.
  • Usability Issues
    • If the layer currently being edited is hidden, the view panel gets out of sync with the edit panel.
    • The buttons on the New Map screen's cycle controls are occasionally unresponsive.
    • The tile map view's anchor space doesn't always scale correctly when resizing the editor pane.  I've had trouble reproducing this on command, but it happens occasionally.
  • Performance Issues
    • When the tile ID view option is turned on for large tile sets, the frame rate drops sharply to the point of being unusable.
  • Supportability Issues
    • The Android platform layer doesn't yet have the ability to rotate the captions for the slide-out tabs or dynamically resize a graphics canvas.  Currently a low priority since this tool is intended to be used on a developer's PC, but something that needs to be addressed eventually.
Next Steps
  • High Priority:
    • Automatically populate the tile set selector on the New Map dialog.
    • Add "Actor Mode" to the palette window.
    • Add the actor list to the tile map view classes.
    • Make the tile palette scroll.
  • Medium Priority:
    • Test and fix mouse mapping in the tile palette.
    • Fix the dependency between the view panel and the edit panel.
    • Make the New Map dialog save map files to the right location.
    • Implement isometric modes.
    • Improve performance of tile ID renders.
    • Finish updating the old command-line tile utilities.
  • Low Priority:
    • Fix full-screen exclusive mode for the PC platform.
    • Update and test WallTileTransformer.
    • Do more testing on FloorTileTransformer to make sure the vertices are right.

Saturday, March 15, 2014

LIME Status Report (03/15/2014)

I almost have the entire UI finished!  The to-do list for LIME 4 is shrinking rapidly.  Here is the list of essential must-haves before I can call it finished.

  • Fix a bug in the dependency between the view and edit layer settings.  (Details below.)
  • Finish the tile palette by adding Actor Mode and making it scroll when larger tile sets are loaded.
  • Implement the Open File dialog for opening map files.
  • Implement the diamond isometric mode, and hopefully staggered and hexagonal, too.
  • Update the command line utilities with the new engine, and maybe even add a couple more.

The Map Info dialog isn't pretty, but it gets the job done.

Accomplishments
  • Finished programming the view panel buttons.
  • Finished programming the edit panel buttons.
  • Implemented the eraser tool.
  • Implemented the tile ID display toggle.
  • Corrected a bug in the grid line display.
  • Implemented the tile picker tool.
  • Implemented the Map Info dialog.

Known Issues
  • Functionality Issues
    • Full-screen mode quit working as soon as I started porting functionality from MHF 2 to MHF 3.  Gotta find out why.
    • If the layer currently being edited is hidden, the view panel gets out of sync with the edit panel.
  • Usability Issues
    • The buttons on the New Map screen's cycle controls are occasionally unresponsive.
    • The tile map view's anchor space doesn't always scale correctly when resizing the editor pane.  I've had trouble reproducing this on command, but it happens occasionally.
  • Portability Issues
    • The Android platform layer doesn't yet have the ability to rotate the captions for the slide-out tabs or dynamically resize a graphics canvas.  Currently a low priority since this tool is intended to be used on a developer's PC, but something that needs to be addressed eventually.

    Next Steps
    • High Priority:
      • Fix the dependency between the view panel and the edit panel.
      • Implement the Open File dialog.
      • Add "Actor Mode" to the palette window.
      • Test the tile palette with larger tile sets and different tile sizes.
    • Medium Priority:
      • Implement isometric modes.
      • Update the old command-line tile utilities.
    • Low Priority:
      • Fix full-screen exclusive mode for the PC platform.

    Saturday, March 8, 2014

    LIME Status Report (03/08/2014)

    This week I finally forced myself to take a break from my regular job and focus solely on LIME for a couple of days.  The result is perhaps the most productive single week I've ever had on a project.  I need to blow off the rest of my life more often!


    The LIME 4 user interface now features scroll buttons that appear when necessary, a data overlay on the editor pane, and slide-out panels for layer selection.

    When all of the slide-outs are closed, the editor pane expands to offer the maximum working space.

    Accomplishments
    • Finished implementing file I/O for saving maps.
    • Corrected the size of text boxes on the input dialogs.
    • Implemented the functionality behind the New Map dialog.
    • Corrected the issue with the grid lines and mouse cursor appearing in the full screen renders.
    • Changed the scrolling controls to use buttons rather than mouse-over zones.
    • Implemented the slide-outs for the viewing and editing controls.
    • Discovered and fixed a miscalculation in the game timer.
    • Discovered and fixed a scaling bug in the full map render.
    • Implemented a data display overlay for map data.
    • Added rotation and a redimensioning function to the MHPCImage class.
    Known Issues
    • Functionality Issues
      • Full-screen mode quit working as soon as I started porting functionality from MHF 2 to MHF 3.  Gotta find out why.
    • Usability Issues
      • The buttons on the New Map screen's cycle controls are occasionally unresponsive.
      • The tile map view's anchor space doesn't always scale correctly when resizing the editor pane.  I've had trouble reproducing this on command, but it happens occasionally.
    • Portability Issues
      • The Android platform layer doesn't yet have the ability to rotate the captions for the slide-out tabs or dynamically resize a graphics canvas.  Currently a low priority since this tool is intended to be used on a developer's PC, but something that needs to be addressed eventually.

    Next Steps
    • High Priority:
      • Implement the Open File dialog.
      • Implement the Map Info dialog.
      • Finish programming the toolbox buttons.
        • Eraser Tool
        • Tile Picker Tool
        • Tile ID Toggle
      • Finish programming the view panel buttons.
      • Finish programming the edit panel buttons.
    • Medium Priority:
      • Add "Actor Mode" to the palette window.
      • Test the tile palette with larger tile sets and different tile sizes.
    • Low Priority:
      • Implement the MHBitmapImage.rotate() method for the Android platform.
      • Following the rotate example, implement other capabilities like scaling, image filtering, color blending, and alpha composites.
      • Implement isometric modes.