I’ve been doing tons of research on video game development lately. In particular, research on video game programming and design. I thought I’d share a link to some very interesting articles/tutorials that I found:
My previous post was much more oriented towards Unity design, but this one is more oriented towards Unity programming.
This video shows my work on the start of a sound manager for a team that I am currently helping make a game in Unity. Their blog can be found here.
This project uses multiple scripts, one for each behavior. This works all fine and good, but what would be better is one script that can be attached to any audio source. The user could then select the type and enter in the info needed for the type they chose. In the future, I will be reworking the code in this test project to work as such. Currently, there is functionality for 3D sound, like the music box, repeatable sounds, delayed sounds, sounds that only play once ever, and sounds that loop when the player is within a certain collision volume. This was all done in Unity using C#.
I took a bit of a break from programming my 2D engine to try out Unity. This video shows my progress after about 12 hours with Unity. Before setting out to do this, I had only spent a few hours messing around in Unity. That being said, I was mostly following a tutorial, though I did branch out and do some things on my own. Here’s a link to the tutorial that I used, which is very easy to follow other than the Blender bits at the beginning for setting up the level:
In this project, the player can fire using the left click. This performs a raycast and creates a bullet hole texture on the first object hit. If the object has health, this will do some damage to it. There’s some code in there to keep it from colliding with certain objects, as well as a cooldown to regulate fire speed. The right mouse button fires a slower moving thermal detonator that is affected by gravity. Thermal detonators will light any enemy they touch on fire and deal tons of damage to enemies (In this project, it will destroy it in one hit).
The blue enemies have no death animation – They are simply destroyed. When the red enemies die, however, they explode with fireworks particles. You could imagine this being a death animation if I were using models/animations.
The project has a sky box, which looks great, but is very simple in Unity. The project uses C# for scripting. I didn’t show it, but the player can also jump.
Over the past few weeks, I have done a ton of work on the engine. Unfortunately, most of the things I have been working on don’t have a visual component, so there is no video this time around. However, I would still like to give an update on the stuff that I have been working on, so here’s sort of a “build note”-style update:
Added debug drawing for velocity and acceleration on physics objects
Switched my graphics system to use pure DirectX, rather than DirectX with SDL
Programmed mouse input and full screen again, as it was done with SDL before
Handled minimizing in full screen
Stopped the game from updating when the window doesn’t have focus
Added in a system to draw fonts, including custom typefaces
Added game pad (USB controller) support!
Made full screen letterbox the window so that circles in windowed mode will be circles in full screen mode, rather than them being squished/stretched to look like ovals
After taking a good amount of time to think about where I am in terms of my career, I have decided to quit my job as a QA tester and use the 40 hours a week that I would have been at work to program in an attempt to better my programming skills and land a programming job. I will start by making an engine, which I will use to make a 2D game. After that, I will either make a 3D game or start making tech demos of things that I want to show off to employers, like A* path finding, a 3D graphics demo, or something similar.