Block-Platform puzzler

Have a new project? Or maybe an old one and your looking for new teammates.

Block-Platform puzzler

Postby japtar10101 » Wed Apr 29, 2009 10:41 pm

I think I left a lot of hints on this idea. I wanted to make a surrealistic block-based puzzler, originally inspired by this Rene Magritte artwork (warning: nude body included):
http://imagecache2.allposters.com/image ... LC5041.jpg

Outline:
The game is supposed to be a 3-D platformer starring a female humanoid robot with detachable hands/gloves (more on that later). Whereas most block-based games limits the number of blocks to those provided, the protagonist in this game can create an "infinite" number of blocks spontaneously. Different hands (or gloves) creates different sort of blocks. The first hands creates a standard block where each face's texture is a copy & paste of the background, similar to the one portrayed in Magritte's artwork. I was also considering a "Santa's hands" which allows you to generate a transparent present box that can carry small objects.

The goal on each level is to make it to the end of the level, indicated by a large, elaborate door.

Story:
I have none :) . Just kidding, but it's still a very bad one. I originally intend the game to be about experience than complexity, so bear with me:

They game begins with the protagonist waking up in a flower field, mute and amnesiac (I know, stereotypical). The first few courses she'll travel are all dream-like landscapes, but as she progresses further, each course starts hinting aged, artificial parts (example: a part of the sky has a tear in it, revealing it's just a wallpaper). The last level is factory level I'm dubbing as "Android's Hell" (I think it's copyrighted, so I'll need a better name soon). In the factory, a few news clips reveal that robots with ability to create things spontaneously are against the law of nature, and must be destroyed. Naturally, the protagonist escapes from the dreaded destruction, but when she opens the level's exit, finds herself standing on a rusted, abandoned oil extractor in the oceans.

I believe the levels should portray the story, using sing sign posts and such only as clues to the big picture. The story and the levels doesn't have to make sense, but it should still leave an odd impression to the player.

Art:
Again, I want this to be a surreal game. I LOVED how Tim Schafer portrayed the "MIlkman's Conspiracy" in Psychonauts ( http://www.youtube.com/watch?v=OF7aIWxfgnA -> spoilers!), and wish to convey the same, eary feeling in this game as well. Unlike Psychonauts, though, I'd rather have the environment (mostly) devoid of intelligent life, and instead have the levels speak for itself.

Some level ideas I had:
1) flower field and curtains, similar to Mother 3
2) Gigantic Christmas tree, put sideways
3) MC Escher's Relativity, except each door leads to a coliseum
4) Life-size Jenga in a tall library
5) Android's Hell. This is supposed to be the last level, and also the only one that seems realistic. It's a garbage disposal where decapitated clones of the protagonist are thrown in a furnace. Since the protagonist is a robot anyways, the whole level should look mechanical and tainted red for mood.
Note: I'll expand this section once I get my scanner acting up.
Also, I have no experience with 3-D modeling and animation, so any help with that is greatly appreciated.

Music:
Embarrassingly enough, I still like Pachebel's Canon D. It'll be great and disorienting if the majority of the courses were filled with soothing music like Canon D. Of course, parts like the coliseum and Android's Hell should have battle music and stuff, but otherwise, mostly calm music.

Gameplay:
The game will be portrayed in 3rd person. The player's motion will be controlled with WASD or directional pad, while the camera with the mouse.
Basic actions are:
1) Make block/Lift already-generated block
2) Throw block (aiming with mouse)
3) Cancel block /Destroy block. This can be utilized either when facing one, or holding one.
4) Jump
5) Read signpost/interact with NPC
This will be similar to Pikmin's controls, although the camera part may have to be tweaked.

I'm debating about adding push block, but that may end up more confusing to implement.

Risk:
On the programming side, It should be pretty obvious from the description that the game is incredibly memory intensive, and demands a lot of physics calculations (blocks can be stacked on top of each other). Additionally, 3-D games tends to be extremely time-consuming.

Tools:
For programming:
I use Linux. Usually, this spells trouble to Windows users. Fortunately, most of the tools I'm using are going to be Visual Studio compatible. Language will be C++.
For graphics, I plan to use Ogre3D. The downloads page has an installer for Visual Studio, so that should be taken care of.
For physics, I decided to drop ODE, in favor of Bullet. The library contains a Visual Studio 7 solution, which is troubling.
For controls, I'm using the Ogre-dependent OIS.
I'm still searching for a sound library. May consider OpenAL.
I also plan to use CMake, which generates Visual Studio project files for Windows, and Makefiles for linux.
And for project sharing, I'm using Git with ssh. It's pretty complicated to use, and I apologize for selecting such a confusing version controller, but one feature it does nicely is branches. The repo is currently private (non-sharing), but I'll make it available to you guys as soon as I've got the CMake files cooperating.

For Art:
I prefer using GIMP and Blender, because I'm penniless. I can already sense outrages going on, though....so, "Photoshop and Maya."
On the Programming perspective, though, You have to export the files to make it compatible with the code. As such, you'll need to install the Ogre Exporter tools for your 3-D models.
For 2D images, while I don't mind downlading PSD files, I won't be able to open them. As such, we need those files exported to PNGs as well (this may be subjected to change).

For Music:
Unless there's a need to change, I prefer OGG or FLAC. My decision is validated here, though: OGG (lossy) sounds better than MP3 with the same file size, and FLAC (loss-less) compresses better than WAV.

I'm planning to get started once summer strikes, and work on it incrementally. I mostly want to get the physics and graphics solid first, so a lot of time will end up just learning to program with Ogre (graphics) and Bullet (physics).
Last edited by japtar10101 on Wed Jul 22, 2009 8:10 pm, edited 4 times in total.
User avatar
japtar10101
 
