The End of an Era

A few things have happened this year that I can no longer ignore, or keep silent about.

UE4

The community Epic has managed to craft around UE4 is amazing. Not only is the engine completely open-source, and the forums livelier than ever, and phenomenal assets available on the new Marketplace…Epic is also making excellent tutorials in both blog and video form. They are striving to make it possible for anyone to be a game developer, and I would say they are succeeding.

I got into game development in high school because of this thing called “senior project.” The idea was we could pick anything reasonably hard for a high school student to do, do it, and then we’d graduate with honors. Making a video game is hard, right? 😛 At that time UDK had just debuted (2009 seems so long ago…) and looked really awesome, so I picked it up and just rolled with it.

Documentation back then was hard to come by. Apart from packaged editors for games like UT3 and Gears of War, this was the first time Epic had unleashed their tools on the public. As I struggled to understand everything that was going on, I felt the similar pain of countless others online. So naturally, I started making video tutorials. And then because videos were hard to pump out at a constant tempo, I started a blog. This blog.

Fast-forward to now. I was one of a select group chosen to be a part of the UE4 beta because of my blog/videos, and I can’t imagine receiving a higher honor. Although I did not contribute much, I was deeply humbled to be a part of the road leading to one of the greatest advancements in gaming. The thing is, as much as I love using UE4 — except for C++, I still hate the language and always will — development is useless without a goal. As I have learned over the years, I am quite terrible at coming up with ideas for cool games, and even worse at coaxing them to fruition.

I started out as a game developer wanting to make a game, and ended up (hopefully) helping many others to make their own. But I must face the fact that there are much better resources out there now.

I Got a Job

Like a real job. Not some freelance gig, but a job where you get some numbers on a piece of paper every month and have to take an elevator to get to.

It’s no coincidence that this job has nothing to do with game development. For the past 3.5 years I’ve been studying computer science in college, and I’ve realized that the great big world of computers is much more diverse than my feeble mind could have ever imagined in high school. I particularly like web development now, in these things called JavaScript and Python.

The thing about having a real programming job is that at the end of the day, the last thing you want to do is program some more — even if it is a game. If you don’t believe me just try it and see.

Making a game is an adventure, true, but it’s a decidedly dedicated one. There just aren’t enough hours in the day to support two programming lifestyles. I do want to have some semblance of a life, after all.

So What Does This Mean?

Does this mean I’m done making videos? Done writing blog posts? Well, no. But there are some changes in order.

First off, I happen to have a new blog that’s tied to my official site. I hope you find it just as snazzy as this one; unlike this one, I built it from the ground up with a mixture of blood and joyful tears. You’ll notice that most of the posts have nothing to do with game development. I made this blog specifically to supplement my video tutorials, and for the longest time I’ve felt constrained by what subject material was appropriate to publish. On my new blog, I write whatever the heck I feel like. Freedom is cool.

I also might start making videos again, but they’ll probably have nothing to do with “how to do _____ in UE4.” I’m not exactly sure what they’d be about. We’ll see 🙂

There is, however, one thing that won’t change. If you have any questions, comments, or concerns about anything UDK/UE4 related, feel free to email me and I’ll try to help. I might not always be quick about it (as some of you who have emailed me in the past can attest to), but my door is an open one.

It’s been a great 5 years, and I want to thank everyone I’ve met along the way for making my game development adventure a blast. I’m sure it won’t be the last.

Until next time, happy gaming!

Book: Game Programming Patterns

Go read it now!

It’s free and online! This is the book I wish I had when I started making games, and I want you to have it now!

I’ve only read the first few chapters, but already I can see this will be an indispensable resource for game programmers. The book is more low level, less on game design and more about the code at the heart of things, but it’s written beautifully and is chock full of examples.

It’s also all C++. So yeah, UE4 and stuff.

UE4 For Everyone

GO GO GO GO.

Yes, that’s a publicly available Unreal Engine 4. No, your eyes are not deceiving you.

