Tuesday, November 26, 2013

Vagante (Large GIF Warning)

It's long overdue, but here's what we've been working on over the past three weeks.

Vagante (working title) is the game I've always wanted to make. It features procedurally generated levels, skill based combat, boss fights, and permanent death. 


Vagante: Early development preview

Tuesday, November 19, 2013

The End of 'The Two of Us'

Two weeks ago, after deliberating as a team, we decided to stop working on The Two of Us. We realized that the project we had in mind was too ambitious, and decided to pivot and start a new smaller, more focused project.

Mini Postmortem


Before starting on TTOU, our vision for the game was relatively simple: a remake of one of our game jam projects. However the premise rapidly expanded. This was our first major project, and two of us were going to be working full time on the game. Of course we could add that feature!

We tried to ignore the scope creep in the beginning, but along with the increased scope numerous questions arose that we struggled to answer. How should combat work? Will there be character progression? What's the new story? Will we be able to finish this game?

Instead of having a concrete design for our expanding game, we had a nebulous concept of something grandiose. Keo was pumping out beautiful looking assets, and Kyle and I worked on an increasingly complex level editor/engine. We were all getting a bit lost in our own work. At a certain point, we realized we needed to set a milestone for a playable prototype because we weren't getting anywhere. We set aside a month of time, and started working hard to finish the list of features and assets we needed for the minimal prototype of our game. Halfway through the month, we were no where close to finishing the prototype. At this point, we had a decision to make. We could either keep trucking ahead and finish this game no matter how long it took, or set aside TTOU and start anew on a smaller, better planned game. We pressed the reset button.

What Now?


Using the lessons learned from working on TTOU, we've started on a new project. It's still in early development, but we're very excited about it. More details coming soon, stay tuned!


Sunday, November 3, 2013

On Motivation and Teamwork

I decided to deviate a little bit from a progress update to talk a little bit more generally about life so far as an independent game studio.

Motivation
Source: http://www.smbc-comics.com/?id=2854

I think the hardest thing about being independent is learning to be your own boss. When you first start off, motivation is high and it's hard not to work on your game. But as time goes on, it gets harder and harder to get as excited about working. You begin to realize that more-so than motivation, you need dedication to keep working.

Having a team or partner makes this a lot easier. Partners keep each other accountable, and it's a lot harder to put off work when you know other people are expecting you to get it done. It's also really motivating when a partner commits significant code or has some new art to show off. I find that a common pattern when I work with someone else on a project is that we cyclically feed off of each other's work.

Sometimes though you just have to sit down by yourself and get work done. I haven't figured out a magic solution yet that'll allow me to work consistently for long hours every day, and I'm not sure if there is one. Caffeine helps. For the most part though, I alternate frequently between working hard to the point of near-burnout and taking time off.

Teamwork

Nuke Nine is only the three of us for now. Despite our small size, it can be hard to make sure we're all on the same page. Part of this could be due to the distributed nature of our work; I've never actually met Keo in person. But I think making sure any team communicates well requires significant effort. We use Google Hangouts to hold meetings and to come to decisions, which works pretty well for us.

I think it's easy to underestimate the value of meetings. A somewhat common sentiment among programmers is that meetings are a waste of time. Why pull someone away from their work, interrupting their flow? I can sympathize, but every meeting starts off with a specific intention or goal. Sometimes the goal is met. Sometimes it's not. Luckily, I think having effective meetings is a collaborative skill that can be developed. It's amazing how incredibly easy it is to talk for an hour, agreeing with each other and ultimately feeling good about the talk, without actually getting anything done. Having hard goals before a meeting can help make sure no one's time is wasted.

As a team, we're still developing this skill; but we're getting there.


Tuesday, October 22, 2013

Short recap

Time sure flies by!

I've been working on the level editor, and I'm pretty happy with how it's progressing. At an early point, I was a little bit daunted by the number of features we wanted to add, but after going through about half of the list I feel a lot better. It's also great to be able to test using some of the early art Keo's produced. We got a lot of work done over the past two weeks, and with Kyle's promising boss fight framework ready to go, I think we're close to creating a playable prototype. Exciting!

What else... oh yes, we found a musician! And a talented one at that. Go check out his stuff! https://soundcloud.com/sam-english-composer

so many buttons

lovely tile art


Friday, October 11, 2013

Jam Remake(s)

Over the past couple of years, we've participated in a good number of game jams. A handful of these jams produced a game that we told ourselves we'd come back to when we had time. Well, now we have time.

