Sunday, February 10, 2013

Busy Busy Busy

Post frequency has fallen off here quite a lot lately, and I thought I should let y'all know why. I've got LOTS of projects going on, so I'll share what I've been up to.

Procedural Terrain Generation

One of my modules this semester involves procedural terrain generation. I'll be using my space project from last semester and building on it for this coursework. I've been working hard on restructuring my DirectX project from last semester into a class structure that is more pleasing to me. In the process, my knowledge of DirectX is deepening considerably. Where before I understood the existing code well enough to use it, now that I'm restructuring the rastertek framework I am really sinking my teeth into how everything is done.

Unfortunately, it's much slower going than I had expected. I had hoped to have the code restructure done this weekend, but I'm still around halfway through it. If possible, I'd like to finish it by next weekend.

Current Status: Restructuring old code.
This Week's Goal: Complete code restructure, so I can start adding new features.

PlayStation 2 Programming

My other taught module this semester is console programming. Our coursework, and most of the module, is about programming for the PS2. At this point it mostly involves doing tutorials in class, so this is actually my least stressful project currently.

Current Status: Just finished the first 3d graphics tutorials.
This Week's Goal: Keep up to date with weekly tutorials, get ahead if possible.

Havok Team Project

My third module this semester involves two main focuses, the first being a team project in Havok. This is a team of around 10 people, working on a game using the Havok engine, which will be completed at the end of this semester (May). We don't have an external client, so we've been able to pitch our own game ideas, based on the prompt of "physics-based destruction". I think it will be a lot of fun!

Aside from taking up time with meetings, there hasn't been a lot of work for this project yet. I do need to spend some time brushing up on working with the Havok engine - while we became familiar with it last semester, it's easy to forget over the holidays.

Current Status: Formative idea stage - pitching ideas tomorrow.
This Week's Goal: Get up to date with Havok technology.

Master's Dissertation

In addition to the Havok project, my third module also involves individual work on my Master's Dissertation. This semester, I need to choose a research topic, do a literature review around it, and write a proposal for the rest of my dissertation work to be continued over the summer and next fall. This is a huge undertaking, and I'm no good at coming up with ideas. I've been working with one of my lecturers to help develop a project idea, and so far I'm interested in something in the realm of AI. I will either be continuing my Fuzzy Controller / Genetic Algorithm work from last semester or starting on something new.

Current Status: Formative idea stage.
This Week's Goal: Brainstorm several ideas and discuss them with Dr. King.

Pollinator - Flower Defense

Not only do I have all those uni projects, but I also am part of the Game Development Society at Abertay and am working on a mobile game called Pollinator - Flower Defense. It's a tower defense game where you play as a bees defending their hive. I've got a team including a designer and artist, and I'm quite excited to see what we can produce. Unfortunately, I'd hoped I would get some work done on prototypes over the weekend, but that turned out not to be possible due to unexpected emergencies coming up. It's my hope to finish at least one prototype by this Thursday, our meeting.

Current Status: Several design possibilities fleshed out.
This Week's Goal: Produce at least one prototype to present at GDS meeting.

Dare Project

I'm also planning on applying to Dare this year. I've got a full team now, and we're working on solidifying a game concept. At the moment we have general gameplay ideas but need to determine the exact setting and flesh out controls and gameplay. Overall it's going well and I'm excited to work with this great group of folks.

At the moment I am making sure the networking plugin I found for Unity mobile will suit our needs, and getting up to speed on how to use it. Additionally, we are brainstorming ideas and settings, and will be deciding on something at our next meeting this coming Friday.

Current Status: Solidifying ideas, platform and engine research.
This Week's Goal: Complete Unity networking tutorial, brainstorm ideas to bring to the meeting.

Career Stuff

If all that wasn't enough, I've also been rushing around trying to get my CV, portfolio, and business cards up to date to show off at Blitz Open Day, which I'll be attending in two weeks. This involves a lot of iteration based on online reading, trips to Career Services in Abertay to get advice, reading a book on getting into the gaming industry, asking lecturers for feedback, and looking in to printing services. It's taking quite a bit more time than I expected, but I'm hoping the work will pay off. I'm excited to be attending the event, and I think if anything it will be good practice on networking and interacting with industry developers.

