Second editor release   no comments

Posted at 3:28 pm in vKernel

Well, heres the second release of the editor and details on how it’s going.

Download here: vtool (3)

Didn’t manage to get as much work done in the editor as I wanted to (kind of a busy week), but I did manage to put in some details that I wanted. The opengl windows now resize themselves as the master window gets resized and I added an automatic resize button. It only works though when the number of windows is a perfect square: 1,4,9,16… Still trying to figure out how to handle the non square situations. I think i’ll do a drop down menu with several choices you can choose.

The top menu now is a rebar also. That means the user can position them as he wishes. I prefer that sort of design more than toolbars because users generally have their own work preferences.

My long term goal with this project is to have a very flexible editor where the user can edit in any way he feels comfortable with, and to achieve that it needs to be as customisable as possible. Ideally I see the user being able to have an environment with windows where he interacts with the “game world” in many ways. For example he can have one master window that sees the world on top where he can edit it, and two sub-windows where he can see on-sight how those changes are ocurring. If this system is robust enough he can change that to any way he wants.

I’m heading towards that sort of design because I think one of my flaws in designing both the Solis and World Train Royale editors is that they gave no artistic freedom for the user. I see artists messing around with Photoshop and they all have their preferences and designs they call their own, not Photoshop’s in itself.

By the way I still don’t know how to properly name this project. Anyone got any suggestions? Also I would like to get people’s feedback on the project. So if you were to use an FPS editor, what sort of features would you want to have in it?

Anyway I guess that’s it for now. My next goal is making the editor more interesting, so I’ll be adding level building next. Until then!

Written by J.Raza on July 27th, 2010

Tagged with , , , , , ,

Slow Agile Development   no comments

Posted at 10:15 pm in comparissons,programming,rambling

While riding the subway today I saw a man my age holding a book titled “Agile Software Development, Principles, Patterns and Practices“. This reminded me of a few opinions I had about software enginnering. I talked on a previous post that it’s important to take into consideratoin the final product that’s going to be developed in order to choose a proper software Engineering methodology.

Today I’d like to keep talking about that but focusing more on the technological nature of that which is being developed. Here’s a short story to better explain why:

While I was working on Conira, early on I decided just for the hell of it that this game would be multithreaded. Given my previous experience developing the Solis engine I saw that you could dissect the game engine into three threads.

  1. One that renders all the objects in the game, be it sprites, particles or models. This thread uses the ‘get’ methods each object had.
  2. Another that updates all the objects in the game, their displacement, acceleration, hit detection, etc. This thread uses the ‘set’  and ‘get’ methods each object had.
  3. One thread that takes care of loading/unloading objects and handling the Operating System calls like windows and messages.

Initially I thought this would be a good design. I elaborated on how the threads would communicate, tried to figure out and reduce potential deadlock /livelocks and set off to code!

It wasn’t but one day later that I had to redo the whole design.

You see there is a technical limitation when dealing with rendering systems, threads and the Win32 specification. MSDN clearly states that “the same thread that RENDERS the objects MUST be the same thread that CREATES the WINDOW and handles its OPERATING SYSTEM calls.” In other words, thread 1 and 2 had to be same. In the end it wasn’t a big alteration, meerely trivial given the design I had but it did bring me into re-thinking certain software engeneering practices people take for granted.

When I was in college I was basically told that “code development is a final product of a series of design decisions”. You figure out your system first, its classes, structures, layers and then the code you write is merely an extension of that. In other words, take the broad view of a project and as you develop it, handle the inner details and its intricancies as they come. But that type of methodology fails to work in development environments where those same inner details and intricancies are what actually defines the system as whole.

I think Agile Software advocates say the same thing but with different words. “Work on the code first, let the inner details of a system be delt as they come, so don’t worry about documentation, design, etc. Code, code and code!”. They also usually point cases where such methodologies worked. However they fail to point out the architecture of the system in which they developed. Most, if not all, of those success stories I heard were either web applications or with an interpreted language such as Java or C#.

Well it makes sense for those projects to work on those scenarios! They were built on top of languages where it is expected to delegate the inner details of a system to whomever is handling it. So all they have proven is that those agile methods work on those environments, which is ok, but not that agile methods work as a whole, which is what they usually advocate. Honestly, I’m yet to see an long run story of a sucessfull low level driver or high optmized high-level assembly language project using Agile methodologies.

Don’t get me wrong, I’m not saying that Agile methods suck or that they don’t work. They do and can work quite well but one must understand the context in which they work, or else failing into the trap of beliving that they work in any environment.

If one doesn’t take into consideration the end product as well as it’s internal architecture while taking enginnering decisions, he’ll end up eventually just making bad or lucky engineering.

Written by J.Raza on July 19th, 2010

Tagged with , , , , ,

New Project   no comments

Posted at 4:04 pm in vKernel

I have thus decided to start a new project. I’m aiming to do something 3D again, since my last project, Train Royale, was a 2D casual game. I’m gearing towards a 3D shooter for now, so lets see how it goes.

However I do intend to make things different this time. You see all my other projects I would only talk about them once they were done. This time though, I intend to talk openly about it through out it’s development.

