Contrary to popular opinion, implementation inheritance is not a conceptually correct representation of an “is a” relationship in programming.

One of the most common intuitions people have in object oriented programming is that inheritance models an “is a” relationship between objects whereas composition models a “has a” relationship between objects. In the case of composition, this intuition is valid and causes no problems. Unfortunately however, the corresponding intuition for inheritance is actually wrong, despite how extremely popular it is.

The problem is that inheritance only actually models a small subset of possible “is a” relationships, and thus when programmers have the habit of thinking “I should use inheritance!” whenever they see any “is a” relationships the inevitable outcome is nearly always a poorly designed representation of the relationships between the objects being modeled.

Continue reading Contrary to popular opinion, implementation inheritance is not a conceptually correct representation of an “is a” relationship in programming.

I’ve published a new revised version of my book Unified Logic!

My book Unified Logic, which was a #1 New Release in the logic category on Amazon in 2018, has now been updated with a new revised version. This new version features hundreds of improvements to the text, such as some better phrasing of some parts to enhance clarity and tone, a fair number of hard-to-spot typo fixes, and various other editorial changes to improve the flow and overall feeling of some of the text. The preface has been especially highly edited, to help set the intended mood and audience better.

There are thus now three different versions of the book in existence: the 2018-07-01 version, the 2018-07-13 version, and the 2019-07-26 version. Only a single copy of the 2018-07-01 version exists though, as far as I’m aware, and it is in my possession. So really, in practice, this is the 2nd version of the book from the public’s perspective. I am quite happy with how it turned out. The changes in phrasing of many parts really help to soften some of the rougher edges in the text. The tone is now more nuanced and friendly, which helps to communicate my intent better.

Continue reading I’ve published a new revised version of my book Unified Logic!

Lack of proper attention to aspect ratio in game settings

It is somewhat surprising how often many game developers seem to not pay sufficient attention to the proper presentation of screen resolution choices with respect to aspect ratio in the settings screens (a.k.a. configuration pages) of games.

Many games (especially PC based games) will present the user with a list of resolutions to choose from somewhere within a graphics settings screen. The list will typically enumerate a number of different resolutions such as 640×480, 800×600, 1280×720, and so on. That’s all well and good of course, but something important is frequently missing from the displayed info: aspect ratio.

Continue reading Lack of proper attention to aspect ratio in game settings

More academics should self-publish commercially, outside the control of exploitive journal monopolies.

Ever since I looked into academic publishing many years ago, when I was considering what avenue I might publish my ideas in if I ever ended up publishing those ideas, I’ve been shocked at just how incredibly exploitive and corrupt so much of the academic publishing industry really is. You would think that it wouldn’t be nearly as bad as it is. Science is supposed to be the pinnacle of rationality and integrity, and yet so much of the financial side of it has been pervasively parasitically co-opted by corrupt journal monopolies.

Most academic journals seem to claim almost all of the intellectual property ownership of the research publications that academics end up producing. Even worse than that though, they also push all of this content behind expensive paywalls that are inaccessible to the same public that funded much of the research.

Continue reading More academics should self-publish commercially, outside the control of exploitive journal monopolies.

Game Dev Tip #10: A game without sound will often feel hollow, even if it is otherwise good

In theory, you might think that it should be easy to appreciate the merits of a game before any sound or music has been added to it, but in practice you might be surprised at how difficult this often is. A game which feels utterly fantastic with all its sound and music in place can easily feel very stale when you silence all of the audio.

The soundscape of a game often drastically impacts the emotions of the person playing it. It can make or break the game. It can even distort the ability of the game designer to accurately perceive what is working and what is not in the game. Don’t make the mistake of underappreciating the importance of having strong audio.

Continue reading Game Dev Tip #10: A game without sound will often feel hollow, even if it is otherwise good

Game Dev Tip #9: Learn how to be creative at will instead of just waiting for inspiration

Aspiring creators often express frustration with not having enough inspiration to feel ready to sit down and do some creative work. These people often say to themselves that they will finish their projects “eventually”, once sufficient inspiration strikes them. They repeatedly postpone their work, using lack of inspiration to justify doing so. This often reduces their creative output to almost nothing.

However, in reality, this kind of problem can be easily avoided. The entire idea of thinking you need to wait for inspiration to strike is usually misguided. It is most often simply used as a nice feel-good excuse to subconsciously justify procrastination. It’s a way to avoid really facing your challenges, while still feeling high on your own imaginary creative genius that you will “eventually” fulfill.

Continue reading Game Dev Tip #9: Learn how to be creative at will instead of just waiting for inspiration

Game Dev Tip #8: The more you try to rush the slower you will usually accomplish your goal

Game development is a very time and labor intensive task. There are so many different moving parts and details that need to be refined and polished. Inevitably this can end up taking quite a long time to do right. It is therefore understandable that many people would feel the urge to rush through their work, given how much they still need to do to complete a project.

However, rushing through game dev work very often will backfire. Rather than speeding things up, doing so will actually often just slow things down. Sure, in the short term rushing may seem to work fine, but in the medium and long term you will usually pay dearly for it. Sloppy work in game dev tends to create lots of compounding problems that will take a long time to fix, if indeed you ever manage to fix them at all.

Continue reading Game Dev Tip #8: The more you try to rush the slower you will usually accomplish your goal

Game Dev Tip #7: Most game designers should learn at least some computer programming

There is nobody more widely disdained among professional game developers than an unskilled “idea guy/girl”, i.e. than someone who thinks they should be allowed to just come up with all the creative ideas and have everyone else on the team implement those ideas without doing any of the work themselves. Ideas aren’t enough.

One of the fastest ways to get a game developer to ignore you is to tell them that you have some “great game ideas” but don’t have any actual game creation skills yourself and that you want their help. Everybody in game dev has their own game ideas. Very few game devs ever want to work under someone who hasn’t proven their ability to create things with their own hands. You have to prove your creative ability if you want game devs to respect you.

Continue reading Game Dev Tip #7: Most game designers should learn at least some computer programming

Game Dev Tip #6: A much faster way of finding the best values to use for parameters

Tweaking the parameters for all the entities in a game until they feel just right is very important if you want the final product to feel polished, professional, and fun. Games that haven’t had their parameters carefully chosen tend to feel sloppy and amateurish. However, given that many games often have a vast multitude of different parameters that can be changed, this process can be very time consuming, especially if done in an undisciplined way.

Unfortunately though, many game designers often perform these parameter tweaks in a very arbitrary and naive way. They make changes far too inefficiently and unimaginatively. As a result, the quality of their parameter choices often suffers greatly as a result.

Continue reading Game Dev Tip #6: A much faster way of finding the best values to use for parameters

Game Dev Tip #5: Make your game fun as soon as possible, or else it may never be

One of the greatest dangers that a game developer can ever face is to fall so in love with the aesthetics of their theme that they lose sight of ever actually making the game fun. World building may indeed be a wonderful creative exercise, but it is not a game.

Fixating too much on theme will often cause game developers to spend huge amounts of time and resources creating assets that may never even contribute in any meaningful way to the substance of the game. Many game projects have been ruined by this. It often causes game devs to fly blind for very long periods of time without ever testing whether their assumptions about how the game will end up feeling are really true and without considering the schedule.

Continue reading Game Dev Tip #5: Make your game fun as soon as possible, or else it may never be