Every time one man says to another, "Tell us plainly what you mean," he is assuming the infallibility of language: that is to say, he is assuming that there is a perfect scheme of verbal expression for all the internal moods and meanings of men. Whenever a man says to another, "Prove your case; defend your faith," he is assuming the infallibility of language: that is to say, he is assuming that a man has a word for every reality in earth, or heaven, or hell. He knows that there are in the soul tints more bewildering, more numberless, and more nameless than the colors of an autumn forest."
Showing What Can't Be Shown
I've been thinking a lot about tone.
How 9/10 when I switch off the T.V. or put down a book it's because the tone didn't set well with me. Or I didn't get the tone at all.
And I mean tone in all three senses:
1. Tone - quality of sound
2. Tone - attitude of place
3. Tone - harmony of color
I think most of our frustration as artists comes from not being able to nail down the tone of our original idea. It really is less about our technical skills, playing with language or paints, and more about our ability to strike that quality of sound, convey that attitude of place, manage that harmony of color. Tone.
A genuine tone is worth a thousand words.
I think the art of nailing tone is the art of showing what can't be shown. It's saying what can't be said. Reciprocating feelings that we thought were only ours--and when we feel alone in our most deeply felt experiences, that's not solitude or quirkiness or individuality, but loneliness.
We need art and must make it because it alleviates loneliness--because it is an entire place in which we may not physically live but our souls certainly do. Because art, if its tonally rich, will also ring true. And because the right tone, grim or ethereal or paunchy, will at the very least be harmonious.
The Barnstone Method of Looking at Art
Now, I don't care what your discipline is, or if you only consider yourself a hobbyist or dabbler or whatever. If you're into finger paint or write poems for your eyes only, if you fire clay pots on the weekends and jot off fan-fiction every now and then, if you make your money from graphic design or spend half the year giving lectures on the legitimacy of video games.
You should take art classes.
And whether you actually care about picking up a pencil to draw or not, you owe it to yourself to watch the currently free Barnstone Studios Drawing Systems 1. (Use the code: STAYsafeDRAW). It's basically a master-course in the relationships of art: the relationship between Western and Asian and African art, the relationships in works themselves, how artists reveal their relationship to the world with how they render their subjects.
Learning how to see/view is learning how to notice and develop relationships with the outside world. No matter your medium, it's one skill you can improve that will improve you all around.
The sad thing about the art world today is that you have to call it the Art World. Art's no longer a part of the world at large; it's segregated itself behind tastemakers and price tags. In Michaeangelo's day, art was commissioned by cities and popes and families. The Greeks used art as philosophy. Temples weren't totalitarian gymnasiums with the obligatory decorative banner and bouquet of fake flowers--they were expressions of the impossible and mysterious. Art was everyday.
How many mural artists do you know of today? Why do large works of art only show up in the same dozen or so places, all of them major cities? Today there's no natural cross-section between art and everyday living.
Myron Barnstone, a burly Air Force veteran who was the toast of Paris in the 1960s and subsequently burned or locked up most of his artwork during his long teaching career, is a great example of someone who takes art seriously while also treating his students seriously. There's no high-brow or low-brow here. There's no room for that. For his entire life, art was an uncompromising and enthusiastic work. Not a hobby. Not even just a vocation. A way of looking at the world. He didn't think it belonged to a select few; after all, everybody's got eyeballs.
The Alphabet of Art
According to Barnstone, the language of art is so blessedly limited that you'll only find five "mocks" used throughout it.
Myron Barnstone found these five mocks: the dot, the vertical line, the horizontal line, the diagonal, and the arch.
Of these five, only two are actually found in nature. The dot and the arch. There are no straight lines in nature.
Straight lines are an abstract that humans have used since before the Egyptians. They come in three flavors: horizontal, vertical, and diagonal. Any piece of art will be dominated by one of three types of straight lines.
In a piece that is dominantly horizontal, a calm and quiet mood is established.
In a piece that is dominantly diagonal, action is strongly implied. The first word that came to Barnstone's mind was phallic. This is masculine, charging with a lance and all that.
In a piece that is dominantly vertical, order is the order of the day. This is balanced, not as active as a diagonal piece or as stable as a horizontal piece. Christ in his glory is both vulnerable and authoritative. Whereas diagonal pieces dominate with action, vertical pieces can dominate with stillness.
"Portrait Mode" is another way of thinking of vertical since 99% of portraits are vertical.
Beyond the 5 Mocks, there is not much else to art. You start combining dots and lines and arches and you get squares, rectangles, triangles, all the 2D shapes we've come to recognize. You apply light and shadow and you get value. You combine these and you get 3D shapes: cubes, pyramids, boxes, cylinders, cones. And if you take all as a whole, you get the gestalt.
The Long Road to Gestalt
This essay went through so many titles, and I'm still not sure what I was trying to say. I think I want paint in my verse and play in my paint and poetry in my game design--and that, most of all, I don't end up artless in the process. You know, someone who turns their nose up at the everyday without realizing that there is beauty all around. That to me is artless, because it's turning a blind eye. If art is ever about judgement, anyhow, its about judging ourselves and not others.
So perhaps I should leave it off here, or get back to this idea some day, or make a joke--if I knew jokes.
At the very least, I hope somebody new learns to appreciate Myron today!
Until next time.
In Excelsis Deo.
To celebrate the astounding amount of free content on the interwebz (and the Corona Time allotted to us to spend as we see fit), I'm compiling expert advice from some people on my creative family tree.
First up, Japanese animation auteur Hayao Miyazaki.
Studio Ghibli's Animation Software
...is absolutely free.
Miyazaki's Custom Paint Palette
Hayao Miyazaki spent years developing his own sense of color. While each of his films uses new colors, here is the list he describes as his "base set":
Permanent Yellow Lemon
Permanent Yellow Deep
Permanent Yellow Orange
Permanent Green No.1
Permanent Green No.3
Cadmium Green Deep
Cobalt Green Yellow Shade
Cobalt Blue Hue
Rare Miyazaki Sketches To Study
You can find the link here.
It took me way too long to realize that's it's absolutely miraculous and beautiful that we have access to so much art that used to be confined to museums and private galleries.
Art is 50% observation. The more we can take the time to see and study, the faster we'll approach our artistic ideals.
Miyazaki's Run Cycle, Broken Down
How Miyazaki Got Started
Miyazaki spent his childhood reading comics and drawing tanks, submarines, planes. But by the time he hit college, he couldn't draw people!
He didn't got to college for the arts, either. He studied economics while attending a manga club that more-or-less had very little to do with drawing. As fate had it, he got his first job out of college as an in-between artist for an animation studio. While most present-day animation studios outsource for talent, back in the day you could actually learn-on-the-job by being a labor-intensive in-betweener (I still think it should be this way, but I digress).
After getting off from work, Miyazaki said he would try to practice drawing on his own--but would often fall asleep.
So, pretty much, Miyazaki learned to love drawing and stories and movies when he was a kid, went the safe route in college, and got himself a job that let him practice his craft all day long. He spent his off hours working on weaknesses or simply drawing things he enjoyed (he said in one interview that to de-stress he would spend an entire week drawing out custom airplane models).
The point is--you don't have to be a consummate artist by 17 or go to an arts school to become a great artist or even animator. It's ok to hone your skills (and your focus) at a later date.
An Easy-To-Use Studio
Hey, we humans are naturally lazy. It doesn't mean we don't want to accomplish, aren't capable of accomplishing, or haven't accomplished amazingly human things. But it does mean we need to fess up and make things easy on ourselves so we can get started on the hard things.
Miyazaki talks a bit about how he minimizes hassle in his work environment:
"If we're going to moan and groan about too many listless animated works being created recently, when the people with drive and motivation aren't assuming any risk at all, then we've got a problem too. So that's why I think there is real meaning in improving the working environment.
...In designing [my studio]...I tried to make it super easy for me to get from my desk to a conference, or to a discussion with the various production sections, or to the clean-up department.
...We actually planned a room to take a break in which we call 'the bar.' I hate to see people forced to eat lunch at their desks...Until now the [various departments] have been too scattered about to get together easily, so I wanted to create a place where they could gather and communicate with each other if need be, and even have parties. We therefore located the bar in the center of the studio so that it would be easy for people from any section to get to, and right in front of the bar we created a spiral staircase. And we will also plant as many shrubs and trees as possible around the building...hopefully, the neighborhood will be improved a bit by our building this new studio."
[ from Starting Point 1979-1996]
I hope you're finding the mixed blessings during this time.
As a side note, this site is still undergoing constant restructuring as I figure out how to represent what all "this" is (hey, maybe next time we can talk about my very first rejection slip I just got!!).
But until then, glad you were here.
In excelsis Deo.
Stealing From Monks
That's right, forced quarantines are more than just inconvenient. They point out the key similarities between artists and monks:
I think, too, isolation can teach us a few things about how we choose to see ourselves. My schedule now isn't too much different than before COVID-19; we'd been setting up shop and paperwork and training for months and then this hit. Not gonna lie, I felt stifled and stinted the first week. Then I thought--OK, what can I do now that I wasn't doing before? How can I feel really good about the time I've been given?
It usually helps to listen to smart people.
All of humanity's problems stem from man's inability to sit quietly in a room alone.
What To Do In A Quarantine
Quarantine or not, I don't see how any of those things should be separate from any artist's life. What I really mean by 'game development' is what I really mean by any art we set down to do. In James P. Carse's Finite and Infinite Games, he quotes Rank as saying, "Artists do not create objects, but create by way of objects." It doesn't matter what tool/objects we are using (paint, game engines, words), its what we create by way of them.
But if we don't sit down with them and them alone (bypassing what Pascal calls divertissement, i.e. little distractions), and if we don't have a singular goal, and if we don't believe we are the kind of persons that are capable of that goal, how can we complete anything?
Nobody really has a problem with completing things. Think about it. We all wake up, eat, work, talk. We learn an entire language by the time we're five, as well as how to walk, run, live in the present moment, and strike bargains. We equate responsibility with tying us down when really the only thing we've ever done our entire lives is be responsible. We are responsive creatures. If we weren't responsible, we wouldn't have made it this far.
The thing is, as we get older, we choose our responsibilities. And the types of responsibilities we choose depends on how we see ourselves.
Do you see yourself as an artist? As a game developer? A writer? A friend? A good person? If not, why do you expect the results of an artist or a saint?
There's nothing easy or flippant about this. It's difficult to have faith in things we can't see; that's why jealousy strikes intangible relationships, and envy intangible works, and worry intangible futures and guilt intangible pasts. You'd have to believe in something--yourself, your project, your future--to accomplish anything. Most of us only believe certain limiting things about our present and that's about it.
I'm still in the middle of untangling this myself, but what better time than during a semi-quarantine?
And what better way to develop my art that to start believing I'm an artist and then make art?
Complimentary Courses Now Available On Unity Asset Store!
All users now have access to 3 months of complimentary courses.
100 Projects, Continued
This week I'm going through this course. While Unity no longer offers certification tests for developers (and most studios don't care if you have a certificate as much as they care what you've done with your skills), I think it's a great overview of the engine. It's like an interactive manual. So next we'll be moving into projects made in Unity.
(Frost will be revisited after we've learned a few more bells and whistles).
Till next time--glad you were here.
In Excelsis Deo.
Scott Lilly has an excellent, excellent tutorial on his website for how to build an RPG in Visual Studio.
Not just one, actually, but two.
But today we're going to just get halfway through one of the tutorials (the beginner friendly one) and lay out the groundwork done so far to customize it and add some bells and whistles. So, we'll cover some coding, object-oriented programming, and game design.
This blog needs its own dedication/thanks page, but I wouldn't be here without the following dudes:
The Coding Train (Github for Poets)
Scott Lilly (Original Tutorial)
Mark (who kindly created a wonderful all-in-one PDF mockup of the tutorial)
Bob Tabor (for his course on Object-Oriented programming)
But this project is indicative of what learning C# is like in a nutshell: it's learning C# and everything else (design patterns, repositories) in bits and pieces.
The Tutorial (Est. 6-8 Hours)
Lilly's got an OLD and a NEW tutorial on his website, but really the difference between the two is that the OLD is more newb-friendly and the NEW has more bells and whistles. I started with the OLD but decided I wanted to blend the best of both worlds.
Now, there's no point in reiterating everything Scott Lilly has already put together. If you're in the process of learning C# too, I see no reason not to pop off here now and spend a few hours on the tutorial. Have some fun with it. There's even an excellent PDF version of the tut linked on his website.
General Train of Thought:
What I loved about this tutorial was the careful pacing and layering of concepts. I'm not sure how much I was helped by previous exposure to the concept of properties and classes and libraries, but I understood 90% of everything in this tutorial the first time through, instead of barely anything the whole way through. And along the way, it pretty much illustrates the core design concepts of Object-Oriented programming.
Object-Oriented Programming (Est. 4.5 Hours)
Between this tutorial and Bob Tabor's OOP course, I'm really starting to appreciate objects and classes. Sure, there's still debate over which approach in programming is best. But frankly, I don't care. Or, I should say, I care more about have clean, functional code that I can understand. I'll be able to afford opinions later.
Bob Tabor's course is $30 on his website. You definitely don't have to shell out that money in order to learn these concepts. Like I said before, Scott Lilly's tutorial pretty much illustrates the concepts as it goes along. However, Tabor has provided a lot of excellent free material over the years (such as this C# tutorial for absolute beginners), and I wanted to support him. (I'll also say the course had been sitting collecting virtual dust and was happy I found a project that went hand-in-hand).
Ok, but get this. Need a design for your code? Find your nouns. This approach was previously touched upon in Project #1. And here's an illustration of how Scott Lilly did it for this particular project:
But we'll cover more in the next blog.
My Game Design Choices (Est. 2 Hours)
Once the tutorial hit Lesson 11 and we created the World of our game, I took a step back and thought about what kind of world I wanted to create.
Lilly creates a basic RPG landscape, one populated with rats, spiders, rusty swords, and farms. Pretty much, it's a perfect template to run with, throw away , rework, what-have-you. At the risk of adding too much and never finishing the darn thing, I wanted to do some world-building a la Dark Souls and explain the world/make it interesting via the in-game descriptions.
I went with the wintery theme after considering (and not actually participating in) a game jam whose theme was "cold."
So, the first thing I did was take the World Map that Lilly created...
...sprinkled some thought over it, found an open-source mapping tool called Trizbort, dragged and dropped, baked it all, and came up with the following. Below is the first working result. Changes may be implemented as we go along.
And then I thought about the world, going back to that theme we mentioned earlier: cold. Eternal winters and Nordic landscapes are popular in fantasy for a reason. How to invoke that chilly nostalgia in players while also spicing things up a bit? All that thought went into the types of items and monsters, the names of locations, and the lore-rich descriptions.
(Items did not previously have a property for Item Description, so I added that to the Item base class. Hey look Mom, no hands).
This also opened up different avenues of gameplay. While more is explained in-depth in the Bells and Whistles section, I decided I wanted to add the following to the game design:
Alright, based on all of that, we can define the new additional classes and objects of this extended game:
Words of Power
Martial School (to store information on Attack/Defense/Evade maneuvers)
Mystick School (to store information on Light/Dark/Water/Fire maneuvers)
Ritual (dealing with the Victory, Defeat, and Player Progression after battles) (at least, I think we'll need a class for this)
DeBuffItem (added two poisons to the game that gave adverse side effects)
Alcohol (a special item that both buffs and debuffs)
I'll also need to modify the code for specific interactions with the Rusty Sword, which was now the only weapon in the game, but which could progress along similar lines with the player's progression. The player will be able to name the sword and use it to unlock certain areas.
To keep track of the list of items in the game and their descriptions, I went Full Geek and started making a spreadsheet on Google Sheets. Here's what we've got so far:
Bells and Whistles (Est. 6-8 Hours)
At this point I went over the NEW tutorial to see what was different. Would I have to start over from scratch?
(I should be honest and say that I looked at the NEW tutorial before I was even halfway through the OLD one, wondering what I needed to plan for).
What I liked best about the NEW tutorial was that it included Character Creation and more visual UI.
But I began thinking of my own design choices and how I could already look at implementing this early in the new conception stage.
One thing I wanted to do here (and in future projects) was more to put in more thought when it came to "clearing" battles. Specifically, the aftermath. Whether you're fighting a sewer rat or the final boss, most RPGs conclude battles in the same way: little victory diddy, XP points, gold, loot. You're essentially rewarded with a bell, a whistle, and a glorified Excel spreadsheet outcome.
Well, I liked the idea of battles also having an emotional impact on the Avatar (and player, with any luck). But nothing that would go so far and speak down to the player or make them feel guilty for "killing" things in game. Really, it was more about treating the world, the creatures, and the player Avatar more seriously--and so the player could feel like they were being taken seriously.
So, fighting the battle is half the battle. Or, I should say, half the reward. If a player successfully kills all enemies in combat, they must perform a ritual. This is just a cultural touchstone in the game world, but gameplay-wise, the player makes a small offering of thanks to the memory of the deceased. I remember reading somewhere about several different native American tribes doing something similar after a hunt. It's a Judeo-Christian tradition, too: historically, prayers of thanks were said after a meal.
So, no, it's not a plug for vegetarianism or anti-violence. But to my mind it does several things:
Rinse, Repeat, Release
Of course, now the next step is to continue taking steps.
I'm trying out my ideas as I'm following the tutorial, modifying as I go along.
And playtesting and debugging, ad nauseum as they do, till I get a working prototype.
Until then, uh, pray for me!
And hey, thanks for stopping by!
In Excelsis Deo.
Another day, another generator.
This generator provides a list of personality traits--but embellishes them with adverbs. To describe someone as accidentally protective or waspishly honorable piques my interest.
This one was still pretty simple and piggy-backed on the last generator I made, but I still had trouble figuring out how to cleanly loop or exit the application. I ended up copying the same method I used in the last project, but the whole structure has still been implemented in a slightly different way.
This is a generator I simply wanted for myself. Still trying to figure out how to make these applications playable--may eventually need to convert them, but for now, here's some examples of what you can get with this generator:
Till next time.
In Excelsis Deo.
What I Learned:
Till next time.
In Excelsis Deo.
Codewise, this project is way simpler than our Consignment Shoppe Demo. Probably because the Demo was coded by a professional and this one was coded by me.
Today we've got a simple Mad Libs console application in C#. It uses random, switch case, an array, Console.ReadLine, Console.WriteLine, and a loop.
I enjoyed doing this from scratch and having a finished product in less than an hour!
Here's the Code:
Arrays and Switch Cases:
The main hurdles were making sure the array, switch case, and random variable worked together. I may have cheated a little, but in order for each of the switch cases to match up with the appropriate author in the array, I put in a dummy string "" for the first array index. Without this dummy string, the random.Next feature would pick, say, Virginia Woolf, who is Case 5, but because Arrays index starting from 0 instead of starting from 1, Virginia Woolf was actually considered Case 4, so the text was off by one.
There's probably a better way to do that, but it worked, and this is all learning curve right now.
Instead of just one determined writing sample that plays out the same each time, I wanted to create a relatively tidy index of random writing samples from famous authors: Willy Shakespeare, Jane Austen, Homer, Virginia Woolf, Herman Melville.
So I created a random variable, gave it an index, and plugged it into a switch case--all things that would still have sounded like mumbo-jumbo about a month ago.
Clean Up On Lines 17, 18, 19...
Reminded of the importance of spaces when dealing with multiple lines of strings. The things you take for granted!
It's still not perfect, but at least it reads a little more clearly!
Replay Or Exit:
Had a bit of a time with this one, and it's still not the clean exit I want. But I learned the importance of method parameters. I originally had everything in the Main method, then realized I couldn't easily ask the user if they wanted to play or exit. So I put the main game loop inside a method called Start and then allowed the player to either choose to play again or exit. The exit still goes to debug mode instead of closing down the console, but for some reason neither this.Close, Application.Exit, or Console.Close/Exit/Whatever seemed to be recognized.
But the point, this baby is finished, and I know what areas I need to work on.
The writing samples used in the application are from the following:
1. Shakespeare's "Much Ado About Nothing"
2. Jane Austen's "Emma"
3. Herman Melville's "Moby Dick"
4. Virginia Woolf's "Orlando"
5. Vince Lombardo's translation of Homer's "The Odyssey"
Glad you were here; till next time!
In Excelsis Deo.
Recently I came across Jennifer Dewalt's inspiring website about, well, building websites.
A few years ago, Dewalt decided to learn to code by building 180 websites in 180 days. This struck a chord with me.
So I changed up my own website. There's now a tab called "100 Projects." And I'm going to split it into quarters. This website is about where writing meets games--so there's a lot to learn beside coding! But I immensely liked the idea of doing 25 Code Projects in 25 Days, followed by other subjects: pixel art, game design, UI, audio, etc.
But let's not put the cart before the horse. Today, taking inspiration from Dewalt, I wanted to funnel that syllabus I wrote a few weeks ago into these more streamlined deadlines.
Well, my first step was to create this super cool take on Rock Paper Scissors, complete with a new rule system and everything. But seeing as how I've been troubleshooting that all week, I realized that I needed some kind of goods to deliver. So I needed to think even smaller. More by-the-book.
So I found a two-hour C# tutorial that has nothing to do with game development but we're going to follow along anyway.
Project 1/100 = Consignment Shoppe
Step One: Bird's Eye View
When I pay attention to professional programmers, I find one thing they do right off the bat: they define their mission. It's more like they translate their idea into a bullet list of requirements. Once they have a list of the things they want to happen in their program, they can then underline the nouns and pretty much figure out what kind of classes/objects they will need to create. It's both a big picture and fine details approach, and makes code seem a lot more concrete and a lot less abstract.
For Tim Corey, he defined the consignment shop demo in the following way:
1. List of Vendors
2. List of Items per Vendor
3. Each Vendor should have a default Commission rate
4. Commissions can change
5. Track how much to pay the Vendor
6. Track how much to pay the Store
Step Two: Using Excel and Visual Studio To Create Back End Design
We can use Excel to quickly organize all our "moving parts" if you will, and organize them by class and data type. I've never been a huge fan of Excel, but I have to admit, looking at that simple and well-organized table did have a Zen-like effect on me.
Then, Corey set up what our UI should look like in Windows Form.
All of this before hardboiling any code.
This is what's meant by Back End Design: putting down the bones before we make them move.
Step Three: Wiring the Front End to the Back End
Step Four: Testing Small Changes
Step Five: Clean Up
What I Learned:
In Excelsis Deo.
Hey, glad you're here.
We're almost through with the 5 practicum assignments I attached to the first module in the Game Dev Ultralearning project!
I came across this tutorial to make a simple platformer in Visual Studio. This was the perfect extension project from Projects #1 and #2. Each tutorial, chosen at random, has somehow gone back and filled-in-the-blanks and trouble spots from previous tutorials.
Now, like the screensaver tutorial, I'm still basically rewriting code verbatim. The difference here is that many of the concepts covered in this tutorial felt more like review. Before my formal Ultralearning project, my self-study was sporadic at best. However, I'm glad that I covered the following, even if I wasn't sure how they'd all come together in the end:
A. MonoGame Course
C. C# Fundamentals for Absolute Beginners
It's gotten to that early stage in learning this subject where I'm able to "read" code almost like it were a book. A book written in a foreign language, but a foreign language I'm finally just the teeniest bit comfortable with.
In addition, re-writing all the code from scratch significantly improves literacy and understanding of the code at hand. This tutorial's style of explanation, presenting chunks of code at a time instead of line-by-line AND providing comments side-by-side, was way more effective than previous tutorials that broke everything up to a halting pace.
Here is the code in its entirety:
Pretty much the only thing I added was displaying the score in the MessageBox after the player was done.
I was going to do something more from-scratch, but I only found solutions that either wrote to the console line or to the MessageBox itself, instead of on the UI of the platformer. I KNOW there's a way; in fact, there's an oceanful of tutorials on simple score counters. But between this and other projects I grew stale on this practicum and wanted to spend my creativity on the next assignment. I kept my notes, seen below, but the important bit is when we move on into studying C# a bit more in-depth.
So three down, two to go, with the intention of practicing more from-scratch coding.
The important first step: thinking this through and writing it down on paper before looking up how someone else would do it or simply banging away at the keyboard.
Looking back over the game code, we have the following already set up for us:
Right now, we have no way of displaying this score to the player.
In the screenshot at the top of this blog, I have a label named 'Score' and an empty text box. I haven't hard-coded anything with them yet, so they are just visual displays on the form and nothing more.
My first thought is--how do I code a line that displays the score on the screen and dynamically increases every time the score increases within our block of code above?
At first, I thought I should focus on the display first then the increase. Then I realized, this should be on in the same. As long as I could get it to display "score," then whatever "score" was at the time, that is what would be displayed.
So, how to call the int 'score'? Would a textbox work? It sounds simple, even to me, but for this fact: I don't have any methods or events memorized, and am still fuzzy on the scope of variables.
Now, this exercise brought me into Overstudying Mode. Which is a good thing, especially here at the beginning. I've been meaning to create an [Anki] deck to help me memorize C#'s keywords, methods, and events. This won't substitute actually coding with these concepts, but I figured having a better handle on what the language could do would be helpful and at least save me from googling every little thing.
So, I decided to make an Anki deck before just looking up how to code a simple score display.
Now, I want you to appreciate something:
These right here are ALL of C#'s keywords.
I counted (and confirmed elsewhere to be safe): there's only 104 C# keywords in the language.
Remember how in Blog #8 I quoted Andy Harris as saying programming languages are easier than human languages? I KNOW you had to memorize more than 104 words in your high school Spanish class.
What's even better is that out of these 104 keywords, there are only 10-20 that any one programmer uses frequently.
So let's start with those.
Looking at the code for the platformer game, Visual Studio already highlights any keywords in blue.
C# Literacy Detour
Here are the 8 most frequently used C# keywords:
In Excelsis Deo.
Making A Screen Saver in Visual Studio #C
Last week, I "completed" this screensaver tutorial. Can't say I completely understand everything that was going on (plus I couldn't get preview mode to work), BUT, it still demystified the following things for me:
Gotta admit, it was a thrill going back over some of the code he had written and suddenly going "A-ha!"
I still couldn't have come up with the code itself, but my ability to read and comprehend is getting better, bit by bit.
Riddle Me This
We talked about programming sub-skills a few blogs back, and we came to a conclusion: puzzles. Mental gymnastics, learning how to learn, puzzles, riddles--yes, good. Good for budding programmers.
So I started doing Sudoku puzzles. But going beyond what I used to do, actually looking into two things:
1) Mental techniques for improving my form/efficiency (I turn off the clock on my Sudoku app, but I started caring about the time it took me to complete a puzzle, insomuch as I wanted to improve each game and not just coast through each game for entertainment purposes only)
2) Focus (being able to focus on just this puzzle from start to finish, no interruptions)
And there's a third thing hidden in there:
3) Problem solving
Mental techniques, focus, and problem solving: all of them sub-skills for programming.
I couldn't believe it took me an hour to finish my first Sudoku puzzle. It was only on moderate difficulty.
But the second time, it only took me twenty minutes.
And then I couldn't believe the improvement. I even noticed that I was feeling much less foggy within a week of starting the exercise.
The idea of completing Sudoku puzzles actually came from V. Anton Spraul's book, Think Like A Programmer. In it, he also mentions a gem by the name of Sam Loyd.
I mean, just check out this guy's dedicated web site.
Sam Loyd was an early 20th century puzzle pioneer, and his puzzles are just beautiful to look at. I went ahead and ordered a few of his collected riddles and puzzles, figuring they'd make great keepsakes and handy tools for sharpening my rusty problem-solving skills.
So, I guess the lesson from this practicum is: strengthen your mind, not just through programming. Especially when actually being able to understand programming, let alone being able to program yourself, can be slow goings.
Bonus: Things I Tried To Make Learning More Automatic and Organized
1. Defining My Environment
The same computer I use to write short stories, browse the internet, check emails, and play video games is the same computer I use to work on my projects, take tutorials, write my blog, and watch lessons.
Oh, and it's also in the room where I read and sleep.
Needless to say, some days the temptation to noise and distraction is overwhelming.
So I tried two things.
I made sure all my clothes remained in my closet, at least 80% of the time.
I lit a candle every time I had trouble focusing on just coding.
Keeping my room an average level of clean kept me from anxiously nitpicking it or anxiously ignoring its faults. And lighting that candle served as a signal to my brain that it was time for one specific thing.
2. Getting Up At The Same Time Every Day
I really struggled with brain fog between Blog #5 and Blog #6. So I did what I knew I should have been doing all along: regulated my sleep schedule.
This is easier said than done. I should say I wake up at relatively the same time every day. And that this one is a work in progress.
But I decided that this task was important, even if it felt only tangentially connected to my more passionate goal, which was to wrap my head around the concepts we've been exploring. I realized, however, that I was chasing stimulation instead of results.
And it's hard to admit, sometimes, that results are a product of time and, not, strictly, productivity, or what passes for productivity.
So, I've made consistency a priority, even if its slow goings.
3. 30g of Protein within the first 30 Minutes of the Day
Sometimes I really don't want to do this one (and, um, sometimes I just don't do it), but I know its results first-hand. I started this habit way back in high school and the results spoke for themselves: I lost weight, gained energy, and had a habit I could rely on.
So I retuned this habit recently, taking Timothy Ferriss' advice to eat 30g of protein within the first 30 minutes of waking up. This is one of Ferriss' MEDs (minimum efficient dosages), or the least you can do for the most results. In this case, eating 30g of protein within the first 30 minutes of waking up is a two-fold no-brainer:
A. It regulates fat like nothing else. Without changing anything else in their diet or exercise routine, obese practitioners who put this habit into daily usage saw a monthly increase in weight loss (Ferriss' own dad went from losing 5 pounds a month to 18+ pounds a month from this ONE thing alone--he didn't regulate any other part of his diet and he didn't start hitting the gym).
B. It regulates mood. Some days I'd be fine skipping breakfast--could even feel heroic. But the compound interest would result in a few inefficient, foggy days about a week later--it almost always works like that, doesn't it? The results of our decisions can feel so delayed it's hard to say what caused the sudden lag.
4. Putting A Win At The Beginning of the Week
Ray Bradbury once told struggling writers to aim at writing 52 short stories a year, one for every week. I mean, you can't write 52 bad short stories in a row.
Realizing that the first week of January had yet to pass, I thought--why not? Some would be prompts, some would be flash fiction, some would be just for me, some would definitely be aimed at contests and publishing.
Then I made one more caveat: I'd make sure I got the story done at the beginning of the week. Monday or Tuesday, using Joyce Carol Oates' advice of just writing the rough draft in one complete gulp. "You can edit for weeks afterword." Well, hopefully not, but as weird as it sounds:
We're going for quantity over quality this time around.
And I'm putting this goal at the beginning of the week so I have psychological goodness running through the rest of my week. When I'm struggling with making progress or staying focused or skipping breakfast or some other misstep, I can think--"Yeah, but I finished that thing."
And I finished that thing today, y'all.
It feels good.
Bonus Bonus: A Good Read
Great interview from game designer Chris Avellone.
In Excelsis Deo.
K.W. writes novels, short stories, the occasional ode, game scripts, and (with actual evidence!), this here blog.