Dat College Feel

Walking to class this morning is the first time I’ve ever actually felt college-y. I don’t know what’s different this morning, but the brisk air, morning sun, and overall atmosphere seems… Different.

Maybe it’s the realization that this path isn’t what everyone chooses. I see so many people from when I was younger choosing one of the billions of other paths there are and I believe I’ve chosen the best one for me.

For the first two years of college (I’m a junior now), I only took it semi-seriously. To me, it was just something I had to do, not something I wanted to do. I felt most of the classes I had been taking were pointless, and that the idea that college finally lets someone explore the things they are most interested in was false.

I understand now that one cannot look at it as black and white as that. College is a place where, yes, you learn about certain specific things you’re interested in, but it also shows you that there’s a world where there’s so much more to learn, understand, and contemplate that it doesn’t make sense to ignore it.

MAT 140 & PGP Encryption

I was in MAT 140 – Discrete Mathematics last quarter and I found that the fundamental theorem of arithmetic is super interesting. When the professor was speaking about it, I asked if it was the base for PGP encryption and it turned out it was. I had an inkling for this, because I previously heard that PGP generates super large numbers and that’s where the security lies.

I’m kind of skeptical. Sure, with the current state of computing these cryptography keys are nearly impossible to crack, but the fact is that they still are possible to crack. I’m betting on sooner rather than later.

Well, I’ll be looking into how this works in greater detail whenever I have time.

Anyone know some places to learn more?

New Classes – Winter Quarter

Alright so I’m finally going to discuss the new courses I’m taking now.

CSC 395 – Research Colloquium – I’m pretty excited about this course. It’s completely online and every week there will be a lecture by a guest speaker on new work in areas of computing. Hopefully there are some talks relevant to my interests, but nonetheless I love TED talks, so this should be similar.

GAM 341 – Introduction to Level Design – Since I’m majoring in Computer Game Development and focusing on the programming portion of it, I figured I should also get a little more experience in the non-programming parts. We’re going to be using Unreal Engine 4, which I’m pretty stoked about!

GAM 376 – AI for Computer Games – I’ve always been interested in artificial intelligence. Actually, in the class I’ll describe next we’re discussing AI through a philosophical perspective. I’ll probably post more on this later. As for this course, I hope we don’t just use some already-implemented AI algorithms and we can actually write our own. I doubt it though.

PHL 242 – Philosophy & Technology – We’re discussing what technology actually is. Admittedly, when asked this question I thought it was going to be easy to define. I was horribly wrong. While it isn’t required, I may read the recommended material, “War in the Age of Intelligent Machines” by Manuel De Landa. We read the first chapter and thinking about how a robot historian would describe its history is something that made me extremely intrigued.

SOC 281 – Sociology of Rock Music – This is kind of weird, yes, and I know that. It fulfills some requirement that I needed to complete, so hey why not? We’re going to trace Rock Music from the beginning to now, and I’m thinking I’ll learn a lot. The professor asked in the first day of class what we knew about rock. While I do know some stuff, and I listen to rock all the time, I wrote that I had no knowledge of rock. I think this will benefit me because starting with a blank-ish slate should be fun.

Anyhow, I wasn’t going to take these classes and considered switching majors. I’ll explain why in the next post.

GPH 321 – Completed

In this class we created a ray tracer from the ground up. I by “we” I mean our professor wrote most of the code and we had to fill in certain class functions. It was pretty terrible, but overall the end result was good. Oh and we had to zip our source code and send it in, instead of simply using something like GitHub or Bitbucket. The midterm and final SUCKED, simply because it’s 2015 (well, it was 2014) and written exams for programming finals are absurd. Writing code on paper completely lacks the feel of typing it out using an IDE. Plus, come on, who doesn’t use IntelliSense, Resharper, Visual Assist X, or some kind of code-completion tool? A fool! And that’s exactly what we are when we write code by hand.

Anyhow, here are some screenshots from the course.

First we simply had to get rays working and detecting collisions.

Rays & Intersections
Rays & Intersections

Then we had to ray-trace our first object, a sphere. This is because it’s pretty simple to represent in math.

First Ray-traced Object
First Ray-traced Object

Then we had to add some shading to that sphere. I know,Γö¼├íit isn’t 100% correct. Spot the error!

Phong shading
Phong Shading

Next came shadows. These are awesome.

Ray-traced Shadows
Ray-traced Shadows

Next was reflections. Super easy thanks to how ray-tracing works.

Ray-traced Reflections
Ray-traced Reflections

Then we had to create a checkerboard pattern.

Checkerboard
Checkboard

Finally we were to implement Fresnel equations to properly simulate glass. I didn’t finish this one fully.

Ray-traced Fresnel
Ray-traced Fresnel

And that was the end of the course. This course was online only, which probably had an impact on my view of it. The course notes weren’t that great. I repeatedly found myself Googling things that were phrased in strange ways to figure out how to implement them. And variable names like V, N, n1, n2, etc. used throughout the given code made things unnecessarily complex.

Oh well, it’s over and done with!

ANI 230 – Completed

Well I totally forgot to update this during class, but that’s okay.

IT IS TIME FOR UPDATES.

The class was about Maya so it was recommended that we download Maya 2015. I was a bit too lazy and decided that my installation of Maya 2014 would have to do. Here are a few of the things we had to make.

So our first homework was simple, but introduced us to Maya. We made a fan.

Simple Fan - Maya 2014
Simple Fan – Maya 2014

It had limitations, so it really looks bad. Luckily this is a course about low-poly modeling, so super-detailed isn’t what we aimed for.

Second homework was to model some animals, again with limitations.

Animals - Maya 2014
Animals – Maya 2014

I chose to model a snail, a T-Rex, a kiwi, and a human. I think improvements can be seen!

Next up was a shoe, and a lot of revisions.

Shoe - Maya 2014
Shoe – Maya 2014

Somehow turned into this after a lot of messing around:

Revised Shoe - Maya 2014
Revised Shoe – Maya 2014

Then I chose to model a guitar capo which proved an interesting challenge:

Guitar Capo - Maya 2014
Guitar Capo – Maya 2014

Skip a few and we arrive at our toy store assignment. It was pretty simple, with a animated camera flying around.

First revision:

Second revision:

Final revision:

Jump ahead to the final assignment:

GIMP was difficult to get working properly with the PSDs Maya exported, but it kind of worked. Oh well. That was the end of that class and I learned a lot about low-poly modeling. Nice!

Player Tank!

I’ve finally done some work on this and got the player tank working. Azul doesn’t handle mouse input very well (I’m spoiled by Unity), so it’s all keyboard controls.

WASD controls the tank movement

LEFT/RIGHT control the turret

I’m thinking the up arrow will fire a shell and the down arrow will lay a landmine.

DePaul Azul Engine - Tanks!
DePaul Azul Engine – Tanks!

Screenshot taken with Greenshot.

First Day of Final Project

Today marks the first day I’ve started working on the final project for my GAM 374: Fundamentals of Game Programming I class. I’ve decided to recreate Tank – well actually, the Wii Play version called “Tanks!“.

We’re using the DePaul game engine called Azul – which I think could definitely use an engine overhaul since it’s based on the singleton design pattern. Gross.

Click to learn about Game Programming Patterns