Wednesday, October 6, 2010

Star of Doom: A Basic Framework

For the past few weeks, I've been slaving away at Star of Doom, and now a basic framework is starting to come together. As the engine is completed, you'll start to see more content to replace the temporary models and maps.



The current models and animations are only temporary. This video demonstrates the ability to switch and use weapons, as well as obtain pickups.



This video shows the integration of a basic inventory system into conversations.

Monday, September 20, 2010

Computer Science Club Recap (9/20/2010)

That was an awesome meeting that we had today, guys! A lot of stuff got done. Before I forget, I just want to recap on everything that we discussed today.

Game Concepts
We started the meeting today by discussing some game concepts. I was originally going to do a presentation, but I found some recording that I made a while back that basically summarize what I was trying to talk about. I originally made these videos for some other group that I was in, but it applies perfectly for this situation. The videos basically explain some basic concepts that apply to every game. It's kinda boring, but you should still watch it. It's important.

Show Off
After that, I took a bit of time to show off my own projects, in order to demonstrate how the same concepts are applied even in much more complicated games. In addition, I discussed why all of the games we make will be coded from scratch. Remember, this is a computer science club, not a game making club, and the goal is to learn the fundamental concepts behind how something works. Games are an effective and fun way to do this.

Star of Doom:
http://www.youtube.com/watch?v=FWr9koi1YlM

Voxelvania:
http://www.youtube.com/watch?v=DgrLLN1YFXQ

Game in 5 Minutes
After that, I did something cool! Well... Not so much... Basically, I made a game in less than 5 minutes (Swaroop was timing). A really simple game, but an interactive one nonetheless. You basically just move a cube around the screen.


Prototypes
After that, we discussed some of our short term goals. Our eventual goal is to tackle that wizardry-esque RPG, with full battle and graphics etc. To start though, its best if we move in increments. At some point, I want to create a simple text based adventure games, because these can help to teach you many of the basics of programming. If you don't know what that is supposed to mean, I have a simple prototype that you can try.

http://dl.dropbox.com/u/2727127/HHSCSC/Prototypes/TextAdventure/game.html

Thursday, September 9, 2010

Star of Doom Progress!

I've made some considerable progress with Star of Doom! The basic framework is laid in place (1605 lines of C++!), and I've begun to setup a workflow for creating maps and other content. Take a look at this video of what I have so far:


Tuesday, August 31, 2010

Traveling Down Memory Lane

    So I've been missing for a few days. My mind has been drifting in and out of reality, adventuring into the deep recesses of my past. Basically, I've been playing a bunch of old games that I used to play as a little kid. I found a bunch of my old CD's, some in good condition, while others mostly battered up. Of these games, many were LEGO games. Most of the games were only average, but they symbolize something much more to me: the past.

LEGO Island 2: The Brickster's Revenge



    An adventure of epic proportions spanning multiple islands, interesting and varied characters, and a really cool story. What else did a game need? In my opinion, this game was a true LEGO game. It really matched the feeling of goofing around with LEGO sets, and making weird scenarios to thrust mini-figs into. Oh, and there was the skate park music.

LEGO Island Xtreme Stunts



    What do I remember about this game? Epic music. Just epic music. LEGO Island Xtreme Stunts was a fitting end to the series, sporting a bunch of cool mini-games in true LEGO Island fashion. I had a blast exploring the island and getting all of the collectibles.

Hot Wheels Stunt Track Challenge



    You know what race I remember from this game? This one. And I had an amazing flashback while playing Koopa Cape Mario Kart Wii. The game had awesome fast paced racing, as well as a bunch of mini-games to spice up the experience. I never actually beat this game, and I got stuck on the first challenge in the final area, but what I did play was a blast.

LEGO Stunt Rally



    Lego Stunt Rally wasn't exactly my favorite game, but one thing gave it the privilege of being on this list: the track creator. I have no idea how much of time I spent creating random tracks and racing on them. It was just amazingly fun! I also made countless attempts at going off the borders of the map, but I re-spawned each time.

LEGO Racers 2



    LEGO Racers 2 was a pretty awesome game. Although it bears little resemblance to the original other than the concept, it was still fun to play. My favorite part was exploring the several thematically distinct areas that the game had to offer. Multi-player was pretty awesome too.

LEGO Racers



    LEGO Racers was great! Just amazingly fun! The game had great artistic style, and left a lasting impression on me. What's great is the physics, which stick to what's fun, as opposed to what looks real. Multi-player was a blast to play with friends, and I loved leaving them in the dust with my amazing knowledge of the shortcuts! It's also noteworthy that this game is 11 years old, yet installs and runs without a hitch on my Vista Core i7.

