Ava Engine: Update 2

New Features


  • Object Pooling
  • Object Factories
  • Music & Sound Effects

I got Object Pooling done mostly on my own. I like my implementation, but I have some reservations I may talk about later in another post. Object Factories is a completely different story. I pretty much copy pasted code from a blog I found. I credited it in the source and the site claims its free to use. Factories involve some pretty heavy C and C++ coding. The site’s version uses void pointers in many places and some template coding. I might try to make some modifications to see if I can improve it. My Object Pool class employs variadic templates. I had never worked with those before, but it was more fun than annoying. I also finally got around to 2D sound support. I’m pressed for time so I’m cutting this off here, thanks for reading!

Update 1 On The New Project

I’ve named my game engine Ava. Its currently a 2D engine built on Modern OpenGL and SDL 2.

Features (Currently)


  • 2D Sprite Engine (Proper transformations, coloring abilities, and a Camera)
  • Input Manager
  • Resource Manager
  • State Machine

To Do


  • 2D Animation Engine
  • Quad Tree (Collisions in general actually)
  • Object Pooling and Factories
  • 3D Capability (Lighting, Models)
  • (Maybe) Sprite Batching
  • (Maybe) Scene Graph

On OpenGL

I’ve done lots of reading. I understand what I’ve read, but its just hard to expand upon it without copying tutorial text. I’ve learned lots about shaders, transforms (matrices), OpenGL states, and more. I’ve had lots of fun learning and experimenting. Implementing Sprite Batching is going to be interesting. I have a Sprite Batch class, but it just calls each sprite’s render function making it more container and less graphics optimization. I haven’t gotten to the Quad Tree, Object Pooling, or Object Factories yet. I’ve been distracted by a bit of feature creep. Its is a personal project though and I still haven’t set a deadline yet so no harm done.

Deadlines and Priorities : Final Deadline (December 31st)


  1. Object Pooling and Factories
  2. Quad Tree
  3. 2D Animation Engine
  4. 3D Capability
  5. Scene Graph

I’ll report back when new info is available. I will also be uploading Ava to my Bitbucket soon.

DreamSpark and Azure

I tried to convert this site over to a free DreamSpark Azure subscription. It can’t be done. You can copy paste the data over to a new WordPress site, but you have to start over with your plugins and themes. To top it off, you can’t use a custom domain name with a free account. That was the deal breaker for me. I wasted a lot of time trying to set it up, only to find out the limitations were just too great.

New Project

So if you read my post on Shawnee’s Game Conference, you know that I am interested in creating a 2D game engine. I want to use SDL to handle events, windows, and maybe audio. I want to use OpenGL to do the rendering. The main goal of this project is to utilize some new things I’ve learned and heard about.

Goals


  • Learn + Implement Modern OpenGL
  • Learn + Implement Object Pooling and Object Factories
  • Implement a Quad Tree
  • Implement the standard resource management and state machine

Hefty goals to say the least. I predict Modern OpenGL will be the hardest to utilize, I’ve used it before though so it is not going to be that bad. Object Pooling and Object Factories are new to me, but not the ideas, so I shouldn’t be too overwhelmed with that. Quad Trees are not new but I’ve never done one in C++, so that may provide some challenges. The resource management and state machine are old and overdone for me. These should be trivial, at least I hope they are.

To anybody new to OpenGL, I have found this website to be very good. I have some school work to do before I start this project. I will report back here when anything interesting pops up. My biggest challenge will be staying off of Fallout 4, I love it to death but it is a huge distraction.

Shawnee State Game Conference

So this past Friday I went to the Shawnee State University Game Conference. It was pretty cool overall. There were some nice talks about making games and some neat tech demos as well. I think the coolest tech demo was “Hypersonic Audio”.

I was walking around and I kept hearing this music. I thought it was one of the games on display but it was there and then gone just as quickly. On the second floor, these people were looking over the balcony and aiming some kind of weird circuit board at random people. I noticed when it pointed at me, I heard the music. I was having trouble finding the demo for Hypersonic, but when I noticed the music and board, I knew I had found it. I went upstairs and sure enough that was the demo. I got to hold the board and point it as unsuspecting students below, very fun. Apparently, it shoots out sound as a directional “beam” and its above human hearing. When the beam hits an object though, the waves slow and it become audible. Pretty cool, at least to me.