For the past 9 months, UE4 has been in closed beta. Over that time it has evolved from a mere successor of UE3 into a next-generation experience. There are new Stack Overflow-style forums. The documentation is ridiculously extensive. There are sample projects galore. The community is, as always, very willing to help. This is not just a game engine, but as Tim Sweeney put it, a game ecosystem.

The engine appears to be free no longer, but rather subscription-based. I’m usually very much against subscriptions for software, but I can tell you that in this case, UE4 is a steal. For $19/month (about $230 a year), you get the best game engine on the market.

What I’m most excited about, though, is that Epic has finally open-sourced everything. They have a GitHub now! Well…okay, you need to be a subscriber first. But that sure beats the old model of paying thousands of dollars for the engine source.

The community has already made amazing leaps and bounds with UE4, and I cannot wait to see what’s coming next.

Redesigning WillyG Productions

In lieu of other topics to write about, and in case you may not have noticed it yet, I recently redesigned my online identity. Part of that can be seen in the banner at the top of this site. The best example, however, is at my new “hub of operations“.

The Logo

Showing the evolution of my logo from late 2009 (left) to present (right).

Showing the evolution of my logo from late 2009 (left) to present (right).

My logo has remained relatively unchanged over the years, but this month I really cracked down on making the final iteration as professional as possible. This is a far cry from 2009, when I made my first version for a high school graphics assignment. We were tasked with designing a product label, complete with nutritional information and a fake company. I decided to instead make a logo for myself (the name was, of course, different back then). I took the W from the font 28 Days Later, put it over a diamond, and colored the whole thing the first okay-looking dark red I saw in Photoshop.

During the summer of 2012 I decided my logo was a bit unclean (see all those little blood streaks in the W?) so I resolved to vectorize it. The way I did so was almost equally unclean; I just used the Pen Tool and traced the outline of the original W. As a result, the lines were straighter and the speckles were removed. I thought it looked fine, but…

Note to Self: NEVER create a geometric logo without using pure geometry.

With that in mind, I built the 2014 version completely from scratch out of a diamond, two ellipses — the subtle top/bottom curves of the W — and four extremely long triangles canted at precise angles. The red was also carefully chosen, and by “carefully” I mean stolen from Solarized, one of my favorite color schemes…although in my defense, Ethan Schoonover has spent quite a lot of time perfecting the colors to look good across a wide spectrum of applications. So, too, will my logo.

The Tagline

“I make things that do stuff” sounds rather dull and generic, but there’s a story behind it.

In my computer science program we frequently have to do group projects. Thankfully, we also usually get to pick who we work with. My default teammate is an army vet who happens to be just the right combination of smart and cynical, on top of being a great public speaker. Good for me, since I despise public speaking (can you tell from my YouTube videos?).

For the longest time, he would introduce our project by saying something along the lines of, “So yeah, we made this thing and…it does…stuff.” Created a database application that maintains WoW player information? “Our project was this database thing. It has data and does stuff.” Made a 1970’s text adventure parody of Oregon Trail? “So this is our game. We made it. Will’s gonna show you the stuff it does.” You get the idea.

I always hated it, because our grade was on the line and in 2-3 sentences he could make our cool project come across as…well, dull and generic.

But then I got to thinking. What do we really do as programmers? I’m not talking game designers or application developers or kernel hackers. I’m just talking programmers. Most of the time — no, not all of the time, life is never that easy — we’re making things. And these things do stuff. What they do depends on what the programmer is interested in, but the common trend is that we’re all creators.

Out of nothing, we make something.

I can no longer call myself strictly a game designer. I’m also not just a web designer or app developer. But I do make things that do stuff. So there you go.

The Site