It’s not that I like to keep things secret. It’s that I always worried about becoming something I usually criticized: talking more about a game than developing it, and in the end have tons of rambling about a never finished project.

But now I think I can go beyond that point since I at least proved to myself I can get a project done, regardless of how much I talk about it or not. So my intention with this new project is to do at least a weekly post about it, displaying how it’s current development is going. And it doesn’t matter how simple or stupid the project is going thus far, the point is talking about it. Don’t really know why, I guess I’m trying to make a social experiment out of this thing,  just to see what happens in the end.

Anyway here is a picture of how the “editor” is going.

To download:  vtool (3)

Basically I intend to do something where you can have multiple windows showing multipler things about whatever you’re editing. I’ll start focusing on that once I get the gist of the toolbars and rebars going.

Written by J.Raza on July 16th, 2010

Tagged with , , , , ,

Fan mail & Community development   no comments

Posted at 10:08 pm in game development,rambling

Few days ago I got fan mail from a game I developed, Solis.

The e-mail I got basically complemented the game, saying he liked the style but thought it had too much text hahah. Always good to get feedback from my projects.

Solis is sort of a special project to me. It was the first BIG project that I developed and every now and then I check how many downloads it managed to get (5000+ and counting). It`s not a big project and it ain`t no RPG Maker killer but it was a fun game to make.

With this game I learned 3 very important things:

  1. No matter how close you are to finishing a project you will only, and only after you finish it, be able to learn and truly take a critical perspective of it. This is the sort of thing you can’t really explain why. Basically you know why when it happens to you and after that you understand why it can’t really be explained.
  2. Different games take different amount of resources. Quite obvious, but it’s the sort of issue that gets commonly overlooked. Solis was a 2D rpg game, and with it came hundreds of sprites, tiles, images, maps, sounds… The list just kept getting bigger and bigger and I was soon to find that I needed an artist.
  3. Know your user base before doing the project. During halfway through developing the Solis tool set, I thought I had actually found a development niche. You see, people make RPG maker maps and images all the time, write tutorials about it, etc. But most of them use pirated versions of it. I thought an open source RPG maker would fill that need and actually be able to create a community out of it.
    Boy was I wrong heh. The RPG maker community is mostly of artists and script writers and since Solis was written in C++ that didn’t really appeal to them. Maybe if I kept investing into it I could have pulled that one off. But after such a long development process, I felt I wanted to do something else.

