Tag Archives: development

Post navigation

Today is my 40th anniversary of programming a computer.

December 22, 1978: This day marked the first time I walked into a computer store, the first time I played a game on a home computer (or even touched one), and the very first time I wrote a computer program.

Of course, that very first program was pretty BASIC. 😉 I learned the concept of programming, line numbers, how to RUN and LIST a program, and (at least) my first two commands, PRINT and GOTO, on that same day.

The very next day, I learned (more) about variables, FOR loops, and number theory (mathematics, not programming), as I helped an MSU student debug his program, and then further experiment with it. We noticed that abundant numbers are often bounded on each side by primes, but this is not universal.

Computers were awesome!

A few years later, as I was on an airline flight, I took out my pen and paper and started writing a wishlist for the “perfect computer” for me, dreaming about what could be possible in the future. I envisioned lots of colors, crazy amounts of memory (like 64K!), and larger custom character sets, which idea gave way to (really out there) thoughts of individually addressable pixels at very high resolution (say, 640×400). At a conference, I saw a display with a “true color” screen image of an apple (fruit) at 1024×1024 and that blew my mind.

In the intervening years, I have had loads of milestones and accomplishments:

January 13, 1982: founded Sophisticated Software Systems

Summer 1982: had first professional programming job

Late summer 1982: purchased very first computer, a Commodore VIC-20

1984: won the ComCon ’84 International Programming Competition

1984: started first full-time programming job with Michigan State University

1988: landed game programming job with Quest Software

1989: published first retail game product, Legacy of the Ancients

April 22, 1990: self-published shareware game, Pacmania 1.10

February 1, 1993: started as Senior Software Engineer at Spectrum Holobyte

These are just a few of the major highlights, but none of these events made as much of a difference in my life as that day I walked into New Dimensions in Computing. Of course, there are a few personal milestones that really affected things as well, but most of these also happened within this time frame (more than 76% of my lifetime).

Today, I am back doing what I love: programming. Even when things are tough, I truly enjoy the development process and can get ‘in the zone’. When people would ask me what my favorite game was, I would often reply something like, “C++”. 🙂

Amazingly, I now have a stable of portable devices, each of which far exceeds my ultimate imagination for my perfect computer, and many of them blow away the visual capabilities of that screen that mesmerized me back in the early 1980s (and I never even considered the possibility of 3D rendering capabilities). My phone fits in my pocket yet is more powerful than my first PC, and my watch is more powerful than that first computer.

Computers are awesome!

If you still use launch screens, these are the sizes you need.

As with mobile icons, the proliferation of new Apple mobile devices demands an ever increasing number of launch images. This post lists the necessary artwork sizes to directly support all devices (and possible orientations) as of iOS 12.

Of course, Apple realizes that adding new launch screen sizes every time they introduce a new form factor will quickly become unsustainable. (It is close to that now; otherwise, this post would be unnecessary. 😉 ) For that reason, they introduced launch storyboards, which allow a launch screen to be defined by a layout of controls and constraints, rather than by individually sized images. The only problem is that, unlike normal storyboards, the launch storyboard is loaded before the application runs, so only automatic layout can occur; no code can be executed. Therefore, customization is restricted, which prevents developers from accomplishing the same thing that is possible with launch images, namely, use of the entire screen on each individual device for displaying an image.

Apple takes the position that the launch screen should display an image reflective of the first screen of the application to give the impression that the app has launched that quickly. This certainly is better for Apple, who is not known for missing branding opportunities, but using the launch images for branding, i.e., a splash screen, is expected in the game industry (and, arguably, for any software). Also, games usually have custom background artwork, and if that is customized to screen sizes, there is no easy way to mimic that with a launch storyboard, at least at the moment.

To be fair, nowadays the launch screen is a somewhat rare occurrence, as it is only shown at first launch, or when the application has been unloaded, either closed by the user or removed from the background by the system to recover resources. If you design your splash screen to be an image in a sea of solid color or a repeating texture, you can reproduce that with a launch storyboard. The kind of splash screens that Rick Tumanis designed for Demolish! Pairs or Pretty Good Solitaire, however, do not lend themselves to this approach. It is for that reason that we still use launch images in those games (and others). In fact, Demolish! Pairs will reshow the splash screen if you shake the device from the menu. (It is an ‘undo’ when done from within a game.)