Posts: 54
Joined: Thu Mar 26, 2009 12:57 pm
Location: Home

Re: Block-Platform puzzler

Postby japtar10101 » Sun May 03, 2009 7:08 am

Scanned a few concept art I made for this game, proving once again I suck at drawing.

Protagonist. I based it off of Curly Braces from Cave Story....and I deeply regret it. It's too fanboy-ish. There has to be something I can do to add style.
Image

Concept of the first level, to demonstrate the stacks of boxes as part of the puzzle. I recognize what a tedious task that would be, so in the real game, that'll end up much smaller than drawn here.
Image

I have no sense in music, but these examples seems to be what I'm aiming for:
Sunken Suite from the famed djpretzel of Ocremix.org fame. A remix of Super Mario 64's Dire dire docks.
Home, Sweet Home from Beyond Good & Evil. Composed by the Canadian Christophe Héral.
And while it's more quirky than soothing, I really like The Wonderful Star Walk is Wonderful from Katamari Damacy; composed by Yuri Misumi.
User avatar
japtar10101
 
Posts: 54
Joined: Thu Mar 26, 2009 12:57 pm
Location: Home

Re: Block-Platform puzzler

Postby Nonsensoleum » Mon May 04, 2009 3:09 am

japtar10101 wrote:Protagonist. I based it off of Curly Braces from Cave Story....and I deeply regret it. It's too fanboy-ish. There has to be something I can do to add style.


It really doesn't look anything like her to me. And robot ears like that are by no means exclusive to Cave Story.
My Portfolio. [Warning, contains delicious cake.]
User avatar
Nonsensoleum
 
Posts: 27
Joined: Thu Mar 26, 2009 1:21 pm
Location: the land of milk and honey prepackaged candy on sale now for six payments of 1.99!

Re: Block-Platform puzzler

Postby japtar10101 » Tue May 05, 2009 12:10 pm

Nonsensoleum wrote:
japtar10101 wrote:Protagonist. I based it off of Curly Braces from Cave Story....and I deeply regret it. It's too fanboy-ish. There has to be something I can do to add style.


It really doesn't look anything like her to me. And robot ears like that are by no means exclusive to Cave Story.

Thanks, but I still feel that it's stereotypical. I largely prefer iconic characters like Mario, Vault Boy, Black Mage, and the like. I guess I'm aiming too high, though, when I don't even have the level designs or the game engine down.
User avatar
japtar10101
 
Posts: 54
Joined: Thu Mar 26, 2009 12:57 pm
Location: Home

Re: Block-Platform puzzler

Postby japtar10101 » Sun Jun 14, 2009 7:23 pm

So, I finally finished my website (at least to a point of satisfaction), and going to start moving on to this project. I see programming as a major hurdle, but also, the 3-D modeling part. I have no experience with maya or blender, so I was going to ask if there was a good resource to research on this.

I'm also not a music composer, either, but that's right now my least concern :P.
User avatar
japtar10101
 
Posts: 54
Joined: Thu Mar 26, 2009 12:57 pm
Location: Home

Re: Block-Platform puzzler

Postby japtar10101 » Wed Jul 22, 2009 7:59 pm

A month and 8 days later, I'm still struggling with making a simple black window appear in Ogre v1.6.2. Programmers with Linux axperience, any idea why I get the following warning and error message after running the code posted below?

Edit: Nevermind, It was a Gentoo problem :P

Code:
Code: Select all
#include "ExampleApplication.h"

// Declare a subclass of the ExampleFrameListener class
class MyListener : public ExampleFrameListener
{
public:
    MyListener(RenderWindow* win, Camera* cam) : ExampleFrameListener(win, cam)
    {
    }

    bool frameStarted(const FrameEvent& evt)
    {
        return ExampleFrameListener::frameStarted(evt);       
    }

    bool frameEnded(const FrameEvent& evt)
    {
        return ExampleFrameListener::frameEnded(evt);       
    }
};

// Declare a subclass of the ExampleApplication class
class SampleApp : public ExampleApplication
{
public:
   SampleApp()
   {
   }

protected:
   // Define what is in the scene
   void createScene(void)
   {
       // put your scene creation in here
   }
 
   // Create new frame listener
   void createFrameListener(void)
   {
       mFrameListener = new MyListener(mWindow, mCamera);
       mRoot->addFrameListener(mFrameListener);
   }
};

#ifdef __cplusplus
extern "C" {
#endif

int main(int argc, char **argv)
{
    // Instantiate our subclass
    SampleApp myApp;

    try {
        // ExampleApplication provides a go method, which starts the rendering.
        myApp.go();
    }
    catch (Ogre::Exception& e) {
        std::cerr << "Exception:\n";
        std::cerr << e.getFullDescription().c_str() << "\n";
        return 1;
    }

return 0;
}

#ifdef __cplusplus
}
#endif


Makefile:
Code: Select all
DEFINES =
LIBS = OGRE OIS
CXX = g++
CXXFLAGS = $(shell pkg-config --cflags $(LIBS)) $(DEFINES)
LD = g++
LDFLAGS = $(shell pkg-config --libs $(LIBS))

all:
   $(CXX) $(CXXFLAGS) $(LDFLAGS) -o SampleApp SampleApp.cpp

clean:
   rm -f SampleApp
User avatar
japtar10101
 
Posts: 54
Joined: Thu Mar 26, 2009 12:57 pm
Location: Home


Return to Ideas

Who is online

Users browsing this forum: No registered users and 1 guest

cron