Coding Baby Steps


It’s been a few weeks since the last devlog, and I figured I would write an update as I begin to come out of the conceptual phase.

Adapting to high level

I was both excited and weary to get back into programming. I wrote my last line of code in 1993. Back then I was using Motorola 68000 Assembly, a trivial language in itself, contrary to what I’ve heard. You could program an entire game with a limited set of instructions. Anything else was out of the question on Atari ST, not even C, if you hoped for any performance.  The problem was not the language, but the need for intimate knowledge of the hardware. You had to know and understand the structure of the screen memory, how the sound chip was addressed, how to pull data from the disk, and many other things.

My first game back in 1991

Today I face a different problem. I don’t need any practical knowledge of the Playdate inner workings. It’s all taken care by the SDK. It’s a natural evolution, with hardware becoming more powerful and complex. Considering the number of consoles available, portability is also critical. 

But I find modern languages (Lua in this case) more complex than Assembly, maybe because I’m new to it. It taps into notions that I never got to go around in Assembly. Objects, classes, methods, are all new to me. This means that only a portion of what I remember about coding for the Atari translates to the Playdate, which I expected. I'm not starting from zero though, being familiar with programs structure and the fundamental concepts of game development. What I know helps, but without fluent Lua, I’m crippled.

In many ways I feel like being sent back 30 years ago, when every step of the way was learning and discovery. This comes with the same sense of adventure and frustration. Every little progress feels like an accomplishment, but the journey is marred with innumerable bumps and bends. The most infuriating ones are the silly syntactic mistakes, but many others are rooted in my lack of modern programming knowledge. 

I can already see the massive time save of relying on libraries, but I’ll have to get used to trusting the low level code locked into a black box. Programming in the dark makes me insecure about performance, but I hope I can relax when I’ll get the console to run the code.

These days I divide my time in two main activities: the major part is for learning Lua, the SDK, and implementing the submarine overview I detailed in the last devlog. The rest is for documenting game design and making visual mock ups. I think this balance will shift back and forth with the needs of the development. 


It works!

I can’t describe the feeling of running your first bit of code with success, and seeing the result on screen (in that case the Playdate simulator on Macintosh). Even something as silly as drawing a window amazes me.

I had lost that feeling a long time ago, working as an artist for big game developers. When I started solo, videogame wasn’t even a thing, let alone a job. Then the industry grew, and I got swept with many others into something that undeniably produces videogames, yet which I could never relate to. 

The more successful (the term successful to be taken with caution) a videogame professional I was becoming, the more alienated I felt. I’m not the only one, and I don’t cast judgment on any of it. But the fact remains that making a pixel font for Atlantic ‘41 and seeing the text on screen feels more creative and genuine than anything I’ve made for videogames since I was behind my Atari ST. I don’t know what it says about me, or about the AAA industry, as we like to call it, so I’ll leave it at that.

Building the main font in Playdate Caps

All this to say that I’m impressed with the Playdate SDK. They have a nice application to generate pixel fonts, which runs in a browser. It’s clear and simple, and even generates automated kerning pairs. For someone who hates bad kerning in videogames, it’s a joy. 

From this I coded a simple system that takes any text string and displays it left aligned within a custom sized window. Looks nice and I’m happy with it. From there I plan to develop the dialogue system with character portraits. That will be the first building block for the submarine overview.

Very first bits of code running in the Playdate Simulator

Considering my inexperience, I’m fairly happy with how quickly I was able to get familiar with the SDK and to get my first code to run. But I won’t lie: there’s a lot of work ahead.


Ideas, Ideas…

Being knee deep in programing doesn’t prevent me from thinking about the game in broader terms. I have a few ideas that are interesting enough to mention, even though it’s too early to know if they’ll make the cut.

First I was thinking about a way to give historical context to the player. Not everyone is interested in WW2 history, but light exposition to the main events of the war would give the player a sense of the world outside the submarine. 

The press headlines in Railroad Tycoon 2

I loved the newspaper headlines in “Railroad Tycoon”. Something similar would fit in Atlantic ’41. This could serve both for immersion and as an achievement system. From a visual standpoint, I love the iconic spinning newspaper, or the printing press. I’m not sure if this could be done in 1-bit, but I’m willing to look into it.

Cool printing press animation