Current Status: Electronic copies of CV, Business Card, Portfolio.
This Week's Goal: After getting a last round of feedback, get CV and Business Cards printed.

Whew!

And that's about it! A ton of stuff, as you can see, but I still want to keep blogging once a day. I just have to accept smaller, progress-style posts instead of huge guides or opinion pieces. This post has already gone on a lot longer than I expected, but I'm hoping going over my different projects and goals will help me focus.

Wednesday, February 6, 2013

Sleeping Giants Wake - Console News



The last few months have been host to a number of interesting stories in the world of consoles.

There was a big announcement today - some details about Microsoft's new Xbox have been revealed. One of the most controversial features is the always online requirement. This is a clear move by Microsoft to kill the used game trade. Many people are up in arms about this, but I personally am fine with it. Used games were a leach on the gaming industry as far as I am concerned - directly stealing money that should be going to developers, and not even giving much of a discount to consumers. It is unfortunate that individual gamers won't be able to sell or trade among themselves, but I won't be weeping for the loss of brick and mortar used game sales.


GameSpot, a large brick-and-mortar game shop in the US, has already seen its stock prices fall as a direct result of this announcement. Over 20% of its revenue comes from used games, so this is no surprise. Again, I won't weep over this - while I have nothing against brick-and-mortar stores, I also do almost all of my game purchasing online - either from Steam directly, or from Amazon when I do need a physical copy. The only reason I've even entered a physical game shop in the last year was to buy emergency accessories (power cable for my DS), impulse buys that I wanted to play immediately that weekend (when my roommate bought Pokemon White so I ran in to get Black), and when dragged in by a friend. Not that I want these places to go out of business - that means loss of jobs and that is unfortunate in general. But it just doesn't really effect me, and honestly I don't think it much effects the industry at this point. Major retail shops often have a game section if they have a film section, so there will be a place to buy games there if dedicated game shops go under.

It is interesting that this Xbox announcement comes close on the heals of Sony announcing their next gen console and its target release for the end of 2013. The imagery of two sleeping giants waking up and flexing at eachother plays out in my head. Nintendo jumped the gun with its Wii U, and while I find the asymmetric gameplay interesting, it hasn't been doing well in sales and it's just not powerful enough even compared to current gen hardware.

As a primarily PC gamer, all this news is somewhat less relevant to me. However, it's nice to know that the PC games will no longer be held back by the limitations of eight year old hardware.

The Ouya gaming console, with a fairly traditional style controller, runs Android OS. It is relatively low powered, but at the $100 price point is fairly reasonable.

Outside the three giants, other consoles are also in the news. The Ouya is on target for a June launch, and will be available through major retailers such as Amazon and BestBuy. This is actually quite exciting, as a new player in the console market will promote competition and freshen things up. Obviously the Ouya can not compete in power with the new consoles, but at its low price point its still an interesting choice, especially from a dev standpoint. The Ouya will be running Android, a very open platform for games.

Nvidia's Project Shield runs Android OS and features a traditional control pad input style with a clam-shell-like screen attachment. It can also stream from your PC if you have a high powered Nvidia card.

On a similar note, the Game Stick recently met its Kickstarter goal and will soon present another Android based console. Additionally, Nvidia is entering the dedicated gaming handheld market with their Project Shield, and Razer is creating a gaming-focused tablet with gamer controls. Last but certainly not least, Steam enters the console market in its own way, marketing a small computer as a "Steambox".

Microsoft's IllumiRoom projects another scene on the room around the TV. In this case a wider view of the in-game world, but examples also included spark effects coming out of the TV scene and other effects.

Aside from these core devices, there have been several interesting peripherals discussed lately as well, ranging from Microsoft's IllumiRoom and Valve's virtual reality experiments.

It's definitely an interesting time for consoles, and I'm looking forward to what the future holds.

Monday, February 4, 2013

Business Cards

Today I created my first design for my own business card. I kept it simple, but included what I've come to think of as my "personal logo", originally designed for my indie team Bounder Studios. I also incorporated the same style, font, colors, and dividing line I used in my CV and resume. Oh yeah, and I turned it sideways, because, why not.

EDIT: On the advice of some friends, I've now changed the name and title font to be more interesting. I tracked down the font from one of my all-time favorite games, Secret of Mana, and used that. I quite like the result.