Sonic Adventure DX



    Sonic Adventure DX is probably one of the best Sonic games that I have ever played (Shares the spot with Sonic Adventure 2 Battle). Someday, I'd like to play the original Dreamcast games. This game was probably one of the best games that I have ever played, and exemplified everything good about Sonic. It had cool music too! Multiple characters, fast paced game-play, great environments, and an awesome story all came together to create this work of art, which I still enjoy today.

Sunday, August 29, 2010

Star of Doom

     Ok. This is it. I'm going to finish this game. I've failed before, but this time, I can finish it. Watch out world! Here comes Star of Doom!


And development begins...


Using Ogitor to block out a basic map


NPC Conversations

Sunday, August 15, 2010

Voxel Terrain Engine Update

Just finished version 0.3 (Voxelvania) of the engine. This has a fully playable demo, with three maps and 1 player, 3 bot death-matches.



You can download the game here:
http://www.mediafire.com/?c1rj9jbtzxjddc9

Saturday, August 14, 2010

Voxel Terrain Engine

Over the past week, I've been working on a simple voxel terrain engine, just to amuse myself. This happens to be my first project using purely OpenGL for rendering (In the past, I've used DirectX, and a variety of rendering engines). The demo is pretty simple, and took me about 3 days to make.


The voxels are rendered by a brute force method with voxels that are not touching air being ignored. I'm planning on adding some kind of partitioning system along with lod, so that much larger maps can be rendered.


I'm considering making a simple shooter game around this, where the destruction of the environment is actually part of strategy.


More Info + Download Link: http://varunramesh.net/portfolio/right/VoxelEngine/


Saturday, August 7, 2010

Physics Selector Tool

I've just added a simple tool that allows you to define physics boundaries by tracing them out on an image. The saved .physics files are then loaded by a simple component.


In other news, the next major release of the engine should be ready in a few weeks, one the example game has matured a bit more.

Tuesday, August 3, 2010

Progress on Solaris Machinae

After about a week, I've made considerable progress with the engine.

1. Components
It's now much easier to attach a sprite to an object. Instead of having to setup a sprite, and updating and drawing it manually, you can just add a component with a single line of code. Less code = awesome. Components can be easily written and placed in the Engine\Components directory.

2. Denativization
I've started to perform the denativization, so now many of the helper functions are written in Lua, as opposed to in C++. This, obviously, makes it much easier to edit any of them.

3. Example Game
I've begun work on a example game (Solaris Machinae Tournament) which aims to showcase many of the features of the engine, as well as serve as a kind of template. It also doubles as a kind of method to identify weak points, and develop better tools and such.


Friday, July 23, 2010

Solaris Machinae Engine Goes Open Source

After quite a long break, I've decided to resume work on the Solaris Machinae Engine. Basically, there are a number of features that I want to add to the engine to make it more versatile and easy to use. I've also made the engine open source, so I can share the code much easier, and take advantage of project tools, such as google code.

Project link: http://code.google.com/p/solarismachinaeengine/

1. Adapt a component based architecture
By adding components, it will be easier to customize objects, and edit them. These components can provide a much simpler wrapper around the graphics and physics engines.

2. Allow the loading of maps and files from xml, not lua scripts
XML is a much more versatile format for defining objects, and fits in well with the component based architecture. It will also make it easier to "derive" objects, and basically only modify certain attributes about it.

3. Start to "de-nativize" code
I'm not sure what the actual term is, but I basically want to start moving most of the code for loading maps and objects into lua. This will allow for easier customization and faster development, seeing as everything doesn't need to be compiled as often.

4. Add audio
The engine, currently, has no audio module, which is pretty stupid, seeing as that's pretty important.

5. Add features to the map editor
In it's current state, the map editor can only be used to create extremely basic maps such as the one in the tech demo. There are a number of areas of improvement, such as a better GUI, a tile editor, object specific editing, etc.

Sunday, July 18, 2010

Mr. Cow in Flash

    After releasing Mr. Cow Part 1, I've decided to port the game to run in flash. This is partly because, to most people, downloading and installing a file is a pain. They prefer to have it embedded in a webpage. Also, in flash there is virtually no security concerns. I had never used flash before, so when I began, I really had no idea what to expect. After goofing around with FlashPunk for about an hour, I cam up with this small demo-like swf:

http://www.swfcabin.com/open/1279501352

    I was a bit surprised at how easy it was. Maybe not easier than pygame, but simple and intuitive nonetheless. I recently just finished porting the entire game part. I just need to finish doing the menus and stuff.

Friday, July 16, 2010

