My five year old nephew started learning to play Chess recently, as I discovered on a visit a few weeks ago. We played two games, and I didn’t have too much trouble beating him, but for a five year old he’s not bad. He knows all the pieces and their basic moves and their relative value.
I thought it would be fun to build a video Chess game that he could use to help learn strategy and how to see the board. So this is my latest project. I’ll be posting more about that as I work on it.
My first step was to design graphic resources. I didn’t want to spend too much time on it, just a basic “programmer art” chess set, that I could use to build the program with. Of course, it didn’t end up that way, and I’ve gone down the rabbit hole designing variations on sets of minimalist pixel art chess men. It’s too fun and fascinating not to.
My first attempt was actually rather good, I thought. I went for 16x16px representations of the classic chess pieces. I drew them very quickly, but was very pleased with my results, particularly the Knight.
I could have stopped right there, but it was so fun to make this set that I wanted to continue exploring and see if I could refine my pixeling technique further.
I decided to search the net for images of chess pieces to see what variety there was, and found a lot of examples of beautiful sets. I started to take notes and to infer design rules for chess men:
Chess pieces are called “chess men” which seems antiquated and sexist, especially given that the most powerful piece in the game is the Queen.
The modern standard chessmen are a design named for English chess master Howard Staunton, and have been in use only since the mid-19th century. A strength of its design is that each piece is easily distinguished from the others, making errors from mistakes in identifying a piece — a problem with other sets — unlikely. Previously, chess men of different types had a less distinct appearance from one another, and were not as standardized.
In a Staunton set, the Knights are the most detailed, ornate, varied, and realistically represented pieces.
In Staunton sets, there is a standard height order: pawn, rook, knight, bishop, queen, king. (This surprised me, since Rooks are more valued in Chess I would have expected them to be taller than Bishops.)
The pieces are differentiated by their tops. Each type of piece has a distinct, unambiguous shape.
The body/base of the pieces have a common design, to create unity among the pieces in the set.
I tried to apply design choices to my chess set following these insights.
A follower on Twitter offered feedback that the pieces should be different heights, so I tried that. With a 16×16 pixel tile size, I could only shorten the back row pieces by 1-3 pixels. I also tweaked the King piece by adding a few more pixels to its top, to make it a bit more distinct from the Queen, and moved the Pawn so that it wold be more centered in its square.
I do like the result:
I think my initial 16×16 Staunton set look like they’re in ALL CAPS, while this set is more “readable” by using “mixed case” heights for the pieces.
I wanted my chess game to be focused on usability and instruction. I needed each piece to be immediately recognizable, and not to convey a bunch of extraneous information to the player that has nothing to do with play mechanics.
My next attempt was a different take altogether. I wanted the look of each piece to suggest its rules for movement. I also thought that it would be clever if the pieces communicated the rules for using them through their visual design.
I ended up being very pleased with this set as well, although I went through many more variations, particularly with the Pawn. This one also came together easily and rapidly. When your tile size is 16×16 and you’re working in just a few colors, it’s easy to work fast.
Things I like about this set:
The shape of the piece is a built-in tutorial for how the piece moves.
The Pawns still have a pawn-like shape (at least the black pawns; white pawns are “upside down”).
The Knight’s shape may be read as an abstraction of the horse’s head shape of the Staunton piece.
I think out of these variations, my favorites are: P9, Kn2, B3, R1, K? I’m least certain which King I like. I think K4 and K5 are my top two, but I also liked the idea of incorporating a crown motif into the design, to signify the King’s special property of being the King. K1, K2 and K6 were attempts at this, but I think K1 looks too much like a Staunton Rook, unfortunately.
I wasn’t sure which of my designs to use for my final set, so I posted my sets on Twitter and a pixel art community on Facebook. @Managore responded to my request for feedback by coming up with a set of his own design, which I quite like.
His design was retweeted and liked over 500 times, and received many positive compliments from his followers, many of whom are game developers. One of my favorite indie developers, @TerryCavanaugh, who made VVVVVV and Don’t Look Back, pointed out an physical chess set that had been designed a few years ago which incorporated the same ideas.
It’s exciting to see my idea get picked up and reworked by fellow game developers who are inspired by the concepts I am exploring. So fun! Getting that validation that what I’m working on is interesting to others is very motivating. But it’s particularly good to get some attention from developers whose work I’ve admired for years, however modest.
I’m excited about this project and look forward to working on the program. I have more design ideas that I’m looking forward to getting into soon.
My friend Douglas Underhill wrote an interesting article about game design, dealing with the frequency of an ability’s use with its reward payoff. Doug’s question comes down to, given that there are hundreds of abilities to potentially pick from in character design, and that certain abilities are either useful much more often and in a much wider range of situations, or else provide a much greater payoff than others, what can be done in designing the rules system and/or world to encourage diversification in putting a finite amount of skill points into skills that are useful less often, or which provide a lower expected payoff.
Underhill asserts that, ideally, less-used abilities should be higher in their payoff, in order to encourage players to put character building points into them at all, while frequently used abilities should be low in payoff, to offset their wider applicability and to prevent the game from falling out of balance. But it’s an inherent problem because the feedback of high reward will encourage the use of an ability.
Essentially, though, game design encourages the use of abilities that grant a high reward, and the higher the reward, the more likely the player is to use and rely on that ability (barring some other limiting mechanism that mitigates or suppresses over-use).
But beyond unbalancing the game, or making the player’s strategies predictable and boring due to min-maxing, the reward weight/use frequency of abilities in a game’s design will determine and shape what the game is about. Dungeons and Dragons is nominally about role-playing and fantasy adventure, but its rules systems make it a game largely about dice rolling and fantasy medieval combat.
Tabletop RPGs are inherently flexible, though, so a given group of players might opt to make their game (or at least a particular game session) about negotiation and barter in a fantasy medieval economy, and there’s nothing wrong with doing so. But it’s much more likely that the typical group of D&D gamers will spend most of its time fighting and questing for objects and abilities that make them ever better at fighting and surviving in exotic, hostile fantasy environments.
After reading Doug’s article, it got me thinking about how this principle applies in video game design. (more…)
The auto maker Lexus used to have a marketing slogan, The Relentless Pursuit of Perfection.
This sounded really good, right? As a customer, you would like perfect products. You don’t want to spend money to acquire problems.
But from a making perspective, perfection is often the enemy of good. It turns out that perfection, the idea of perfection, as well as the pursuit of it, has a lot of problems.
Perfection as Impossibility
First, everyone has heard the cliche that perfection is impossible in the real world. No matter how hard you work at something, there will always be some tiny deviation from the ideal defined by the design or blueprint. We build things to tolerances, understanding that exactly hitting a desired metric is practically impossible. But we don’t need exact, we need good enough, and good enough can be as precise as it needs to be for the application. In some situations, tolerances are more critical than in others.
Chasing after something impossible can waste a lot of resources, and the futility of it can be frustrating. People tend to put an undue amount of pressure on themselves, feel negatively about themselves when they prove incapable of attaining such a high standard, and react negatively to mistakes and criticism, or even hide or deny problems rather than own up to them, which is exactly the wrong way to respond to these learning opportunities.
Subjectivity and Contingency
Second, what is perfect? People have different needs, different opinions. Needs change as the times change. What is ideal for one situation is likely not ideal in another. There’s no such thing as a one size fits all solution that is a perfect fit for everyone. So perfect then means something more like highly customized, bespoke solutions.
But the amount of resources that are required to create such customized solutions for everyone are often better allocated toward more general solutions that are a better fit for the needs of larger groups of people. Imagine an auto maker taking your exact body measurements, and then using those to build a car with a seat that fits you — and only you — exactly perfectly, and where the dashboard and mirrors are likewise laid out in a perfect way so that you can see all the gauges and reach all the controls without straining.
But this would make a car that is many times more expensive to design and build, is much more expensive to maintain and support, and which has limited resale value. It’s much more cost effective and beneficial instead to design a car with adjustable seats, that can fit 99% of people, is cheaper to design, manufacture, and support, and can be sold to anyone, not just people who are close enough in size to you that they can use your bespoke seat.
And even then, a car that is good for commuting isn’t going to be the best for cargo hauling. Or have the best possible fuel efficiency. Or be good off-road. Or have the safest crash rating. The perfect car contingent upon the usual need will score high in several of these important categories, but different users will value categories according to their own criteria, and may have a variety of use cases that they need to cover with a single vehicle, that cannot possibly be perfect for every need and every situation.
The foil of Trade-Offs
As is apparent in the car example above, most things are complex enough that there are always going to be trade-offs. For example, a structure may need to be strong, but often weight is another important factor, and making something both strong and lightweight is a challenge because increasing one tends to diminish the other. Thus, a perfect thing in all aspects is not possible, but perhaps we replace the idea of a thing that is ideal in all categories with the idea of a thing that is a perfect balance of tradeoffs among the categories. But this sort of perfection is a lot more dependent upon subjective and contingent parameters. A set of compromises isn’t the usual concept of what perfection means.
The more you want to improve something, the more effort needs to be put into improving it. At some point, the amount of improvement that you gain for the amount of effort that you put into the improvement will start to decrease. At some point short of perfection, the value of the improvement isn’t worth the effort.
For example, I could study for 2 hours and get an A on a test. I could study an additional 4 hours, and boost my A to an A+. Perhaps by studying 8 hours, I could score 100% on the test. Is it worth it? Or would that 6 hours be better spent getting an A on three other tests?
Can you hear the difference between a $500 stereo and a $5000 stereo? And if so, is it worth spending 10x as much to get that difference? Is a $200 CPU good enough, or do you really need the $1000 CPU that delivers merely 2x the performance? Sometimes it might be. But the situations where extreme high performance is required are comparatively few.
Perfecting a local maximum
Perfecting a thing requires focusing on the thing. But what if the thing isn’t the important thing, and the thing is merely a means to an end? Say you want the best bicycle. So you spent all your time working on making bicycles better, better, and better still. So now you have a bicycle that’s nearly perfect. In the early days of pedal-power, the design of bicycles was much different.
A design known as the velocipede featured a large front wheel driven directly by pedals, and a tiny trailing wheel for balance. This design was popular for a time, and in the quest for ever greater mechanical advantage for producing higher top speeds, the front wheel diameter was increased. This gave rise to diminishing returns, and negative tradeoffs in balance and safety.
Prior to the invention of the modern bicycle, velocipede design had evolved to a point where it could go no further. Wheel size was so large that any larger would be impractical or impossible. This was a local maximum for the design, the zenith of a particular design concept, but still better designs were possible.
Eventually the design died out when an inventor hit upon a better design, the modern bicycle, which featured two wheels of identical size and a chain driven gearing system that allowed higher gearing ratios than were possible in the now-obsolete direct drive velocipede designs.
Missing the next-gen paradigm shift
But what if your goal isn’t really to ride bikes exactly, and you simply want to go from point A to point B quickly? There might be other vehicles that are better, but if all you can think of is a better bicycle, the idea to invent them may never occur to you. Famously, bicycle mechanics Wilbur and Orville Wright pioneered the airplane. If they’d been focused exclusively on perfecting the design of the bicycle, they never would have come up with their flying machines.
And paradigm shifts continued to happen with flight, from bi-planes to monoplanes, from propeller driven airplanes to jets. At each stage, what worked for the current generation could only be taken so far, and to make the leap to the next generation required a re-thinking and a discarding of older concepts in order for even better concepts to flourish. The old continued to serve while the new was developed, but eventually once the new concept was proven a success, the old fell out of favor. And yet, at no stage was anything truly “perfect.”
The relentless pursuit of improvement
This is not to say that we shouldn’t make things as good as you can. But whatever we do, is always done within the scope of certain constraints. Being aware of those constraints, we should make intelligent choices in order to maximize value, without being trapped by an idea of a perfect thing.
PNG_2_room is a simple, easy to modify demo for how to populate a room with instances according to a color coded image file.
Each pixel in the source image can be color coded to correspond to an object or tile in your game. Use the script room_instance_add_from_png() to populate a room with instances using the image as a key.
For example, this PNG image:
…was used to generate this room:
You can modify the script to use whatever colors you wish to represent whatever objects or tiles in your project.
With this script, instead of using the built-in room editor, now you can use any image editor to create maps for your game more quickly!
You can even allow players of your games to create their own custom maps for your game, using whatever image editor they choose as a resource editor for your game!
A simple demo included in the asset shows how to use the script.
Once again, this Friday I’ll be joining with my fellow Cleveland Game Developers friends to participate in the 2016 Global Game Jam. I’m looking forward to hearing what the theme will be this year, and seeing all the games the different groups at the Shaker Heights location will create. Special thanks to Launch House for hosting us again this year!
Laptop ergonomics are always a compromise. If you put in long hours on a laptop, you know how important comfort and usability are to productivity. So getting the best possible ergonomics given the constraints imposed by the design requirements is extremely important.
It seems many hardware design engineers have forgotten this. The quest for thinner, lighter, cheaper seems to have overshadowed comfort and usability, durability and ruggedness. With each passing hardware generation, we see the same refrain: “The new keyboard is not so bad, once you get used to it.” If we have to get used to a “not-so-bad” keyboard with every generation, doesn’t that suggest that they’re getting worse over time?
And yet, the keyboard is the one component of a laptop that you have the least configuration options for. There are no choices, no upgrades; the keyboard is the keyboard, and you get whatever the manufacturer designed. That means it’s all the more critical that manufacturers give their customers the best possible keyboard.
What if manufacturers gave us keyboards that didn’t take “getting used to”, but felt fantastically comfortable from the moment you used them?
Without a doubt, the best keyboard I have ever seen or used on a laptop has been the keyboard of my Lenovo ThinkPad T61p. It’s no secret, and everyone who’s used one knows how good they are and how far short any other laptop keyboard compares. This keyboard is so good that I’ve continued to use my T61p originally purchased in 2007. After my original T61p died this January, I shopped around looking at the new ThinkPads… and after looking at what was available, I went to eBay and bought myself another T61p.
I won’t be able to do that forever. Already, I feel a need for a machine that can support more than 8GB of RAM, and the new Core i7 CPUs are so much faster than my by-no-means inadequate 2.4GHz Core 2 Duo. And the battery life we see with the current generation of “ultrabooks” in 2015 is impressive.
Will we ever see a return to the keyboards of yore? It wish that it was not in doubt. But I have hope. It appears that Lenovo has finally responded to customer feedback, when this spring they brough back the old style trackpads with physical buttons that had disappeared with the 540 generation. And today, it appears that they are actively soliciting fans of the old ThinkPad brand to ask them what features made the old ThinkPad so legendary. And they updated the X1 Carbon with a more standard keyboard layout in response to complaints and criticism over a senseless radical departure from the norm. Perhaps we’ll glimpse perfection again someday.
To be sure, we will not see a return to greatness if we fail to recognize the things that made the best keyboard of all time so great.
Close to perfection
Behold, The T61p keyboard in all its glory.
Let’s take a look at what makes this keyboard so great.
Full-size keys, spaced the correct distance apart. This makes typing for long periods of time less tiresome, especially for people with larger hands.
Scissor Switch technology allows for longer travel for a laptop keyboard, which is more comfortable than “chiclet” keys. It’s not a full height keyboard like you’d find on a desktop class machine, but it’s very close, giving it a good feel and making it more comfortable again for long typing sessions.
The layout of the non-standard keys is ideal.
It’s important to appreciate how critical the placement of these keys is. Let’s look at them in detail.
A full row of Function Keys, F1-F12. In many newer layouts, this row is eliminated and the F-keys are combined with other keys. This makes compound keystrokes impossible if the F-key needs to be pressed at the same time as the key it is combined with. That’s probably pretty rare, but it is still nice to have this row of keys to themselves. I think keyboard designers eliminated this row in order to make room for larger trackpads. I don’t like large trackpads for a few reasons, which we’ll get into in the Trackpad section.
The arrow key cluster. Most importantly, the arrow keys are all full-sized, and arranged in an inverted “T” formation. Many keyboards save a key by squishing the up and down arrow keys into the space of a single key, putting all four arrow keys in a line, but this space savings comes at a cost of making up and down half sized, and makes controlling games that use the arrow keys way harder.
The other important thing about this cluster is the presence of the “Previous page” and “Next Page” buttons to either side of the up arrow. These are often replaced with “Pg Up and Pg Dn” buttons. I like “previous” and “next” here because it makes navigating web pages with this cluster very fast. I don’t have to move my fingers at all and I can scroll and hit the Back button or Forward button in a web browser. It’s very convenient, and I really miss it whenever I have to use a keyboard that doesn’t have this layout.The Insert|Delete|Home|End|PgUp|PgDn cluster. I really like these where they are, too. Being at the top right corner of the keyboard makes them simple to find by feel, without having to take my eyes off the screen. The Home/End and PgUp /PgDn pairs go very naturally together for navigating text documents with the keyboard. These navigational shortcuts are a great alternative to scrolling with the mouse wheel, and for moving the cursor when text editing. Insert and Delete change the cursor mode, Home and End can take you to the beginning or end of a line of text, while Ctrl+Home or Ctrl+End will take you to the beginning or end of the entire document. Pg Up and Pg Dn are better for scrolling than the mouse is, moving an entire window height up or down at a single keystroke. Clustering them in this arrangement makes for very intuitive and quick document navigation using the cursor, and enables me to be much more productive when working in text files or reading than if I have to move my hand to the trackpad or mouse.
Print Screen, Scroll Lock, and Pause/Break. These don’t get used a whole lot by most people. I use Print Screen all the time, to make screen captures, but the other two hardly at all. Putting them up here out of the way works. Having Print Screen at the left edge of this 3-key row makes it easy to find by touch, without having to take my eyes off the screen to look for it.
While we’re looking at this group, note the power button (the circular button at left.) While not part of the keyboard, proper, I will remark that I find the power button difficult to find by touch. If I’m fumbling around in the dark, it’s easier to find the ThinkVantage key, which feels more like I’d expect the power button to feel like. So, one thing I could recommend is change the power button, locating it closer to a corner of the keyboard, and give it a shape and feel more befitting a power button.
Keycaps shape and feel
All the keys are just shaped right. These keycaps are close to what old classic IBM Selectric typewriters and Model M keyboards felt like, and those were some of the best keyboards ever manufactured.
The Enter key isn’t L-shaped, which leaves room for the \| key directly above. The \| key doesn’t really have a reason to be larger, but it keeps symmetry with the Tab key on the left side, and helps a touch typist feel this edge of the keyboard. Esc isn’t double-sized, as it is on some later model Lenovo keyboards — I think making it the size of the Ctrl key, slightly larger than the standard key, would make it easier to find by touch. Ctrl is slightly wider than standard, but I like that, although it would be better if Ctrl were in the position occupied by Fn, where it belongs. Backspace is another good key to be larger than standard, as it is used frequently by most, and this makes it easier to find in the top right corner.
Sufficient Key Rollover: a must have
Keyboard Rollover is is the ability of a computer keyboard to correctly handle several simultaneous keystrokes. N-Key Rollover (NKRO) is the ideal — it means that the keyboard can handle any number of simultaneously key presses. At a minimum, a good keyboard should have 6KRO.
I’ve mostly used high-end keyboards that have high #KRO or NKRO, and have only recently encountered a keyboard with low KRO. Unfortunately this happens to be my new ThinkPad P50, which is a great laptop in most respects, but it has a paltry 2KRO. If I’m holding down more than two keys simultaneously, a third key press often is not detected (depending on which keys are down). This makes the keyboard hopelessly unsuited to gaming, and as a game developer, this is really not acceptable.
You can test the key rollover of a keyboard by holding down both shift keys simultaneously and then trying to type the alphabet. If any letters don’t type, your keyboard has low rollover. This should never, ever happen on a high end machine. Or any machine, really.
Fn/Ctrl positions should be swapped
On most keyboards, the Fn key is nested between the Ctrl and Windows keys. On the T61p layout, this is reversed. There’s no reason for it, and it’s one of the most common complaints about the T61 layout. In fact, there are even third party firmware hacks to remap the keys into their preferred positions: Ctrl outside, Fn to the right. In the ideal keyboard layout, Ctrl should go first.
10-Key or not 10-Key?
Many widescreen laptops have 10-key numeric keypads these days, much like 104-key extended keyboards on desktop keyboards. This forces the main keyboard off-center with respect to the screen, which means that the users arms and hands will have to skew left of center the majority of the time when typing, which feels awkward. Unless you do a large amount of numeric data entry, a 10-key is not necessary or recommended for a laptop keyboard. Thankfully, at least the trackpad is still centered under the space bar, keeping it directly between the hands on most laptops with extended keyboards that incorporate a 10-key pad. But typing on the QWERTY keyboard, with the hands offset relative to the screen is less comfortable. The extra keys of the 10-key pad also add to the complexity and cost of the keyboard.
Most users don’t need a 10-key pad, and can live without. Unless you’re doing heavy numerical data entry, they don’t add of value. You could always buy a USB 10-key pad as a peripheral and use that if you needed one. Before laptops started sporting 10-key pads on the right of the main keyboard, they used to use the Fn key to use the right half of the keyboard as a sort of slanted 10-key option. I’ve never bothered switching into this mode, and don’t miss a 10-key pad. So, my preference would be for a regular QWERTY keyboard, without a 10-key pad, and the QWERTY keyboard and touchpad centered in the laptop chassis.
Still, some people will want 10-key pads and others will not — and the number who do not is not inconsequential. But the number of people who can’t live without a 10-key pad is much smaller than the number of people who don’t need it. I would prefer not to have a 10-key pad in my ideal laptop. This would be a good item to make a configuration option at time of purchase. Modular, interchangeable keyboard FRUs that have or omit the 10-key pad would be a great solution.
Are backlit keyboards necessary?
Again, some people like them, and some don’t. Illuminated keys can be helpful when typing in low light conditions, but they drain battery and add cost to manufacturing, although probably not significantly, since most laptop keyboards seem to use them these days. Most of them have an option to turn the backlight off and adjust the brightness level, and this seems to be the best choice. It enables everyone to be happy. On laptops which have this feature, I just turn the backlight off, and touch type as always.
Which type of switches is the best?
This is subjective and people can have their own opinions. These days, there are three main types of keyboard: chiclet, dome, and buckling spring. The T61p keyboard had scissor switches, a type of dome switch. These work and feel great — almost as great as buckling spring switches.
I find “chiclet” keys to be fine, I can use a chiclet keyboard without issue, and type fast and with confidence with them, but I still prefer the feel of the scissor switch keys on my T61p. Some people prefer the lower travel of the chiclet key, and manufacturers favor them today because they enable thinner designs. But I really prefer the feel of the full travel key caps, and the scissor switches in the T61p keyboard give a closer approximation of the way full travel keyboards feel.
The biggest disadvantage of the scissor-switch keyboard is that it adds to the overall thickness of the machine, but I strongly believe that thinness is a highly overrated feature. With ultra-thin laptops approaching 0.5 inches, there’s not much room left to go thinner. And there’s plenty of leeway for making a laptop a little thicker to allow for a better keyboard. The T61p is 1.4 inches thick, and I’ve never once felt that it was an issue. I would much rather have a thicker, heavier laptop that is more rugged and will hold up to years of heavy use, and has more room for expansion or battery, than a ultra thin and light laptop.
Really, though, on the switch type, I could go either way. Chiclet keys feel nice enough to be acceptable, but for longer typing sessions I truly like the additional travel and resistance of scissor switches. This is an area where making it a configurable option would be nice. A modular, interchangeable FRU keyboard offering the user their choice of chiclet or scissor switch keys would make everyone happy.
While we’re at it, let’s look at the pointing devices. First, we have the TrackPoint stick, the red nub. People who use them really love them, and they don’t get in the way of people who don’t. They’re a vital part of the ThinkPad brand and image, and should never be done away with.
Next, we have the touchpad. The touchpad is surrounded top and bottom with physical mouse buttons. these are well designed and robust. Positioning them top and bottom is important because it makes them reachable to both the thumb and fingers, regardless of where the hand is positioned on the keyboard or touchpad, which makes using the buttons quicker. We also see a middle mouse button, which is useful for Linux users.
As for the touchpad itself, it is only 2.25 x 1.5 inches — which is ideal. Newer generation notebook PCs have trended toward larger touchpads, which allows for greater precision with reduced sensitivity, but I really prefer this smaller size. It is not so large that it becomes an easy target for accidental bumps by the palm of the hand. I never accidentally brushed the touchpad on my T61p with the heel or palm of my hand when typing, which means I never accidentally click the mouse cursor away from where I’m typing. I do have this problem on many newer model laptop keyboards, and it is a constant, huge annoyance.
The touchpad is not multi-touch capable, and that would be a good improvement to add to this design. It does have scroll regions at the right and bottom edge, which are configurable.
The UltraNav touchpad driver is excellent, with lots of configuration options to get it to work just how the user prefers.
It’d be great if keyboards were more interchangeable in laptops, across different models and manufacturers. It would take a great effort of the industry to standardize the top half of all laptop chassis to have the same shape and size space for a keyboard. But there’s no reason it couldn’t happen, if manufacturers decided to standardize, or if a manufacturer decided standardize within their own product lines. The computer industry has standardized on other things, so why not a standard to allow laptop keyboards to be more interchangeable between different models and makers? This could spur innovation in improving keyboards, since users would not longer be stuck with whatever the designers engineered for a particular model — users would be free to upgrade and choose the style and layout that they prefer.
I doubt that it will happen on an industry-wide level, that we’ll be able to buy generic commodity keyboards from any maker and put it into any laptop, there’s just too much inertia for it. But it could happen if the industry decided it wanted to. Even if it didn’t want to, manufactures could standardize more within their own model lines, and offer a greater variety of keycap types and layouts to satisfy the preferences of different customers. I expect the main reasons they don’t do so have to do with cost, and to some extent integration and aesthetics issues. But these are not insurmountable issues.
For me, a better keyboard is still well worth paying some premium for. A keyboard that doesn’t feel cramped, has a familiar layout for ALL keys, and a satisfying feel, for me, would be something I’d easily pay another $50-100 for, if it were an option to purchase an upgraded keyboard that was just the way I like it.
[I got into playing Words With Friends on Facebook and my mobile phone back in 2012, and started writing a lengthy article on designing an AI to play scrabble-like games in a manner that convincingly simulates a learning human. This weekend, several years later, I’m a spectator at a local Scrabble tournament, and decided to finally finish up my thoughts.]
Designing AI for Scrabble-like games
I’ve been playing the Zynga game Words with Friends with various people for a few weeks, and have gotten progressively better at the game. After looking back and reflecting on the evolution of my play, and the development of my strategy, I became inspired by the idea of a convincingly human-like AI that embodied the various stages of my development as a player.
While actually programming it is a little more effort than I want to put into it, even just thinking about the design for such an AI is interesting.
Some time ago, Youtube channel Numberphile posted a video on a tartan based on the fibonacci sequence.
Inspired by this, I’ve created a fibonacci-based tartan of my own:
Isn’t it beautiful?
My design is based on the first seven numbers in the Fibonacci sequence: 1, 1, 2, 3, 5, 8, 13. It uses one thread of yellow, then one thread of red, two threads of dark green, three threads of navy blue, five threads of red, eight threads of dark green, and thirteen threads of navy blue. To scale up the size of the sett, I will be multiplying these numbers by seven. I call the tartan, Fibonacci-7.
I just started a crowdfunding campaign to register the tartan with the Scottish Registrar of Tartans, and have a kilt made with it. It will cost an estimated $2250 to have it produced. Once registered, the tartan will become available to textile manufacturers to produce cloth and garments in this tartan.
If you are interested in math or just love a beautiful tartan, please consider donating to the cause, and spread the word. If every visitor to this site donated just $1, we’d have funding within less than one month. So if you’re a regular reader of this site and have found my articles on GameMaker useful, please show your appreciation by donating what you can. Thank you.
I have created a font I call min. It’s the first font that I’ve created. I used bitfontmaker. It was easy and fun, and I liked it. I want to do it more. Minimalist pixel art is something I enjoy, and I wanted to try my hand at the glyphs of a typeface, so I created the most minimalist typeface I could that was still legible. I might have been able to go further but I like the size. Most letters are 3×5 px or smaller in their original drawing.
It’s also an asset package in the GameMaker Marketplace. If it does well I’ll probably create a font pack of fonts that I develop over time, and see how that does. So if you’re a GameMaker user, please download it from there so I can get accurate analytics stats.
Update: I’ve added a second font to the collection, submin.ttf.
A while ago, I started a series of articles that I never finished, on creating a configuration system for GameMaker games. I posted Part 2 almost 2 years ago, and had intended to follow up in just a couple weeks with Part 3, but it stalled and never came out.
A few readers have asked, so I figure an explanation is owed.
The series I had started on creating a configuration system has been on hold since the second article. As I got into designing the system, I kept running into problems with making my system platform-independent and universal.
I had intended to write a universal configuration management engine for handling things like monitor resolution switching, master volume, music volume, and sound fx volume, and a customizable set of configuration widgets for whatever your game might need (essentially, a set of generic, reusable buttons, sliders, checkboxes, and other UI controls). Ideally, I had hoped to write a set of scripts that would use GML functions to define rooms and objects that would constitute the configuration system. Ultimately, I wanted to create a GML script config_system_create() that would set up the entire system — rooms, objects, and functionality, so that you could simply import a GEX extension, call one function, and have a full-featured system generated at runtime, without having to spend any time designing and implementing all the resources yourself. But in GM:S, YYG obsoleted the functions that allowed me to define objects at runtime, execute strings as GML code, and a number of other functions relating to how Windows handles video and audio.
My goal was to enable a developer to drop in my finished configuration system as a GameMaker extension, and invoke its default implementation with a single function call, and use other function calls in the extension to build custom features, but use most of the features without modification, beyond turning features on or off, and to also have the capability of adding customized settings specific to their game. I wanted to write my system one time, and have it be re-usable so that I could save myself from having to spend a lot of time re-creating the system in each new project.
Most difficult of all, it requires that I design a system that anticipates every need a game developer might possibly have, for any type of game they might dream up. Doing it one time and never having to touch it again would be great, but it’s probably not realistic.
This was an overly-ambitious goal. I’m laughing at myself a bit, now, thinking about it.
Still, there were a lot of achievable ideas that I had for the tutorial, and a demonstration of how to implement them would be a worthwhile exercise.
It won’t be drop-in, single-function system, and it’ll be specific to the Windows build target, but the design should be adaptable to your project with a little work.
I don’t want to make a promise for when I expect to deliver this, but I will complete the series and a reference implementation before I publish the first article.