Aside from the U-boat overview, I was trying to wrap my head around the other gameplay screens left to mock up. I can think of these five:

Periscope view 

I doubt one can make a submarine game without the iconic periscope view. This is where you’ll track convoys, identify targets, and compute torpedo firing solutions. I’m anxious to get to this one, for its importance in a believable experience.

Genuine WW2 Submarine periscope view

Conning tower view

Similar to the periscope view, but more open, and higher on the horizon.  Where men watch for enemy aircrafts and smoke cigarettes. My hope is that if I can get the periscope view, this will almost come for free.

Picture taken from the conning tower of U-459

Map view

Where you’ll plan your course, review mission objectives, and get a general sense of your situation.

Original WW2 map with grid sectors

Radio view 

This view may end up embedded into the U-boat overview. For receiving, decrypting, and sending out messages. As a fun side activity, that’s where you’ll select the music records to play for the crew. I have a gameplay system in mind where you must unlock and collect various records, which all grant different bonuses to the crew.

Operator writing down a message in the radio room of U-124 (March 1941)

Hydrophone view 

This deserves a full devlog because it could be a cool and original gameplay. The hydrophone was a device that allowed an operator to listen outside the submarine. I imagine a gameplay revolving around sound, where you must listen to, locate, and identify propeller sounds. The hydrophone was an essential piece of equipment. Without it, the submarine was blind under periscope depth. It would make sense to reflect its importance in the game. But here’s the best part: the hydrophone was comprised of a big compas display, with a large needle indicating the heading  in which the hydrophone listened. And the operator had to turn a tiny yellow crank, I’m sorry, I meant a large metallic wheel, to swivel the needle around! So yeah. Has to happen. 


Operator sitting in front of a hydrophone

And this is the perfect segue to the last topic for today: sound.


The Sound of Silence

Recently, I’ve been thinking about the importance of sound. Sound matters for mood, but aboard a submarine, it’s also an essential source of feedback and information. Sound, or silence, was a life and death issue. “Das Boot” showed how the submariners relied on the sound of explosions to know if they hit their target. Sonars, propeller sounds, all played a major role in locating targets and avoiding threats.

That's no submarine equipment but my Moog semi-modular analog synth

Problem is that disk space is tight on the Playdate, which limits the usage of samples. I may have to rely on a combination of short samples for in game mood and synthesized sounds for UI. I don’t like in game music, unless it’s essential to the experience. Often, it gets on my nerves, particularly in slow paced simulations. 

Some of the effects pedals I'll use for music and sound effects

I think I'll have an intro music, and a few short jingles for specific events. Disk space prohibits long samples, and the soft, low key ambient in game music that I envision for Atlantic ’41 might be challenging to make with the sound chip. But I haven’t got to the synthesizer API yet, so who knows? From what I’ve read at a glance, the sound chip seems more than  competent, with a surprising wide array of features. I know that Teenage Engineering, the Swedish synthesizer company, built the hardware, so I wonder if the little Playdate may have inherited from strong genes in the sound synthesis department.

Moog Grandmother semi-modular analog synthesizer

Since I’m on the subject of sound, I thought I’d share a newfound passion I have for hardware synths, particularly modular and analog. As a creative exercise, I’ve decided to produce every sound and music myself, using only analog synths. I’m not sure if this can be done, but I’m a believer in arbitrarily imposed limitations, which can lead to interesting and coherent creations. Similar to how 1-bit enforces a specific visual style, the usage of hardware synthesizers could give an aural signature to the game. When you think of old radio equipment, the metallic sounds of machinery, I think analog synths fit that gritty quality. I have the feeling that this could be a good fit. It’s not a hill I’m willing to die on, but I’m excited to try.

More next time.

Comments

Log in with itch.io to leave a comment.

I’m enjoying the devlog immensely! Excited to follow along.

Thank you so  much! I struggle with Lua a bit but that's expected after being so long without coding :) It's such a joy to make a game again though, and I love the Playdate! I'm so impressed with what you and some of the devs on the forum already got out of this little thing.

Nice devlog and sounds like you have a lot of great ideas in mind! I know exactly what you mean when you talk about getting a simple piece of code to run. Great dopamine rush for sure!

For sure. There’s a unique mix of challenge and creativity that I find very compelling. Thanks for the kind words.