The first boss in the original The Two of Us

The first game we plan to remake is The Two of Us. It's the first game that Keo and I worked on together, and it's one that we think has a lot of potential. Keo's been working on redesigning the character, and I'm really excited with his art direction.

the new design has the character visorless, and wielding a hefty hammer instead of a sword

I've spent the past couple of days creating the basis of the level editor we'll be using throughout our development. It doesn't have many features yet because we still have to flesh out some of the game design/mechanics, but it's a start. I think separating the level editor into a different tool slows down iterating on design, so I've designed the editor to be able to seamlessly load, edit, save, and test levels quickly.

making changes in the editor. currently uses the old art as placeholders


This isn't the first time I've made a level editor for one of our games, but this is the first time I'll be trying to make it as user-friendly as possible. I'd like to make a tool that doesn't require a huge amount of time to get familiar with, something I haven't had the luxury of with previous editors due to time constraints. Eventually, it might even be cool to release the editor alongside the game so players can create their own adventures... but we'll see :)

Tuesday, October 1, 2013

Art, Ho!

Keo has officially joined Nuke Nine!

Stay tuned, we have something big planned...

Monday, September 23, 2013

Update: Networking progress - continued

I made a much needed change to how networking works. Now, the client tickrate is completely separate from not only its graphics tickrate, but also the network send/receive tickrates.

I've noticed that interpolation is a little bit jerky, especially when jumping. I'm hoping to fix this by implementing cubic spline interpolation, replacing linear.


On a side note, I think I'll try to post a substantial blog update once a week. I had originally planned to do a daily update, but I realized that writing even a simple post takes more time and effort than I gave credit.

Wednesday, September 18, 2013

Daily Update: Networking Code Progress

These past couple of days, I've been working on getting the network code in a better state.

hold tab to show player names

console dropdown


Yesterday, I added a couple features such as the reliable packet layer, player list, and chat messages. The Console subsystem I wrote for a previous project is becoming incredibly useful for debugging and development. It allows me to bind any key to a test function, as well as any c++ variable to a console variable(cvar). This means, instead of recompiling the project to try out a player gravity of 0.8, you can simply type something like 'sv_gravity 0.8' into the console. As you might be able to tell from the screenshot, the Console is very much influenced by the Quake/HalfLife engine :)


Today, I added entity interpolation and a basis for client prediction.

I'm really happy with the interpolation code I wrote. The way the engine is structured, the game logic tickrate is completely separate from the graphics tickrate. So even though the server and client's logic run at 20 frames a second, the entities are drawn on the screen interpolating smoothly at over 100 frames per second. All I need to do is structure this new code to be applicable to all objects, not just other players.

In addition, I added basic client prediction to your character. It works in the sense that the player's input is immediate, but because there is no interpolation for your own player it still feels jerky. I'll be fixing this soon for sure.

Feeling good about progress right now! My sleep schedule is really off, but I can say I'm productive.

Immediate TODO:

  • Generalize interpolation code
  • Smooth out player prediction
  • Do some online testing with four people

Tuesday, September 17, 2013

The Origin of Mephisto

Back when I was still in school, Kyle and I started working on a game. It was a simple idea at first, a typical metroidvania, but it didn't stay simple for long because of feature creep our awesome ideas. After two years of off and on work we ended up with a pretty nifty game engine prototype. Its features included procedurally generated dungeons, UDP-based online networking (for co-op play), animated 3D backgrounds, and a sweet custom lighting engine. For various reasons, we stopped working on it and the game we planned on making fell to the wayside. We kept meaning to come back to it, but didn't really have the time to make it happen.

a screenshot of our original engine 

Now, years later, it's finally time to finish what we started.

plan
Although we spent a good amount of time on our original engine, it was a huge learning experience for both of us. We were both relatively new to game development and the code really showed it. As a result, we decided to scrap the original engine (mephisto.v1) and we're rewriting everything from scratch. Luckily, we're both much more experienced than we were before, and we've got some new, fresh ideas.

inspiration 
Diablo
Castlevania
Metroid
Roguelikes
Spelunky

planned features
Cooperative, fast-paced online play
Procedurally generated levels
Roguelike Elements

todo: 
s/codename\.mephisto/Actual Game Name/g

Saturday, August 31, 2013

The beginning!

This is the first post on the official NukeNine blog!

This is where we'll be posting development updates for our games, as well as articles related to game development in general.

This is an exciting time for NukeNine, hopefully this blog will capture our growth from humble beginnings to becoming a published indie game studio!