So without further ado…

iPhone Launch Screen Sizes

Apple iPhones provide the bulk of the variety in device screen sizes, so you need to provide 11 (or 12) launch images for full coverage, as follows:

Note that the lowest supported target system for Xcode 10.0 (latest version as of this writing) is iOS 8.0, and no devices at the original iPhone resolution (320 x 640) can run that version of iOS, so the final unique size (#12) is unused in modern apps.

iPad Launch Screen Sizes

There is good news and bad news when it comes to supporting iPad launch images.

Good News

The good news is that you only need 4 launch images for iPad support, as follows:

That is pretty straightforward, especially given that they are the same aspect ratio, so you can just create the double density size and directly reduce the image. Further, if your target platform is iOS 10 or higher, the iPad 2 is no longer supported, so you only need the two larger images for all remaining iPads.

For completeness, here are the legacy sizes for iPads running iOS 5 or 6:

iPad Portrait Without Status Bar iOS 5, 6 (legacy)

768 x 1004 – 1x (optional – unused on iOS 8+)

536 x 2008 (@2x) – 2x (optional – unused on iOS 8+)

iPad Portrait iOS 5, 6 (legacy)

768 x 1024 – 1x (same as #1)

1536 x 2048 (@2x) – 2x (same as #2)

iPad Landscape Without Status Bar iOS 5, 6 (legacy)

1024 x 748 – 1x (optional – unused on iOS 8+)

2048 x 1496 (@2x) – 2x (optional – unused on iOS 8+)

iPad Landscape iOS 5, 6 (legacy)

1024 x 768 – 1x (same as #3)

2048 x 1536 (@2x) – 2x (same as #4)

The only (4) new sizes here are just the same launch screen sizes with an area for the status bar (20 or 40 pixels) removed. These sizes are never used in modern apps.

Bad News

The bad news is that, as keen observers will have noticed, I did not list any of the iPad Pro models above; this is because an iPad Pro acts like an iPad Retina. Without a launch storyboard, all iPad Pro devices show up as though they are only 2048 x 1536 resolution.

To be fair, the smallest iPad Pro, the 9.7″ model, is only 2048 x 1536, but the two larger models have higher resolution that is not used: 12.9″ is 2732 x 2048; 10.5″ is 2224 x 1668.

If you want to have the full resolution of iPad Pro devices, you must use a launch storyboard rather than launch images; you cannot use both, as (experimentation suggests that) the inclusion of a launch storyboard supersedes launch images. Damn.

Conclusion

The release of iOS 12 added the need for 4 additional launch screens (to support both orientations for the iPhone XR and iPhone XS Max), so a “universal” app needs to provide a total of 15 launch images to support all iPhone and iPad devices. However, if your game or app needs to take advantage of the full resolution of the iPad Pro, you will need to provide a launch storyboard instead, and adjust your launch screen appropriately.

All Apple needs to do to provide complete support is to provide constraints for individual form factors, allowing different images to be selected from the launch storyboard based on device model, OR use a provided launch image in preference to (or prior to) a launch storyboard. Best of all, they could just remove the arbitrary and silly restriction that prevents access to full iPad Pro resolution unless we provide a launch storyboard, which restriction seems to be in place for the sole purpose of strong-arming developers into supporting launch storyboards (before they provide equivalent functionality).

In the meantime (which will likely be forever), it makes sense to start figuring out how to adjust your launch design and strategy to work with launch storyboards. This is not unlike what is currently necessary for Android support, anyway. For our next project, we are investigating a high resolution square-ish logo that can be the sole image in a field of white, scaled to largest size possible to fit the launch screen.

Icon sizes you need to support iOS 12 and Android Oreo devices.

With the explosion of mobile devices, it keeps getting more difficult to keep track of the myriad icon sizes required for mobile apps. This post simply lists the required sizes and uses for iOS and Android devices (as of now).

When creating an application icon, it is best to start with an image that is (at least) the size of the largest icon necessary, which is currently 1024 x 1024, and then reduce that image to the necessary sizes, reducing level of detail as/if necessary for smaller icons.

iOS App Icons

As of Xcode 10 (iOS 12), Apple iOS devices have application icons for the app on three different device types (iPhone, iPad, and iPad Pro), the store, spotlight (search), settings, and notifications, and these icons may need to be provided in single (unadorned), double (“@2x”), or triple (“@3x”) scale factors.

For a “universal” app, you need to provide icons in 13 resolutions (for 15/18/19 different uses, depending on how you count). iPhone only apps need 8 resolutions; iPad only apps need 9 resolutions.

Here is a list of the iOS icon sizes, along with a color-coded list of the uses:

1024 x 1024

App Store – all applications (<title>.png)

180 x 180

iPhone application @3x (<title>_iphone@3x.png)

167 x 167

iPad Pro application @2x (<title>_pro@2x.png)

152 x 152

iPad application @2x (<title>_ipad@2x.png)

120 x 120

iPhone application @2x (<title>_iphone@2x.png)

iPhone spotlight @3x (<title>_search@3x.png)

87 x 87

iPhone settings @3x (<title>_settings@3x.png)

80 x 80

iPhone spotlight @2x (<title>_search@2x.png)

iPad spotlight @2x (<title>_search@2x.png)

76 x 76

iPad application (<title>_ipad.png)

60 x 60

iPhone notification @3x (<title>_notify@3x.png)

58 x 58

iPhone settings @2x (<title>_settings@2x.png)

iPad settings @2x (<title>_settings@2x.png)

40×40

iPad spotlight (<title>_search.png)

iPhone notification @2x (<title>_notify@2x.png)

iPad notification @2x (<title>_notify@2x.png)

29 x 29

iPad settings (<title>_settings.png)

20 x 20

iPad notification (<title>_notify.png)

Android App Icons

Android icon requirements had remained fairly consistent, but as of Android 8.0 (Oreo, API 26), those application icons are now classified as “legacy”, though still required for support on earlier devices (i.e., 85.4% of the market); the latest devices can use “adaptive” icons. All applications should have a store icon.

For most Android apps, you should provide application icons in 6-8 resolutions (none of which overlap with the iOS resolutions).

Note that some legacy icons can (technically) be omitted, but those sizes will be generated by the Android system from other sizes, and not necessarily the best resolution (i.e., a larger icon may be generated from a lower resolution icon, which looks poor). Therefore, only the low density (ldpi) icon is considered optional; no modern devices are low density, and if one was it would necessarily generate the icon from a larger source.

Adaptive Icons

Adaptive icons were introduced in Android Oreo to allow the system to perform visual effects with the shape and/or contents of an application icon. In order for this to be supported, adaptive icons need to be separated into foreground and background layers; the foreground contains the important content of the icon, toward the center, and the background is an image or color that may provide branding but could be clipped.

background – color or 108 x 108 image to be composited with foreground

The foreground and background may be moved or sized independently before being composited together, and the resulting image will likely be cropped into an arbitrary shape; Android reserves an 18 pixel border for these kind of visual effects.

Conclusion

For a mobile app to support all recent iOS and Android phones and tablets, you will need to create about 20 icons, in the resolutions above, including separate foreground and background layers for adaptive icon support. If possible, start by creating an App Store icon (1024 x 1024) from a separate foreground and background. Use that as a source icon to generate the smaller Google Play, iOS, and Android legacy icons, adjusting detail as necessary. Finally, resize the foreground and background layers appropriately to generate the components for the adaptive icons. (Then, take a deep breath.)

Now you are ready to implement your application. 😉 Of course, if you want to support Android TV, Apple TV, Android Wear, Apple Watch, Android Auto, and/or Apple CarPlay…

Don’t bury the lead.

Digital Gamecraft: What I Do

I will make your game idea into a real product. I will make your existing game much better. I will instill a sense of fun into your team. I will imbue your code with quality. I can help get your project shipped to customers.

This game developer is seeking additional work.

I generally work on a contract basis, but I can also do hourly or even full-time salary, as needed.

Note that I have many talented colleagues upon whom I can call, especially for art and music, to form a team of the necessary size for nearly any project.

Where?

Here. I can travel to almost anywhere in the world, and I have clients all over the United States, but I am most efficient (and prefer) working from my comfortable home office. That said, I will relocate (and have) for the right opportunity.

When?

I am available immediately. My time is booked to about 25% of capacity right now but that can change quickly. Act now, while I am still available for additional projects.

Why?

Love and money. I love what I do and I need to have enough money to keep doing it.

Seriously

If you want to have a top quality game developer on your team, or you have a game project that needs to be created or improved, contact me now.

Michigan development at full strength.

This week we completed some basic remodeling of the main Digital Gamecraft™ headquarters. After three years splitting time with Los Angeles, California, we have again consolidated here in East Lansing.

Before we piled too much equipment into this office, we took the initiative to clear it out, remove the nasty linoleum tile floor, repaint the walls bright white (from beige) to increase brightness, seal the floor to insulate the office from external odors, and install proper carpeting to muffle the ambient noise from multiple systems running in a limited space. With the addition of another bright lamp, this space is now very (i.e., even more) comfortable and conducive to productivity.

Of course, over so many years, we collected lots of equipment that is not as necessary, or downright obsolete, and (I hate to admit) an abundance of cables running every which way, including some that were no longer connected to anything on one or even both ends. Now we are reloading the office with only the necessary, convenient, and/or inspirational items (and the best ones, in the case of duplication). At the moment, it is still a little spartan with just the fundamental development systems, but we will build it out for better efficiency as we perform our primary programming tasks over the next month or so.

Meet the working stations

We have a few different stations set up for development work:

Windows and Android station (dual-boots Linux)

This primary development station currently handles Windows and Android development, as well as Linux, Unity (desktop), Unreal Engine, HTML 5, or almost any other platform for which we build products. It is positioned in the optimal location for seeing outdoors and minimizing reflections (to reduce eye strain).

Mac and iOS station (dual-boots Windows)

This secondary development station currently handles Mac and iOS development, as well as Unity (mobile), and other platforms when on the road. It, too, is positioned for reduced eyestrain, with minimal reflections and a direct view outdoors.

Relaxation station (in progress)

This station facilitates development by giving an opportunity to relax and break away from direct problem solving, which often gives the unconscious mind some time to work the problem, or to simply blow off some steam. This pinball machine is a Williams Fun-Fest, an electromechanical (EM) model produced in 1973, which is fully playable, but slowly undergoing some restoration. It has been accompanied by an original arcade Galaga machine from 1981, but that cabinet currently needs a replacement CRT or board.

This room also houses our primary server, which is headless, and a mobile device station consisting of two multiple device docks capable of charging 15 mobile devices (including Apple Watch) simultaneously, though we still need to charge the iPad Pro pen separately.

Older makes way for newer

In the course of setting up and making room for the latest equipment, we find that there are older systems and devices to be retired from ongoing development. In this go ’round, the following were retired:

Apple Mac Mini PPC

iPad (original, still on iOS 3.2)

iPod touch (2d generation)

Android 2.2 (Froyo) phone

Ouya

Microsoft Xbox 360

Some of our peripherals may be retired as well. Our duplicate X-Arcade Tankstick, as well as the older Dual Joystick and (separate) Trackball devices, are destined for storage. Our Microsoft Sidewinder joystick and Logitech/Momo steering wheel/pedals, force-feedback devices, will stay. We have 4 printers, 3 scanners, and 2 external optical burners (all useful) to optimize, and we have extraneous monitors, speakers, and various network routers and switches to stash. I guess we will retire the fax machine, too. 😉

Efficient usage of resources

Now that the remodeling, consolidation, and configuration of the office is (essentially) complete, we find that we have some extra time for external development projects. In these slow, summer months, we are booked to only about 25% of maximum capacity. If you have (or know anyone who has) need of a massively experienced game developer or team, please check out SophSoft, Incorporated at sophsoft.com.

Of course, we have (literally) 32 more game projects prioritized for development under our Digital Gamecraft brand, plus a separate productivity product (to be announced), but I would love to discuss how we can help you make your vision into a published reality.

Happy New Year! 🙂

The Roman calendar started in March (Mensis Martius), so by that measure I am not too late.

OK, so we are already two months into the Gregorian year, and this is only my second post. Frankly, those of you who know me personally will appreciate that I often have a lot to say, but when it comes to setting aside time in my busy schedule to write it down, well, my preference always tends to actual development (and my task list reflects that preference).

So, SophSoft, Incorporated and Digital Gamecraft have been acting like a duck, appearing calm and quiet on the surface, but paddling like crazy under the water.

Yes, we have been ducking. 😉

That said, we have been doing a great deal of development work on a few fronts.

What We Have Been Doing

Recent development work has been divided pretty clearly into three categories:

SophSoft has been continuing our long-term association with Goodsol Development, and there are a couple of products in the pipeline for release in the near future and, of course, more to come thereafter. There is a major release scheduled for March 21st (stay tuned), followed shortly by our two products, the first of which is already “in the can”, and the other being completed now.

Digital Gamecraft is going to be releasing Demolish! Pairs for Android soon, in conjunction with the refresh of Demolish! Pairs for iOS, which is currently in progress (as required by Apple). Another game is prototyped and approved for full production once that simultaneous release is (successfully) completed.

I have been leading a team, the Advanced Concepts Group, at DAQRI, to produce AR (augmented reality) software for enterprises (Professional Grade AR™), including the majority of the Worksense™ productivity suite, as well as the development tools necessary to build applications for the DAQRI Smart Glasses®.

With more than a dozen products actively developed already this year, not to mention also properly purchasing our Michigan home/office during the same period, perhaps that will put some perspective on my lack of blog progress. Now…

What (else) We Will Be Doing

In addition to the work mentioned above:

SophSoft has another (unannounced) product designed and in the early (prototype) phase. It is a slight departure from other projects we have previously done, but it should be groundbreaking. The first version is scheduled for release in “late Q3”.

Digital Gamecraft has a planned and prioritized list of game projects to undertake, with four more expected to be developed during 2018. However, we should probably emphasize the “agile” nature of this schedule.

With DAQRI, there are several exciting (but, alas, non-game) projects scheduled throughout the year and into 2019 and beyond. I am not at liberty to reveal any of these plans, of course, but I have seen the future of industry.

Personally, I have two close family weddings and a big family reunion all scheduled during the summer (in three different months), so I should be increasing my air miles, too.

Conclusion

Everything is looking quite positive, and after Looking Back at 2017, I fully expect 2018 to every more productive and fulfilling. In fact, composing this blog post reminded me why I should be doing it more regularly: it helps me increase both my enthusiasm and my focus.

Overall Performance Grade: C-

It has been more than four years since we have done a proper ‘Year in Review‘ post and, frankly, it will be still longer before we do a proper one. However, we should take a look back on the previous year and take an honest appraisal of our performance and the work we have done at Digital Gamecraft and SophSoft, Incorporated.

Overview

Excluding politics, 2017 was not a terrible year for us, and for the most part we moved in a positive direction, with no catastrophic setbacks. However, it must be noted that our ostensible performance was disappointing. While we made big strides with internal development, we did not publish enough product (nothing directly from Digital Gamecraft) and did a poor job of communicating and marketing.

When one is spinning plates, it does not take much loss of focus to allow things to come crashing down. Right now, SophSoft is as “streamlined” as it has been since 1994, so with fewer manhours to utilize, we tend to focus on the crucial issues (e.g., paying bills) and the tasks that we perform best and enjoy the most (i.e., development).

What Went Wrong

Because I gave us a below-average grade, we will start with the negatives for 2017:

We did not publish any Digital Gamecraft products (or even updates).

One of our Demolish! Pairs products was removed (forcibly) from the App Store.

Our primary web server crashed (hard) in the summer and we are still recovering.

Time spent in Los Angeles is far less productive than East Lansing (for reasons).

The current US Government is attempting to destroy this country for generations.

What Went Right

Now, we can end this with the positives about 2017:

We essentially finished Demolish! Pairs for Android and it plays great.

Another (unannounced) project made great strides after languishing for years.

Conclusion

Ultimately, being disappointed with shipping an average of more than one product update per month is probably a good thing; however, we can definitely do better, and that will be the subject of my next post, Looking Forward to 2018.

We have been working with Goodsol Development for 15 years now!

On this date back in 2001, SophSoft, Incorporated made our first software delivery to Goodsol Development. Since that time, we have never stopped working together, producing the best solitaire software ever created.

To save everybody a little bit of math, this means that, on average, we have delivered a new product version once every 10 days, and we have added a new game of Solitaire every two days, for the entire 15 years. Amazingly, the number of delivered versions for Pretty Good MahJongg and for Pretty Good Solitaire Mac Edition are currently exactly the same: 88 of each. [Spoiler: PGMJ will take the lead with a macOS Sierra bug fix.]

No news can also be bad news.

It has been a couple of months since my last blog post, and in that time, there has not been a lot of encouraging news about the game industry, business, or life in general. We have often heard, “If you don’t have anything nice to say, don’t say anything.” More specifically, I do not want to spend a lot of time and effort whining (or whinging, if you prefer) and filling this Gamecraft blog with negativity. However, that can result in a very quiet site sometimes. That said, it is past time to provide an update, despite its somewhat unfavorable tone. (Besides, with 475,830 spam comments rejected and very few actual comments, and fewer informed opinions, evidence is that few will read this anyway.)

The positive is that we are still alive and kicking and, with Goodsol Development, we continue to publish and improve the best solitaire games on the planet. Nevertheless, what has been appreciated in the past as fantastic fun, quality workmanship, and excellent support is now just expected from us as par for the course, and rarely recognized nor appreciated. If “the squeaky wheel gets the grease“, then perhaps by eliminating any squeaking wheels from our products, nobody cares anymore. 🙁

Winter of disappointment

The overwhelming feeling over the past several months has been one of disappointment. Nothing catastrophic has happened, but the total weight of one minor setback after another, and one dissatisfying interaction after another, without many positives to offset them, is definitely sapping my remaining optimism. At first I was interpreting most of this solely in terms of the game industry, or even just our little part of it, but it is now clear that the same type of problems run throughout our society and culture. This realization does not inspire a hopeful mood in me.

Still, the Richard III interpretation of this section title provides something on which to hang my hopes. After all, there has to be a thawing in the spring (whenever that comes), and if my general expectations have fallen low enough, it makes it much easier for me to be pleasantly surprised. There have to be more people out there who do not automatically approach every interaction with the thought, “what’s in it for me?”

In other words, there is nowhere for my attitude to go but up. Actually, I have fallen to a very succinct phrase that describes it perfectly, but since the command verb is an expletive, I will go ahead and leave that to your imagination.

Practical adjustments

Given the current situation, we are making a slight switch away from “business planning” and toward “take things as they come“, especially since something significant is likely to change our course in the short term anyway (or else there may not be much of a long term at all). Independent game development has become (practically) unsustainable.

As part of this shift, I am reorganizing my general schedule, compressing the business functions (which have been generally unsatisfying) into just a few days each week, leaving the majority of my time for pure (hopefully, uninterrupted) development work, which is what I truly enjoy. After any client needs are met, I will be focused on designing and building the kind of games I want to make.

The next game industry crash is already underway, but I will not go down without a fight!

Anybody who wants to prove me wrong can do so, easily, by hiring me for game development. You can find my résumé linked from my online portfolio.

You have a game idea. Let us create it for you.

This week marks 20 years (!) since we first took our company full-time. In that time, we have developed more than 25 products for a variety of clients. We have published games for Windows, Mac OS X, and iOS, and we have extensive experience.

Now, we are available immediately for new development contracts. We have a significant opening in our schedule, which we need to fill soon. This is your chance to have a world-class game developer working (or consulting) on your project. If you want to explore this opportunity, please contact me directly at seelhoff@sophsoft.com.