And I guess that`s it. There was one interesting side effect of developing this game though… and hasn’t faded yet:

I never managed to play a JRPG again. Ever. I finished Solis and could not stand looking at JRPG…. Pretty weird heh.

Written by J.Raza on July 14th, 2010

Tagged with , , ,

Shame   1 comment

Posted at 1:09 am in Uncategorized

Because my father was in the navy I lived all over the world. I grew up meeting hundreds of different people, different cultures, different habits. As a way to blend in, meet people and generally make friends in these conditions, it was video games that allowed me to have a common background with people.

I would go to a new school and usually the topic of games would come up. We talked, played it for hours and generally had a good time. Games have been my companions since early on and they served me as a way to become accustomed to the new place I found myself at.

Now, usually one thing that struck me is that people, no matter where I go, would generally have the same game preferences and the same emotions and experiences as they played the same games. I did to. Every gamer remembers the first time they played a Mario game, beat a Final Fantasy, saw Ryu’s haduken and so on. These are all common experiences we have and shared.

However there are a few that pretty much everyone I know has had except me. These are my video game moments of shame. So without further ado, here is the list :

  • I never finished Final Fantasy 6 nor Chronno Trigger. Only got half way in FF6 and to the final lavos battle in CT.
  • Never finished Street Fighter without using a continue or resorting to using a very easy level.
  • I never won a Stracraft  multiplayer match.
  • I cannot for the life of me beat a Heroes of Might and Magic 3 map. I always get my ass kicked.
  • Never killed a person in Counter Strike with an AWP. Ok, I hated using the weapon and everyone that used it, but still.
  • Never beat a Megaman game without save states.
  • I love all the point & click adventure games by Lucas Arts but I am still yet to play Grim Fandango.
  • It took me almost a decade, with the same save state on the NES cartridge, to beat Dragon Warrior. I played that game to death when I was 11, maxed out my character but got stuck in the story. When I was 21 I dusted of the cartridge, got a FAQ and finished the fucker.
  • I actually enjoyed playing Star Wars Shadows of the Empire.
  • I own a original copy of Daikatana. Didn’t buy it but I still managed to get  copy, for free at least.

I guess that’s it for now. Quite shame full. Triple face palm.

Written by J.Raza on July 7th, 2010

Tagged with ,

New Portal   no comments

Posted at 3:38 pm in Uncategorized

I’m proud to announce that the game I developed last year, World Train Royale, is being sold by anothe portal! It’s called Yawma.net

More sales, more money. More money, more hobbies.

Written by J.Raza on July 5th, 2010

Tagged with

Torment   no comments

Posted at 12:29 am in Uncategorized

Today I’m going to talk about a game you should have played but didn’t. I’m talking about Planescape:Torment

Why I’m talking about Torment? Simple because that’s one of the few games that changed things for me. I used to think RPGs where about running around, with a sword, slashing shit, being a hero, yatta yatta. I thought these elements were important to make a player engaged in the story, a feeling of greatness that would compel him to keep playing. I was wrong.

Planescape has none of that crap, it’s a game that is all about story. And what a story it is. I won’t say much about it so not to give away any spoilers, but Torment does something that’s just brilliant in my book, and does it well:

It ties the story with the gameplay.

You see there are moments of revelation on the story, be it background info on one of the characters, a special item or a place you visit that gives you  an actual choice on what to do. You can return that item if yo want, leave that character  or even go somewhere else.

The secret here is choice. You can take your own path in the games decisions. Sure it’s a linear path as the story progresses, but how you as a character progress in that linear path is up to you. And it makes all the difference in the world.

After playing this game I look back at games I admired like Final Fantasy and see that they’re nothing but child’s play when it comes to interaction. It’s a really good game, and I suggest anyone check it out.

Written by J.Raza on July 3rd, 2010

Tagged with ,

Sculptor and Mason   no comments

Posted at 4:58 am in Uncategorized

Ever since I read this book a long time ago, I’ve always enjoyed art history and it’s analysis. I like how art, specially painting and drawing is a form of craftsmanship, how one evolves with it in time. I do enjoy looking at great contemporary artist like

Anry Nemo

Daniel Lieske

As well as old wizards like Dali

and Caravaggio

One thing I find particular interesting is how clearly explicit is a GOOD artist from a good one. Sure we can go down the path of Picasso being top notch and a genius while not being the best painter in the world, but my focus right now is in skill.

You can see, an artist is good when he masters several techniques like body proportions, shading, lighting,  diffusion, blur, meaning, semantics, and so on. To me all the artist above mastered this and it’s clearly visible even to laymen their genius.

That’s a thing a I refer to as the difference between masons and sculptors. Both work with the same raw materials, sometimes even the same tools, but their product is what separates the Pieta from simply another wall.

A sculptor understands the material he works to a point of such mastery that there is no limitation to what he can construct, all he needs is just time and resources. A mason while he may be good at it and could even attempt such a feat, in the end he would never reach such level.

There is clearly a distinction between the two, but what causes it? This change, that makes a beginner that is once a mason become a sculptor? What is the road to mastery?

I ask myself this question because I often draw parallels in between art and software development. Because I could just as well ask the same questions:

What defines a master developer? How does one become a genius in software construction? What is the road to mastery?

It’s easy to discern a great artist from an average one, all we have to do is look at their work, but how could we do this with developers? I usually read this in forums or talk with colleges and it usually revolves around with –

A great developer:

  • Knows many languages
  • Knows difficult languages
  • Develops a lot
  • Develops for fun
  • Knows a lot about development
  • Read a bunch of books
  • Wrote a bunch of articles or even books
  • Develops big products
  • Never/rarely has bugs

And so on and so forth. Personally I think these criteria are fine but in the end, with them, you can’t discern a good mason from a sculptor. Knowing many languages doesn’t mean mastery of software construction, developing big products can be bottled down to trivial tasks such as mundane functions, lack of bugs can be either due to an easy to work environment or lack of new challenges.

My point is you can counter each one of those statements, thus failing to reach anywhere when trying to label an individual as a mason or a sculptor. What I believe is the way to go is something more along the lines of:

  • A mason, given time, is able to solve most if not all known problems.
  • An individual that is in between the two finds problems that haven’t been asked before.
  • A sculptor is able to answer them.

I say this mainly because of my reference of what I consider to be great sculptors and their history, guys like Carmack, Abrash, Sweeney, Bram Cohen and so on. These guys managed to find problems no one faced before, or if they did no one answered, and then managed to find a solution of their own.

They did this because they knew their developing languages, their work environment, the machine down to the bitwise, to the electrical signal, to its deepest mathematical roots.

That to me is mastery. These are great artists. These are software sculptors.

Written by J.Raza on July 2nd, 2010

Tagged with ,

It’s out!   no comments

Posted at 3:20 pm in Uncategorized

All right, got my copy of the Game Programming Gems 8 by mail today. Why is it special? Because one of the articles is mine! :D

Me and my good friend Peter Iliev wrote an article explaining how to retrieve the run-time stack via assembly and display it using the game’s GUI. I’ve been reading the other articles in the book and they are pretty good. I’ve read Game Programming Gems 1 and 5 and they’re also top notch, lots of good info in them.

I’m really proud to find myself among the authors.

Written by J.Raza on June 29th, 2010

Stencil Shadows   no comments

Posted at 10:10 pm in Uncategorized

Today I’m going to talk about a little side project I did this weekend: 2D Stencil shadows

You can grab a playable demo (windows only) to test and have fun here

I still remember playing Gish and liking it’s use of shadows in the game. When I heard the source code was released I decided to try and develop something similar, then compare mine code with Gish’s. Apparently, I was pretty close to the authors.

Try it out! Any feedback is recommended. Peace!

Written by J.Raza on June 15th, 2010

Tagged with