I've put the card in my dropbox if you'd like a more in-depth look at it: http://dl.dropbox.com/u/11838203/Sarah-Herzog-Business-Card-Manaspace-Caps.pdf

Let me know what you think! I need feedback so I can present myself as professionally as possible - the job market is tough, especially with the added complication of being foreign.

Friday, February 1, 2013

Dare to be Digital - Team Forming


Short post today, as I'm feeling fried. Just wanted to share the news that I'll be applying (with a team, of course) to Dare to be Digital for this summer. For those not in the know, Dare is a huge competition in which teams create a game over the summer. Accommodation  a stipend, and a modest development budget is provided for each team - provided you get in. Applications consist of a 5 minute pitch video followed up by an interview.

So far we have 4 of the 5 team members chosen, and I think we've got an amazing mix of talent. I'm really looking forward to seeing what our group can produce, though I'm also very nervous! I'll definitely be posting updates here as we progress.

It's crazy how busy the next year is going to be, but oh so exciting at the same time!

Thursday, January 31, 2013

Pollinator, Flower Defense - The Beginning


I've decided to join the Game Development Society at Abertay this semester. The idea of the society is to allow teams of members to produce a game over the course of the semester. This semester, the society is recommending it's members produce mobile games. I'm in a team of two, myself and my partner who is a designer and artist. We've decided to make a tower defense game based around my old game, Pollinator.

The player plays as a queen bee protecting her hive. As queen, the player can send bees to gather pollen from flowers, or send worker bees to guard duty. Enemy wasps fly in, attacking bees and eventually the hive. Pollen is used to purchase and upgrade bees, while nectar (gathered slowly along with pollen) can be used for upgrades between levels, such as new bee or flower types. After a flower has been worked for some time by a worker bee, it will produce a seed, which can be planted anywhere on the map to grow a new flower.

It's all very much in the planning stage at this point, but I'm excited and I think it will be a lot of fun to create.

Tuesday, January 29, 2013

Procedural Terrain Rendering: Project Planning

It's that time again - starting a new semester, everything is fresh and new, and new coursework is on the horizon. One of my projects this semester will involve procedural terrain rendering. Since I already have a project from last semester that's all about exploring the solar system, this semester I decided I'd build on that and allow the user to land on planets. This will allow me to dynamically generate the terrain for each planet, using a set of parameters specific to each planet. I'm hoping this will allow me to show off the ability to write good polymorphic code, making this an excellent portfolio piece.

Screenshot from RasterTek tutorial for height maps
My scene last semester still needed some fixing up. In particular, for me to be happy using it I would need to fix the following features:

  • Complete Program Restructure: I'm dissatisfied with the RasterTek framework for such a large project, and want to set it up in a way more intuitive to me. This will also show that I can do more than copy/paste from a tutorial site.
  • Particle System Fix: My particle system is currently slightly broken - the particles do not billboard correctly and some work needs to be done on ordering them properly when one is spawned. Additionally, they need to fade out gracefully rather than suddenly winking out of existence.
  • Mouse-Assisted Camera Control: As it is, the camera is a pain to deal with. Adding mouse options to the controls would really help.
  • Select-able Planets: In order to land on a planet, the user will have to be able to select the planet. Luckily RasterTek has a tutorial for this. I could even have a probe or laser sensor shoot out to the target on click.
Additionally, if I have time I'd really like to add some or all of the following:
  • Additional Moons/Dwarf Planets: After the program restructure it shouldn't be too hard to add the rest of the moons and dwarf planets to the solar system.
  • Lighting effects (bloom, glare, lens flare): The sun doesn't seem bright enough in the current scene without some effects. More special effects will make the scene much nicer.
  • Re-sizing and re-positioning of planets for realistic representation: I'm not sure on this one, as I want it to still be possible to easily explore the system. Perhaps if the planetary orbitals were also added, and if there was some indication of where nearby planets were - maybe a minimap?
  • Asteroid Field: I didn't have time to implement the asteroid field last time. This could actually tie in to the procedural generation, as I could generate asteroid shapes on the fly.
  • Planetary Rings (Saturn, etc.): A simple disk with a partially transparent texture could represent planetary rings.
  • Coordinate Readout: This could help the user find their way around.
  • Representation of Planetary Orbit (line): Another aid in helping the user find their way around and see the different planetary orbits.
  • Planetary information display: It would follow the theme to have planetary information displayed to the user on their screen. A fancy target-lock would be really awesome, with text on the screen with information about the planet. I know a professional voice actor who might be willing to voice this as well.
