June 23, 2009

Project Analysis

Programmers are engineers. Sure we may not get a fancy ring, but we’re still engineers. Ask any programmer who’s ever had to build an application from the ground up. The problems, the tools, even the location, while different are all still present. We’re engineers alright, but instead of working in the physical world, we’re the next step. We work in the virtual. We build and design, we tweak and reinforce the current structure of the web. We envision the next iteration of things, and we make it happen. We’re engineers alright. But of a different variety.

And as engineers we have certain choices to make when developing our applications. Do we go with the more used proprietary tools? Do we build our own? Maybe we utilize free applications? Or maybe we hire the job out. All viable choices, but to a real engineer, only one is fun. Building our own. Whether on proprietary architechture or on open source languages, we have the most fun when faced with the monumental task of building something from scratch. And we do it. We do it because it’s fun and becuase we have to. But how we do it varies from person to person.

A big part of that is based on our experience as developers. When I first began my forays into development, I thought developing an application was simple. You sit down for a few days straight and work it out. Then you’re done and you move on to the next project. I wasn’t far off from the truth. I was a little misguided, but I had the essenence of the project right. I was just putting the focus on the wrong portion of it. Development happens in two places, first is the planning, then is the actual implementation. The planning part is what a lot of new developers have problems coming to terms with. They don’t want to sit down and write out a book outlining what they’re going to do. It’s all in their heads. They know what’s going to happen and they try and make it so.

And that’s why new programmers rarely finish their projects. They get so bogged up with everything that’s going on in a project that they can’t focus on any one aspect. Soon it becomes too much for them. That’s why we have so many different methods of doing things. That’s why planning your project is such a big deal. It gives you focus, an outline. It is something that they never teach you in school, because in school, your professors do that for you. They think out the assignment and tell you exactly how your end product will function. And depending on how well you stick to their guidelines, you get appropriately graded.

Before starting any project, a developer needs to sit down and think. Spend a few days thinking. Think and shower. Think before you sleep. For me, before I embark on a particularily straining project, I sit and think. I spend a lot of time thinking about what exactly I’ll be doing. I spend a lot of time envisioning the end product. How will it work? How will it look? What happens if I press Button X? These questions are important. They help you define a clear path to your goal. And this is what you need.

If possible do a mind map. Examine all the features that you would like your application to have and figure out what they do. Don’t think too much on how you will accomplish it, just focus on what you want the end result to be. Make a list of things that your project should be. These are essential. Treat these as your milestones to development completion. Every time you’ve finished one of these, you’re getting slightly closer to your goal.

*A Note To Project Managers*
Stay away from weightings. If you weight the tasks, they instantly become skewed. Each task is equally important and, most likely, dependent on the last. Programming rarely allows for completely separate elements. They must all be connected and treating them as separate elements just shows that you’re not quite up to the task.

Some important questions to ask while in this analysis phase are things like

  • What will the interface look like?
  • Does it make sense?
  • What are the benefits of working on this project? What are the downfalls?
  • What types of features will be required?

Notice the questions asked relate more to the whole project itself that to development. This is key. If we focus too much on the development without having an idea of where we are trying to take it we end up side tracked. We end up implementing too much that we probably wont use.

Don’t think this is just for programmers. The idea of project analysis is something that can help everyone. Building a new deck? Figure out what you want it to look like before yo blindly start working. Painting your house? Figure out what color. Building a framework for User Management? Figure out what a user is and what they can do. Writing a book on the intricacies of the Onomatopoeia? What is the overall tone of the book? Amusing? Angry? Superior?

Applying this idea of analysis to all your tasks and projects go a long way towards helping create an idea for what you want to achieve. And quantifying that idea into tasks makes it so much more achievable.

June 14, 2009

Beta Launch Nearning

As I near the official beta release of Rising Legends, I decided to take some time off from programming and focus on the design and balancing that is so critical to games. Often times you’ll find classes that are just too powerful, or stat dependencies that don’t really make any sense, but these traps can be avoided. I decided that taking some time off from programming would give me a chance to plan things out a little more.

I’ve been working on a design document that outlines the game as I finish things up. It’s slow going, but every time I finish a small section of it, I get almost the same thrill as finishing the same section programmatically. I guess I know that when this piece is completely done, I’ll have a much easier time finishing up the beta release and porting everything over from the bland black/white layout to something that is much for fitting for an RPG.

From the beginning I wanted browser-based games to contain features that make other MMO’s so easy to get in to. Not as much page refreshes, modular windows, beautiful graphics and proper fight timers are just some of the things I opted to include in Rising Legends. As well, I worked a long time on the UI, ensuring ease of use, so first time players can just jump right now. From the programming side of view, I had to take some time out to implement my own version of the JQuery Tools tooltip and overlay libraries to ensure speedy load times. While JQuery Tools provides some great animations, I found that not only were they too flashy, but they lagged. The more tabs you had open, the slower it went. While my interpretation of it isn’t nearly as flashy, it cuts down on a lot of the code cutting out about 6KB of things that I didn’t need. While 6KB doesn’t seem like a lot, since network speeds are now our bottleneck instead of processing power, it will start to add up as more players join up.

I figure I will add a brief explanation of a basic version of the overly code, since it is an interesting topic and very easy to implement. As well, it allows for perfect positioning of elements.

In closing, I just wanted to link you all to an in-dev version of the UI that will be pushed out with the beta release: http://boba.feethavebeen.com/template1/

June 13, 2009

Rising Legends

Wow, it’s been quite a while since the last post, but at here’s a rather large update for everyone. I’ve been working on a new browser-based rpg called Rising Legends. At the moment it’s just be developing and designing everything with some testing from some good friends. Currently I’m looking to hit a beta release within the next week or so.

Basically it has the semblance of your run-of-the-mill RPG (ala stratholm, legend arena, soul knights) but with a few major differences. From a development/design point of view, these games approach the browser as a means to deliver their game to the public. Most times these games were written by great programmers, but many years ago. Rising Legends is looking to make a solid push into the browser-OS world. More and more nowdays, we find ourselves online for everything, and as browsers are getting more powerful, it’s time for Rising Legends to use some of the power available to it.

Also well from a game-design point of view, I’ve taken a few liberties with the stats and how things work. You’ll find that your stats have a lot more say in how you play the game. Variable stat item generation will be implemented by beta as well as luck-based drops of varying degrees.

Here are some of the larger features slated for the beta release:

  • Class system: Upon reaching a certain level, players are granted the ability to choose a class for their character to follow. It will greatly impact your stats as well as what weaponry/armor will be available to you.
  • Auto-Fight: Rather than continually clicking the “fight” button, you click it once and the battle plays out in front of you. Your agility affecting how quickly the battle unfolds. Higher agility means more monster fights in a shorter amount of time
  • Modular Window UI: Forget multiple page refreshes. Rising Legends utilizes a modular window approach similar to standard MMO’s.
  • Standard RPG Elements: I’ve decided not to change the game too much, and instead to stick with some standard RPG elements to make the game a little more familiar and easy to pick up for new-comers.

We’re still fast approaching that beta release, with only a handful of players. We’re doing load tests on the server daily to make sure that despite all the updates we roll out, you still get the best performce we can afford.

The alpha release can be accessed at http://boba.feethavebeen.com. I could post screens, but at this stage it looks rather ugly. The official UI for the game is still being worked out and will probably take a few more days before it’s all ready. At which time we should be ready for a beta launch.

If you get  a chance, hop in and register!