I went to see the “senior project” demo and that was a bust. They made a game with Unreal and the demo room only had a cart computer, and he couldn’t log into it to even show us pictures. Poor guy, that was a Shawnee failure, not yours.

I then went to a talk on a game I was familiar with, “Rising Rein”. About a year ago I joined the team, but had to drop out of it due to incompatible schedules. I was porting it to Mac. It was a randomly generated game… thing. Its really cool, but hard for me to put into words. I had met the front-end guy, but I had not met the engine programmer. I thought I would be unimpressed, loving engine development myself, but he blew me away with all of the changes and advanced C++ he implemented. He didn’t know I had ever been on the team, so he was confused how I knew so much about the engine. The front-end guy programs extremely complex C++, I’m good, but not twenty variables in the constructor good. That is part of the reason I left. Anyway, the engine guy has done so many cool things, he inspired me to try some. He had the usual engine constructs like State Management and Resource Handling, but he also had Object Pooling and Object Factories which I’ve never done much of. He also pulled the engine off of SFML and put it on SDL using OpenGL to render everything. I think my next project might be something similar.

The talk itself was impressive. Dave Voyles of Microsoft spoke to us about getting into the game industry. One of my college professors spoke before him, Howard Dortch, and their message was pretty universal. Get a Website! Have a website to show off your projects and skills. A resume means little to employers. You may say you know C++, but they don’t know that. And if you say you know it, they are going to assume you mean professional / expert on it. Have honesty and put “Intermediate C++, Little C#”. That tells employers that you gauge your skills well. Even if they are looking for a C# programmer, if they see you know C++ and maybe some Java, they might still hire you because those skills will carry over. The best thing you can do however, is get a website and show off your code. Do not keep your idea secret because you are afraid someone will steal it. Dave told us a story of how a team made this app, and when they showcased it, it had already been done much better by several other people. They were destroyed. Now, they should have at least googled parts of the idea to see if it had been done, but sadly they did not. After the talk, we had lunch and then went home. There were more talks after lunch, but none that really interested me.

So in conclusion, get a website and show off your projects. Talk about what you are doing, what you are having problems with, and most importantly talk about what you have learned. I got this website because of Howard and Dave. Aspiring tech professionals should do the same.

Experience Setting Up My Website

Since this is a blog for new experiences, I should probably talk about setting up this website. I have had experience setting up a website before, but it was self hosted. That was cheap, but a nightmare to setup. This time around I used Microsoft Azure to host the site, but like last time, I used Go-Daddy to get my domain name. If you couldn’t tell the site is a WordPress site. I’ve never been a big fan of these types of sites, but you can’t argue with the results. They are quick to setup and look beautiful.  They also have so many themes, plugins, and options that I still feel like I don’t know half of them. Getting the WordPress part of the site setup was the most fun and the easiest. Getting Azure and Go-Daddy to work together took awhile, but I figured it out. The hardest part was getting the site to appear on Google, Bing, and Yahoo. I had to install some plugins and learn about how search engines index sites. Setting up the sitemap file was important, but ultimately this link and this one provided the instant results I was looking for.

I do have some concerns on cost however. I have Azure’s Pay as You Go plan, so if my site gets lots of traffic then I am in trouble. I would like some piece of mind by setting a price limit. This option exists on Azure but not for the Pay as You Go plan, as far as I can tell. I’d like to be able to slow or shutdown the site if a certain amount is surpassed, but sadly I cannot. The Go-Daddy price does not concern me, it was more upfront cost, but cheap in the long run.

Overall this process was fun and look forward to doing it again in the future.

New Site!

I have created a new site for myself. I was recommended to create one by Dave Voyles of Microsoft after he did a keynote at the Shawnee State University Game Conference. I am to post my progress on projects, my thoughts, and my accomplishments. I look forward to posting a lot of content here! Enjoy!

Previous Page