State of the scene at the end of last semester
I am hoping to get these objectives done in the first half of the semester, leaving the second half to do the module work. That's all well and good, but I need plans for the actual terrain generation. This plan will have to grow and change over time, since I'll be learning more about my capabilities as I go through the module. For now, I've got some ideas for basic features:
  • Mountainous Terrain based on Parameters: For each planet, some sort of mountainous terrain will be generated based on the provided parameters
  • Planet color/texture: Each planet/moon will have it's own color or texture
  • Navigation on Planet Surface: The user will have to navigate on the planet surface somehow. Most likely this will start as first person perspective.
  • Gravity: Gravity WILL be in effect on the planet, and the user will be in a ground vehicle, so it will limit their travel. Gravity will be different for each planet!
In addition to these base goals, I would like to add some more interesting things:
  • Gaseous Planets: It would be cool to be able to fly down through gaseous planets. However, this might be too difficult.
  • Asteroids: It would be excellent if dynamic asteroid generation was possible. Since asteroids are very small compared to planets, perhaps the user can select the asteroid belt as a whole and fly around through it, only then seeing the asteroids up close enough to see the dynamic geometry generation. When in the main space view, they can just be spheres or a few "lumpy" asteroid models.
  • Water: Landing on Earth, it would be quite likely to land near water. Water effects would make this much more realistic.
  • Plant-life: Likewise, some plant life would make an Earth landing much more realistic.
  • Volcanoes: These are quite common on some planets, so these would be great geometry to look at, as well as some special effects involving lava.
  • Precipitation: In addition to rain on Earth, some planets have their own precipitation of various types (acid rain on Venus for example).
  • Ice: Some planets have ice of various types (Mars for example).
  • Sun/Moons: Seeing the sun or moon (or planets) from the planet surface would be interesting too, especially if time passed normally while there and the time the user landed actually dictated the time of day on planet.
  • Rover device: Rather than a purely first person perspective, it might be cool to see a little animated rover running around on the planet surface.
  • Gameplay objectives: Adding in samples to be taken or some other kind of objective would make the game more interesting.
I'm sure many more ideas will come to me as I go through the module. 

Monday, January 28, 2013

Scottish Game Jame: Post-Project Reflection

The game jam is done at least. After a weekend of fun and learning and meeting new friends, I finally got a good night's sleep and am ready to look back on how things went.

Concept art of our game, but the finished product looks essentially like this.
Our game was a 2D running game in which the hero, Denizen Pop (the Ultimate Mare) must escape being turned into burger meat by a wall of... well, of burger meat. She runs across a surreal landscape, collecting carrots (speed boosts) and foals (bonus points) while avoiding barbecues, hedges, and onions.

The game was rather simple, and the gameplay pretty unoriginal. We didn't have a designer on the team and I think that made things much more difficult for us as a group. None of us were really "idea people" and even this simple idea took us longer to decide on than most of the teams. However, we were able to completely finish our game with time to spare and limited stress, so perhaps this simple idea was best.

For programming, we used Unity. I had never used this engine (or indeed, any engine) before and it was a wonderful experience, especially because Dave was a Unity veteran and was able to teach me. Luckily I was fairly familiar with C#, so it was our scripting language of choice. I was very glad to have Dave's guidance in finagling Unity to 2D, as it wasn't particularly intuitive.

Overall, I learned an absolute ton, made some great new friends, and had a blast. This was an excellent experience, and I suggest anyone interested in making games definitely get involved with a game jam as soon as possible. With only 48 hours of your time (or less, depending on the jam length) you'll end up with a completed game, which generally looks better in a portfolio than an incomplete one no matter how fancy. You'll learn to work with others, often both others of your discipline as well as cross-discipline. You may even learn a new technology, as I did. You'll make new contacts in the industry. Most importantly, you'll have a great time and make memories that will last a lifetime.

If you want to play my game, you can download it here: http://globalgamejam.org/2013/denizen-pop-ultimate-mare