Monday, September 29, 2014

For Class: A Brief on XNA Architecture

So, for Graphics Programming I this week we were asked to restructure some of our code and write a blog post about it (the architecture) of our XNA projects. Because I already planned a basic architecture for all of my projects, I didn't actually restructure anything, but instead, I am going to briefly and simply explain my "architecture".

Here is the basic architecture (as it is for now)

  1. GameWorld
    1. Menu
    2. LevelOne
    3. (Any or all self-contained worlds)
  2. GameObject
    1. Sprite
      1. AnimatedSprite
      2. Text
    2. Tile 
      1. ModularTile
  3. NewCamera

Each project is broken into Worlds which can be derived and overridden. Worlds are composed of GameObjects which make the levels actually do things. Every object in the game is derived from a GameObject class, though in most cases, the player will be creating Tiles, Sprites or Text objects. The GameWorld maintains a list of GameObjects that it will consistently draw, update and allow manipulation of, but it does this automatically, so all someone has to do is create an object and add it to the world's objectList and it will be drawn and updated. That means that to create a game or content, I can derive from the major classes and override virtual/abstract functions and define any gameplay that I want. It's very simple, but fairly robust.

There is also a separate NewCamera class which consists of a matrix that defines how the view should be drawn. The camera can be loaded into a GameWorld as each GameWorld has its own main spritebatch that can be overloaded/edited for the needs of the level. The user can create and define a camera object or choose not to and the level will still run. Movement of the camera can be defined in an overridden camera object or be handled directly within the class or even other classes.

Tuesday, July 15, 2014

Boatventure: Blog 2

Some more movement prototyping. 

Hey, this is a quick update just to show some basic Boatventure concept art and also the basic notion of locations. I've been busy hacking away at writing the framework code for the last month or so and I've finally got something that works the way I want and is expandable in all the ways that you'd want in an action-adventure platformer!

 So for now, here's some more concept art and maybe a gif or two! SIDE NOTE, I will soon begin blogging about BV solely from :)

One potential animation style for switching boat modes

Our friend, Wynona!
Wynona design sketch!

Testing hair designs for a character!

Another one of the thumbnails we're doing to get the idea for a location down. We have like 30 more. <3

Some promotional art we made.

Friday, June 6, 2014

Boatventure: Blog 1

Working on Boatventure again, finally!
I don't have time to say much in this post, but let's just say that I have a promise to make and that promise is that Boatventure is going to be up and running by the end of this summer. Currently working on rewriting all of the game's main mechanics and base infrastructure code and hopefully, that'll allow the team to get a vertical slice done this summer. The game is being developed in Unity and it's going very well so far! Writing a 2D platformer/metroidvania in Unity will be difficult, but I'm certain that the pros outweigh the cons. Throughout these development blogs I'll probably also be writing short game design and development tutorials to help people who also want to make 2D games in Unity. There's a lot to learn and I'm not the most qualified to teach, but there aren't many other people right now!

At the same time, I have some news that I'll be discussing in my upcoming blog posts. I will probably be moving this blog to a new location at our main site's domain when it's up and running, though, so just a heads up to the 0 people that currently read this blog. :)

Expect Greatness,
~Ryan Huggins

Saturday, February 8, 2014

Boatventure: Getting Bloggy

Boatventure! Basic movement implementation!

[Re-post from] Hello everyone, it's Ryan Huggins, a game designer here at ACPC Productions and I'll be running the Boatventure blog. We've just *really* gotten into working on the game after finally settling on Unity after having built several prototypes in Game Maker. I'm currently busy working on the first iteration of the game and am taking a break to set up this blog. To begin this blog, I'm just going to throw up a few pictures, but I'll be updating periodically every time I make visual progress on the game; and sooner or later, I'll actually talk about the gameplay... The .gif at the top of the list is an example of the basic movement implementation and the current (rudimentary) system for cycling through your boat modes.

Some Boatventure and some Railwar! Two games being developed by ACPC Productions crossing over. Art by Meghan.

Screenshot Mock-ups

A mock-up by our artist, Meghan. Boatventure has gone through a ton of artistic revisions these last few months. This is an example of being at the surface of the water.

Another mock-up; Meghan and I have been doing a bunch of work trying to figure out the style for Boatventure. We've got a lot of work to do, but the style's finally getting to a place that we like. This is an example of underwater exploration.

