Programming Vexations Part 11: The Schism

By Shamus Posted Thursday Nov 21, 2019

Filed under: Programming 51 comments

There’s a bit of a schism in the world of programming. This divide isn’t over a single issue, but instead over a sort of emerging design philosophy that tends to cluster around particular ideas. It’s complex and multifaceted, and you could spend an entire book exploring all the various differences. In the broad strokes people talk about it in terms of being a debate between people who favor object oriented (OO) programming and people who favor data-oriented (DO) programming, but that’s mostly shorthand for a lot of competing ideas.

A couple of years ago I wrote about object-oriented programming, and the criticisms people have with it. Since then, that discussion has grown louder and more complex. What I’m about to outline is a simplification of this ongoing debate.

Yes, there are other programming styles / philosophies besides these two, but let’s ignore them for now because they’re not really relevant to game development.

Continue reading ⟩⟩ “Programming Vexations Part 11: The Schism”

 


 

Music Class Part 2: My Tracks

By Shamus Posted Tuesday Nov 19, 2019

Filed under: Music 68 comments

Like I said in the previous entry, this 30-day course involved doing 3 different projects. Each project taught a few ideas and required students to create a track that incorporated those ideas. So now it’s time for me to show my work.

Actually, it’s time for me to go on a series of meandering digressions about creativity and music, but I’ll post my work somewhere in the middle of it all.

Extreme Introspection

I used to share my music tracks on a regular basis. This was fun at the start of my musical adventure. I’d post something, and get a pat on the head from the public because I was doing okay for a beginner. But as time went on, two things happened:

  1. As I spent more time with it, I could no longer justify amateurish work with the excuse that I was new.
  2. I raised my expectations and thus became increasingly critical of my work.

I’ve had several fits of frustration over the last couple of years where I very nearly purged my Soundcloud account to delete all of my early tracks. My inability to improve has created this perverse hatred for my early stuff, as if the only way to get better is to bring up the overall average quality by destroying the worst bits. Yes, I realize this impulse is horribly vain.

(Strangely enough, Soundcloud seems to have solved this problem for me. Their shifting pricing plans led me to drop my subscription, which means my account reverted to a free account, which means I’m over budget in terms of upload time, which means that a lot of my early tracks are disabled.)

I have this terrible self-indulgent cycle I go through where I get frustrated with my work because I don’t sound like Armin Van Buuren or Deadmau5. Then I realize it’s completely unreasonable to expect to be able to create on the level of superstar artists, and even more unreasonable – bordering on delusional – to expect to be able to work on that level when you’ve only been composing for five years. And only part time. And you don’t even play an instrument. And your musical diet is fairly narrow. So then I give up for a few months. Then I hear something that tickles my brain and makes me want to try again. I’ve got sky-high expectations and rock-bottom skills, which isn’t really a good recipe for a healthy and rewarding hobby.

Continue reading ⟩⟩ “Music Class Part 2: My Tracks”

 


 

Diecast #279: Hyper Light Drifter, Superliminal, Mailbag

By Shamus Posted Monday Nov 18, 2019

Filed under: Diecast 55 comments

I notice I get a lot of emails from people just AFTER recording the show. At first I thought this was a fluke, but now I’m wondering if they’re trying to send in their questions just before the show, but they misjudge the timing. For the curious, our recording session happens sometime on Saturday night / evening, East Coast time.

I do try to put questions in the order that I receive them, but it’s also true that last-minute emails are fresher in my mind when we do the show. That’s not advice, that’s just an observation.



Hosts: Paul, Shamus. Episode edited by Issac.
Diecast279

Show notes: Continue reading ⟩⟩ “Diecast #279: Hyper Light Drifter, Superliminal, Mailbag”

 


 

Programming Vexations Part 10: Header Files

By Shamus Posted Thursday Nov 14, 2019

Filed under: Programming 105 comments

I’ve talked about C++ header files before. Like I said earlier in this series, the C language was designed in an age where memory was scarce and it wasn’t feasible for the compiler to hold your entire codebase in memory at once. So projects end up broken up into many different files.

The file marine.c needs to refer to the code in weapons.c, and vehicles.c. Somehow the compiler needs to be aware of the contents of those other files without loading them entirely. So we have a header file, which lists the contents of the other files. It’s like an inventory list. When the compiler is working on marine.c, it loads the header file weapons.h. Then the compiler can say, “Oh, I don’t know what the code for WeaponReload () looks like, but according to the header file I can tell that the code exists. I’ll just keep compiling and trust that the code for WeaponReload () will show up later when I’m compiling some other file.” This way the compiler can know that WeaponReload () exists, and the typo WeaponRelaod () doesn’t, enabling it to catch your error.

Continue reading ⟩⟩ “Programming Vexations Part 10: Header Files”

 


 

The Dumbest Cutscene

By Shamus Posted Tuesday Nov 12, 2019

Filed under: Column 121 comments

As I’ve mentioned before, the entries in this series exist as both articles and videos. You can watch the video version, or you can scroll down and read it. The one I’m showing you today was actually the first video we produced in this series. It was kind of a pilot episode so we could get a sense for what the series should feel like. I need a little personal time, so I’m posting this now to fill the gap. If it seems a little janky, that’s why.


Link (YouTube)

Continue reading ⟩⟩ “The Dumbest Cutscene”

 


 

Diecast #278: New Steam, Spreadsheet Games, Pretentious Games

By Shamus Posted Monday Nov 11, 2019

Filed under: Diecast 124 comments

I notice some people would rather ask us questions in the comments rather than use the email in the header image. That’s fine and I don’t blame you for taking the path of least resistance. However, your laziness is compounded by my laziness. I usually gather up questions just before we record the show, and I rarely remember the questions that were asked in the comments a week earlier. You’re free to ask questions however you like, but I’m old and forgetful. If the question is really important to you, then you should probably email it.



Hosts: Paul, Shamus. Episode edited by Issac.
Diecast278

Show notes: Continue reading ⟩⟩ “Diecast #278: New Steam, Spreadsheet Games, Pretentious Games”

 


 

Programming Vexations Part 9: The Problem With Engines

By Shamus Posted Thursday Nov 7, 2019

Filed under: Programming 77 comments

In the previous entry I talked about the lack of game-specific types and features in C++, and how this leads to library proliferation, compatibility problems, and a massive duplication of effort. The idea was that a language designed for games ought to contain types that are common to all games. Several people argued in the comments that you shouldn’t add these sorts of things to the language itself, but rather provide them through the standard library.

This leads into a side argument over whether or not we should consider the “standard library” to be part of the language, which is one of those questions like, “Is the bun part of the hot dog?” where everyone thinks the answer is obvious, and are then horrified to discover another group of people who think the opposite answer is the obviously correct one. So then they take turns hitting each other in the face with the dictionary.

Welcome to the internet, I guess.

But since we’re here, I might as well sort this out for people who work in sensible careers rather than becoming programmers.

Continue reading ⟩⟩ “Programming Vexations Part 9: The Problem With Engines”