Mr. Cow Part 1

In about a day and a half, me, Nick Safford, and Randy Brookins made a game!
This small project was really more of an experiment, to learn about stuff, and get hands on experience. Using Python and pygame, we designed and created an game, which is intended to be the first in a trilogy.

You can download the game to try out here (Windows only, Mac to come soon):
http://www.mediafire.com/?woa1qgrpa3h2jke

Screens:


Monday, July 12, 2010

Brief History of Star of Doom

Star of Doom is an idea. It is a concept. It is a universe.
A lot of Star of Doom can summed up in the following extremely annoying song:



Anyone who played the second iteration of Star of Doom knows it well. But what is Star of Doom. It is a planned game. One that was never completed. It has gone through many iterations, yet always been too ambitious to survive. Star of Doom is my goal. Actually, the truth is that it was originally called Legend of the Fire Star. Star of Doom just sounded better.

First Iteration

Back when I was in sixth grade (2006), I had just failed at my fist attempt at creating a game when I first conceived Star of Doom. I began by planning out the characters and settings, imagining a whole galaxy filled with planers and stars, and nebulae and all kinds of alien life forms with rich histories and backgrounds. It was months later that I naively tried to actually make this a reality. After almost a month of coding using my own custom built DirectDraw game engine, the Cow Moostache 2D game engine, I had accomplished very little. I had a menu, a first cut-scene, and the beginning of a first area. At this point, my artist, Nick Safford, had to leave the project. Stranded, and not making much progress, I decided to abandon it for the time being. Failure Excuse: Lack of Experience.



Second Iteration

The second iteration was the first 3D attempt at Star of Doom created using the Irrlicht3D engine. It was also not only the most popular among my friends, but also the farthest of any attempt. I started this attempt towards the end of 6th grade, I believe. This attempt featured a full fledged RPG system with items, conversations, a pause menu, and so on. Well, you might ask what stopped me from finishing. Well... After a while, I begin to have massive code organization problems. It was simply too much to work with. My application started to break down bit by bit, and I was unable to isolate any of the causes of the problems. Failure Excuse: Lack of Organization





Third Iteration

I started this version around 7th grade The third iteration was similar to the second, but far more graphically intensive. This was due mainly to a switch over to the Ogre3D engine. I now had access to shaders, post processing, shadows, and much more. I could even have day and night cycles. It was during this iteration that I started a blog for the project: http://starofdoom.blogspot.com/. I began to work on more advanced effects such as water, terrain, and much more. This iteration somehow just dissipated, and I'm not even sure why. It was more of a lack of motivation, due to school, and homework and stuff. Failure Excuse: Lack of Motivation / Too Much Stress






Fourth Iteration

The fourth and most recent Iteration was spawned out of a desire to fully realize the dream of Star of Doom. Imagine if you could explore spherical planets in a dynamic universe, and travel to other planets and back, without any seams. Yeah. That would be awesome right. The video below shows as far as I got. Remember to watch the entire thing, otherwise the sense of scale doesn't hit you. In the video, I fly off the planet, and hyperdrive away to the black hole. I screw around there for a while, then turn back to face the planet. You see the planet as a tiny little speck orbiting its star. Even the star is not static. It orbits the black hole at massive speeds. Failure Excuse: Overly Ambitious.





Saturday, July 10, 2010

Effects Videos

I was bored, so I decided to put together a compilation of random fx stuff that I've done in the past.


















Saturday, July 3, 2010

Website!

I recently registered a domain for myself: varunramesh.net.

There's currently nothing there, so typing it in wont do anything. I did, however, set up a page for my science project: http://varunramesh.net/portfolio/right/ScienceProject2010/index.html. It includes a description, a video, a list of awards won, and downloads for the report and the source code.

Also, http://varunramesh.net/blog just redirects here

Wednesday, June 30, 2010

My House Is Like an I SPY Book

Let's play I SPY!

THE DESK

I spy a Pokemon Soul Silver DS game,
As well as a book on Robert Burn's fame.
I can also see an HTC MyTouch 3G,
Opposite to an Intel Laser Pointer Box that I got for free.
I spy a Bogle Junior High notebook,
and a Windows dialog that popped up while browsing Facebook.


THE PIANO


I spy a $400 carbon fiber bow,
Collecting dust on a wood floor.
I spy an amp for an electric guitar,
and an electric tuner that isn't too far.

BENEATH THE TV

I spy a Nintendo Wii,
Next to a game containing Metroid Prime 3.
I can see Harry Potter and the Goblet of Fire,
But I can't tell which is the sensor bar wire.
But in order to test your true "I SPY" finesse,
Can you tell me which GBA game is in my DS.