Back to willyg302.github.io. One thing you might notice right off the bat is that it’s designed in discrete tiles. The root of this idea came from Google, but I took it a step further by making everything tiles, from the social icons to the welcome message to the list of projects I’m working on. The whole thing is powered by Isotope, giving it several unique properties:

  • The site is instantly responsive, no extra work needed. Try resizing the browser window to see what I mean.
  • Tiles can be filtered. This means creating a “site menu” is as simple as assigning categories to tiles (“Contact”, “Project”) and adding the filter dropdown.
  • Tiles can be sorted. Not much use now, but likely useful when there are 70 projects or something up (not that I’ll ever be involved in that many projects).
  • Tiles can expand. Click the “Research Assistant” tile for a demo. This allows for more, not immediately relevant information to be displayed if necessary.

I think it’s a cool idea, and definitely unlike any personal site I’ve ever seen on the Interwebz. One thing that’s great is that I don’t have to worry about formatting at all, and the content works even better when it’s jumbled and chaotic. Try doing that with a Bootstrap theme!

A Note on Noat

Ever since I started college, I’ve been working almost on a daily basis on two different computers: my desktop at home, and my laptop at school. I also occasionally do things on my phone. Having this many devices to keep track of radically changed the way I work. For example, I do most of my homework directly out of Dropbox to keep it synced across both computers.

But one thing I’ve always struggled with are notes. What to do with that little 3-sentence blurb I caught on my laptop but now need on my desktop at home? How can I let my laptop know the URL of the important site I just found on my phone?

My old solution was the tried-and-true email system. Yeah that’s right…I’d send myself emails. Lots of them. And the more I delved into the murky waters of computer science and game development, the more emails I found myself sending. I needed something else.

Wunderlist? Evernote? No. Pastebin? Tried it. GitHub Gists then, surely. No, I needed a tiny bit of privacy. What then? Dropbox? I didn’t feel like managing a text file of notes to myself on top of everything else.

Oh wait, I’m a programmer.

So I made this thing called Noat. It’s yet another note-taking app that looks like this:

A look at Noat

A look at Noat

The image above showcases some of the features of Noat. It’s basically just a long stream of small boxes, each with a title and importance level (gray – default, blue – info, green – success, yellow – warning, red – danger) and some content. The content can contain some pretty rich formatting and even embedded images and URLs. But what sets Noat apart (at least in my opinion) is its simplicity. All you get is this stream of notes. You can edit or delete existing notes, or add a new one. That’s it.

It’s powered by App Engine and is built to be responsive, so you can use it on your mobile devices as well (and you can add a home screen shortcut on iPhones!). If you’re at all interested, the code is living over on GitHub.

I’ve been “testing” Noat for several months now and am exceedingly pleased with it. Hopefully someone else will find it useful as well.

Unreal Engine 4 at a Glance

I recently got the amazing opportunity to try out Unreal Engine 4. I hope to post more detailed info and a review of the engine at some point in the future, but for now I can only confirm a few things you should already know:

  • UnrealScript is dead, long live C++
  • Hot Reload (also known as Runtime-Compiled C++) is awesome
  • Dynamic global illumination (SVOGI) isn’t a reality as I mentioned in my lighting tutorial; Lightmass is sticking around for the foreseeable future
  • Epic Games is really good at living up to their name

Oh, and then there’s this:

A simulation of our Sun in UE4

A simulation of our Sun in UE4

One million lit, collision-enabled particles running at a silky-smooth 30 FPS on my middle-of-the-line rig. With UE4 around, the future of gaming looks equally bright.

UDK + Github = ?

CLICK HERE

I’m calling it “UDKHub” for lack of a better name. Basically, this will be a source dump of random UDK code I have on my computer that I don’t feel like keeping secret anymore. For starters you’ll find some source snippets I’ve already released through some of my YouTube tutorials.

But you’ll also find (drum roll please)…the entire src/ directory of my iOS game Never End! I don’t want to see any copycat games in the Top 25 List on the App Store anytime soon, though, so don’t get any ideas :-).

Later on I’ll also be doing a mirror of some code on UDN. This includes projects such as the Development Kit Gems and starter kits they have. Since I already have most of these in one directory on my computer anyway, why not have it in the cloud?

As always, happy coding.