Character Art

This is the original concept art for Wynona. A main character (but not THE main character) of Boatventure.

This is a grandma. She is also a pirate.

Tears and blood. We're not sure why she's crying, but Meghan felt compelled to draw it. Classic Ghibli-style tears.

Friday, November 29, 2013

Update and Boatventure: Log 3

Just messing around with some boat ideas
So, it's about time I return to a roughly weekly update schedule. This last semester has been the semester that's supposed to weed out all of the bad game designers and it has been reasonably difficult, but as far as I'm concerned it wasn't hard enough. A lot of the work was just busy work that prevented me from working on side projects, like Boatventure, but didn't actually teach me much. That's why I haven't been updating these last couple of months.

Luckily, ACPC Productions and a few other developers at our school just recently started a game developer's association, the Extracurricular game Developers of Champlain (EDC). We've just begun a three month development cycle called the Marathon and I'll be working on Boatventure. Other than that update and some new concept art stuff I don't have much else to say this week!

Click for the fullsize image!
Us wondering how the world will actually be built.

Monday, August 12, 2013

Boatventure: Log 2

Newer concept art. Not in new resolution.
After roughly a week of development, there's actually not a great deal to discuss. This week has been spent mostly organizing some bits of code, adding in very small functions (like health bar drawing, screen shake, and zooming in and out (automatically)), and tracking down a memory leak that was INEXPLICABLY caused by Game Maker: Studio's absolutely awful debugging console. Literally, I spend every day for FIVE days rewriting all the code in Boatventure because I honestly thought that the memory leak might have been my fault. It really impacted how well-written I thought my code was and in a lot of ways burned me the fuck out; all for me to just figure out (on my own btw because Yoyogames apparently doesn't respond to tweets or questions about memory leaks) that the memory leak was being caused by the Game Maker debugger.

Needless to say I was extremely upset that I wasted so much time when Yoyo Games' "professional" software, that costs roughly 400 (soon to be 700) dollars, causes unexplained memory leaks in your games because they can't spend a few hours to fix their debugger.

To be honest, this experience has in a lot of ways soured my opinion of Yoyo Games and their Game Maker: Studio software; but if their 1.2 update is as good as they make it sound I might consider sticking around and using it. Otherwise, I will probably port the project to Unity and make it there instead.

Regardless, because of this situation I've burnt myself out and decided to recover by doing a "thunderdome" with the team. We just decided to begin writing an actual story for the game, so we thought a thunderdome would be a good way for all of us to end up happy. A thunderdome is a technique where each person on a team comes up with a fully fleshed out and detailed design for a certain thing, independent of one another. After everyone has their fully developed idea, they all present them to each other as equals and discuss the merits of every idea presented. Ultimately, the team chooses the best ideas from each proposal to make it into the game. We're currently doing this for the history, characters, story "beats" and overall feel of the story.

Outside of that though, nothing new to report, but here are two older pieces of concept art.

This was made by Jack, our musician. He scaned in some textures and was testing them in this image.

This was one of the original concepts for Boatventure. We don't really like it as much anymore, but it's nice to show!
Expect Greatness.
Ryan Huggins~

Thursday, August 1, 2013

Student Developer: Microsoft Surface Pro - Log 3 + Boatventure 2013

WHO IS SHE? She is the co-lead of BOATVENTURE 2013!
Boatventure 2013 Dev Log located below the Surface Pro: Wrap Up.
The Surface Pro: Wrap Up

It's been roughly 2 weeks since I decided to use the Microsoft Surface Pro as a tool for game development and in these two weeks I've decided that the Surface Pro is a great tool for developers on the go, but not yet a perfect replacement for a desktop development environment. Most of the problems stem not from the internal hardware or the power of the system itself, but in the available software and the size of the screen (which surprised me in how much it could hinder productivity). The Surface Pro did a lot of great things for me--it ran pretty much everything, let me draw and sketch ideas like I was using paper, connectivity was solid and the type cover made it comfortable to program for hours--but there were a few issues that slowed me down and helped me determine that, for a software/game developer, the Surface Pro is a stellar secondary device, but only a decent primary one.

For a primary device, the screen size was much too small for me to easily multitask, especially when it came to managing 8+ code windows at once. That was probably my biggest issue and it ended up inhibiting me more than I would like to admit. A few other smaller issues, like the length of the charger and the quirks of Windows 8 also, upset me, but it was definitely the screen size that convinced me to return to my desktop for big projects.

However, where the Surface Pro truly shines is in its ability to be an amazing portable device. If I was to go out for a few hours--an example would be a class--where I needed a light device that could power through all of my college activities, let me sketch ideas, and make code edits (or even create full programs in a reasonable amount of time), the Surface Pro would absolutely be the device I would choose. It's just when you ask it to become a primary device that it may fall short for heavy developers.

Do I recommend it? Yes. And I already have to several people. It's just important to ask what you want the device to do before you purchase it.

Boatventure 2013: Development Log 1

A great example of prototyping in action.
These five silhouettes are no longer part of the game.
Today marks the beginning of the weekly (or occasionally bi-monthly) development log of Boatventure 2013 (20XX)! I was working on the first draft design/prototype of the game during my two week test of the Surface Pro as a development device, but sadly (or wonderfully), that prototype bombed and helped us to determine that our core mechanic just wasn't fun! First, here's a bit of background
After many years of global warming, the majority of planet Earth has found itself submerged beneath a torrent of rising sea levels while much of mankind has been wiped out by the resulting influx of superstorms. In recent years however, with humanity at the brink of extinction, the Earth has finally begun to stabilize itself. The majority of those who survived this global warming-related apocalypse have taken refuge on what little dry land remains, while others have taken to the seas themselves, searching valiantly, for any remains of civilization until the depths claim their lives as well. Thrown into the fray without any hesitation for adventure, you play as a boat scouring the ocean world, searching for a way to kickstart a new civilization, and somehow resurface the world that now lies beneath the tides.
If you take a look at the images above, you'll see five ships and a submarine. In the first design of the game, the player would be able to unlock new, larger ships and then cycle through them at will during the gameplay in order to solve puzzles or just lay down the law to other ships. The system was based around a mobility-power dynamic, where the smaller ships were more mobile, but the larger ships were more powerful. Luckily, it became apparent during prototyping (and prior to that, in some arguments with the musician, Jack Yeates) that the system might not be fun, or at least be terribly difficult to balance. (On that note, check out one of our MANY concept songs and maybe let us know what you think!)

In a true designer fashion, I don't like really like scrapping cool conceptual systems without testing, so I insisted that we prototype it out; and for a few days, I thought it would work out, but it quickly become more and more apparent to me that cycling through different boats was a fun mechanic, but that the power vs mobility dynamic was not. At all.

In the end, we got rid of the different sized boats, but kept the idea of cycling through multiple specializations of ship. This means that you can unlock new ships with a new type of weapon (like how Megaman unlocks new weapons) and cycle through them in real time. In addition to this, we're considering a Cave Story-esque mechanic where each ship can "tier up" by doing well, obtaining a more powerful weapon in the process. Like Cave Story, however, they can also level back down.

It's important to note, that unlike both of the mentioned games, we plan to make sure that every type of weapon has some sort of gameplay purpose (akin to The Legend of Zelda's items) to aid in the exploration! So cannons might be able to break down certain walls, torpedoes can destroy underwater rocks, and battering rams could maybe let the player push objects that would normally damage them. Each different weapon corresponds to a different specialization. (We're still coming up with more like an anchor grappling hook.)

A bit of a very basic platforming scenario. TAKING PLACE AS A BOAT!!! :D
In addition to the combat, it's important to remember that the game is an exploration-adventure game where the player is literally a boat. We've spent a lot of time thinking about how the player can get around (and we have a lot of ideas!) Though, one of the tested mechanics that was really positively received, was the submarine mode. Since your boat has the special ability to change into different ships, it can, naturally change into a sub to explore the deep-sea depths! In addition to this, the player can unlock a lot of other cool tools for exploring and getting past obstacles that they couldn't otherwise get past.

Submarine mode is my personal favorite though. It literally and figuratively adds depth to the game and will let us design some really cool areas to fight in, explore, or solve puzzles in, whereas the other ideas are more combat orientated with the added bonus of increasing mobility (Castlevania-style).

So, hopefully, you like the idea of Boatventure! It's really shaping up to be an amazing, beautiful, stylistic adventure game that we can be proud of; and our secondary protagonist at the top of the page, is shaping up to be a great character. More on the main character in the coming updates. :)

More sketches of our super cool co-lead!