Wow. I need to clean this mess up...

Monday, June 28, 2010

Certamen (Python-Ogre Test)

Last week, I made this random game to test out the latest version of python-ogre. It's a tower defense style game, where the goal is to destroy the water elemental.

Binary: http://www.mediafire.com/?dtlkyymnn2m

Source: http://www.mediafire.com/?jnynnnmdm1y
(Needs Python 2.6 and python-ogre)

6 stages and a tutorial

2 possible unit types to build

The game can get complex really fast

The inspiration for this game came from the UFEC entry Lord of the Elementals.

Sunday, April 11, 2010

One Language. Multiple Platforms. Awesome.

Whilst wandering through the bowels of the vast jungle of the internet, I stumbled across something cool. It is called haXe. haXe is yet another programming language (you'd think we have enough of those), but there is one small thing that sets haXe apart from anything else that I've seen. The website claims that haXe is a multi-platform language. Let me explain what they mean by that.


Here's the magic of haXe. The haXe compiler (written in OCaml) actually has various back ends. Each of these back ends is able to translate any standard haXe program into another language where it can be compiled. This means that almost any haXe program that you write can not only target a browser, but be embedded as a .swf, run server side, or even compile to native C++ code. That's crazy. Because haXe is Object Oriented, you can use full object oriented features, and standard class definitions to create oo programs in languages with nonstandard oo features.

haXe has already been used for iPhone development, and a Java back end ins in production for writing Android apps. Man, I can't wait.

Actually, through use of the neash library, you can use a standard graphics library for th iPhone, desktop, and flash. Now that is even more crazy. If you are interested in multi platform application development, then haXe is definitely something to check out.

Now, you might respond: "Who cares?".
The answer: mobile and web application developers.

The problem that has plagued many developers for years is deployment. They want the maximum people possible to be able to use their product. The wanted a single unified way to create applications inside web browsers. They could attempt to embed a native application, but there is a problem. Any native application will have to be recompiled for every platform that it will be distributed on. This is a hassle, especially if you cannot anticipate the computers of your users. For this reason, various platforms were developed including JavaScript, flash, Java, and various other solutions.

But the problem is still relevant today. Suppose you are a mobile game developer. You want to develop a game for a bunch of platforms. You want to be able to reach iPhone users, Android users, Blackberry users, enV users, Window Mobile users, etc. Normally, this would require you to learn Objective-C, Java, C++, as well as learn the SDK's for each device. Now, however, there is an easy solution.

Meet the Airplay SDK
http://www.airplaysdk.com/


Airplay allows developers to use a single unified application SDK to develop their applications. Then using a single click, application can be deployed to numerous platforms. This saves time, work, and effort, and greatly increases your target audience size.

Saturday, March 20, 2010

Valve and Level Design

The designers at Valve are the supreme rulers of the realm of level design. Virtually every single game that Valve makes boasts superior artistry and craftiness. They truly are masters of their art.

My question is: "How on Earth do they do it?"

Turns out Valve is awesome enough to tell us.

Just check out the Valve Level Design Wiki for Source Mods: http://developer.valvesoftware.com/wiki/Half-Life_2_Level_Creation. It's a priceless resource. Did I mention Valve is awesome!

http://developer.valvesoftware.com/wiki/Single-Player_Mapping_Tips
Single player mapping tips! That's gold!

http://developer.valvesoftware.com/wiki/Bounce_(level_design)
http://developer.valvesoftware.com/wiki/Adding_More_Detail_to_a_map
http://developer.valvesoftware.com/wiki/Loops_(level_design)
http://developer.valvesoftware.com/wiki/Push_Gameplay

All stuff that is definitely worth taking into consideration when creating a map.

Saturday, January 30, 2010

Video Games as an Art Form

Video games are a form of fine art, where emotions are expressed through multiple mediums. Rather than simply presenting the user with events and allowing them to interpret it by themselves, video games make the user feel as if they are experiencing the world for themselves. In this way, players have a much stronger connection with their environment. But, like every art form, ther are many different elements that come together in the final product.

First and foremost is the story. The story is such a key element because it is what motivates the player to actually play the game. The story is what pulls the user into your fictional world and drives the action of the game forward. The story is what unifies all of the elements under a single purpose. Just as in a book, the story of a video game has a distinct plot. Some games gently ease in the conflict, while others throw you straight into the action. A satisfying story will, in the end, resolve the conflict. An example of a game with great storytelling is Half-Life. Half-Life told the entire story from a first person perspective in a seamless manner. You always have full control of Gordon Freeman, and the story flows smoothly without any discontinuities. Another game with superb storytelling is The Legend of Zelda: Ocarina of Time. This story involved complex myths about gods and demons, and a struggle for an artifact of ultimate power. It really sucks you into the fantasy world.


Half-Life


Another key element is the design of a game. These are reoccurring elements that the player will eventually gets used to. This involves controls, camera and movement schemes, power ups, health, etc. These are important because they effect the feel of the game. Game with terrible cameras and controls, such as superman 64 will seem very akward and not be fun. The design should also compliment the art style. For example, it is unsuitable to have hovering rotating hearts as health pickups in a modern tactical shooter. Just as it is unsuitible to have tactical shooter elements in a cartoon like game. People should also feel like they have natural movement of their character. Super Mario 64 introduced an innovative new 3rd person camera which was intuitive to use. The Legend of Zelda: Ocarina of Time has outstanding game design, with a perfect cartoony, yet dark style that was easy to use and understand.

Super Mario 64

Finally, we come to the presentation of the game. This category in itself has multiple topics, which I will discuss. First, there is the sound. Great music and great sound effects make a good game ten times better. Music can help establish the mood and ambience, while sound is another way to provide sensory feedback to the player. An example of a game with great mood establishing music is The Legend of Zelda: Ocarina of Time. Presentation also includes visual art. This is independant of processing power. Art is how a level stands out. It determines if it's just another kids drawing or a masterfully crafted sculpture, or painting. Art gives a level it's theme and feel, as well as compliments the story. Once again, I will bring up Ocarina of Time as an example. Metroid Prime also has amazing art. Finally, presentation also includes graphicall effects. Combined with good art, this is an indispensable tool for bringing the player into your world. An example of a game with graphics effects is Crysis.

Crysis

Sunday, January 17, 2010

id software

Only one company can claim to have truly ridden the whole ride: id software. From 1988, till the present day, id software has been at the head of gaming, setting numerous industry technical standards.

Commander Keen:
We begin with Commander Keen, id software's first revolutionary game:


This game pioneered the use of smooth side scrolling on a PC. It was also the first to use an advanced graphics card.


Wolfenstein 3D:
Wolfenstein 3D is the grandfather of the entire FPS genre. With this game, id singlehandedly paved the path for generations to come. There's a reason why literally every FPS since then featured Nazi's as the enemy. In the technical area, Wolfenstein 3D pioneered smooth scrolling, pseudo 3D, ray casting. Unlike many games at the time, Wolfenstein 3D could run on virtually any computer without graphics enhancements.




Doom (id tech 1):
All right... You knew this was coming. Meet Doom, the first game using the id tech engine. Ever heard of it? It's only like one of the most used game engines of all time! Doom set numerous graphics standards, with it's use of high quality textures, and atmospheric lighting.



But Doom gave us one thing that we will never forget. BSP: Binary space partitioning. BSP is used in every freaking engine today. The Source engine, Unreal engine, Torque, Cryengine, you name it. It is the single most common method used for geometry, due to it's super fast rendering and collision detection. Thank you Doom!

Quake:
What is Quake? Quake is the difference between Wolfenstein 3D and Halo. Quake is the modern FPS. Improving on id tech 1, the quake engine gave us total ultimate pownage! Oh my god, you can look up and down! Oh my god, I can play death matches against people all over the world! Oh my god, it's a light map! Quake is awesome.



Quake 2 (id tech 2):
Now, we see the next iteration of id tech! Quake 2 supported hardware accelerated rendering, as well as sported multiple networking enhancements.








Quake 3 Arena (id tech 3):
Oh yes... Id tech 3. This is engine is probably the most popular of the id tech series, being used in 100's of games, including the almost as famous Call of Duty. Quake 3 boasted superior networking, fast paced game play, high resolution textures, and even some shader support.




Doom 3 (id tech 4):
Now, most of the previous title look kind of lame compared to modern standards. But Doom 3 set the bar so high, that it still has yet to be broken. Doom 3 gave us modern graphics, complete with shadow mapping, advanced lighting effects, and numerous other technical improvements. Doom completely revolutionized how we create stunning effects, pioneering the use of various optimization and shader techniques to produce amazing results. Id tech 4 has been used in numerous game including Quake 4, Enemy territory Quake wars, and many of the more recent Call of Duty games.




Rage/Doom4 (id tech 5)
Id tech 5 is id's upcoming engine, and it is expected to continue the amazing trend that id has established.




Cousins of id tech:
Many games have utilized id tech, or use a modified version of it:




Half Life (GoldSrc)



Call of Duty



Medal of Honor Allied Assault


Jedi Academy



Prey