LD21 August 19–22, 2011

Compoing

Been doing these a few times but never posted about it here!  Maybe that’s why I’ve failed.  Not this time, hopefully!

I’m running Python with Pyglet.  So far I’ve got my idea down and work is going unusually smooth.

Here’s what I have so far, I haven’t yet completely nailed the mechanics but it’s going to be something.

Yeah, it’s ugly.  Art comes tomorrow/later today if I have time after work.

Design!

Coollioo, so basically I suck at programming and can’t figure out how to limit the rotation in Unity…

Soo I moved onto design, drew a crappy maze/ labyrinth / will look up the different definitions later , now to draw over it and 3D model a maze ^^

Tags: ld48

New Concept!

I had a new idea for the game! and has been renamed “Escape from nothing”, the player is an atom, in the nothing before the universe, and has to adventure to find another atom to smash into to create a universe!

Breakfast!

Making progress with the effects, but now it’s time for Absinthe :)

Meet Spiff

Hi everybody…

meet Spiff, the hero of my little adventure:

 

hooray programmer art 😀

Comments

pubby8
20. Aug 2011 · 11:12 UTC
One very small step for man.

Lunch, collision detection done.

Okay, time to eat. The collisions are detected and I need to code the response (make the ball bounce).

Collision detection !


Meal :P

Oh no they are armed with….flashlights :o

11 Hours in i must say i am starting to feel really good about this LD48, my lighting effects are behaving themselves quite nicely and i now have patrolling guards around the area armed with flash lights (which thankfully didn’t break the resource bank), with all the major parts of the game in place i am hoping to have this finished by this time tomorrow.

 

Hope you are all having as much fun as i am, PS check out the current version here!

 

Goodnight all!

First Screenshot

The game is coming along quite nicely. So far, I have implemented collision detection, an inventory/equipment system, basic AI, and a very basic level editor.

The idea is basically a strategic escape game where you use your two rovers to solve puzzles and perform battle tactics.

Ah, crud. I’ve Gotta Declare this One, Don’t I?

I realized that I should declare I file that I am using from another project.

Contents of the file follow the break.

Here it is:

##
 # Rectangle container with collision methods
 #
 # @author Henry Mclaughlin
 #
 # This is a generic rectangle container that has some
 # collision methods, a couple of boolean methods, and
 # properties for many points in itself.
 #
 # It has the following collision methods:
 #
 # \li Check overlap
 # \li Clamp in
 # \li Clamp off
 #
 # It has the following boolean methods:
 #
 # \li Union
 # \li Intersection
 #
 # It has properties for the following points:
 #
 # \li Left, right, top, and bottom edges (single coordinate)
 # \li Top-left, top-right, bottom-left, and bottom-right corners
 # \li Left, right, top, and bottom edge mid-points
 # \li Horizontal center and vertical center (single coordinate)
 # \li Center point
 # \li Width and height (individually)
 # \li Size
 #
 # When a Rect's corners are modified, it moves without
 # changing size.
 #
 # \note There are a \e lot of methods here that are not
 #       documented. This is because you are meant to
 #       use the properties, which \e are documented.
 #
 # \todo Implement clampIn()
 # \todo Implement clampOff()
 # \todo Implement boolean functions
 # \todo Implement overlapList(), overlapAny(), and overlapAll()
 #
 class Rect(object):
     
     ##
     # Constructor
     #
     # Params are complicated...
     #
     # \todo Document the parameters
     # \todo Proper error messages
     #
     def __init__(self,x,y=None,w=None,h=None):
         super(Rect,self).__init__()
         
         if h != None and w != None:
             self._left   = float(x)
             self._bottom = float(y)
             
             self._width  = float(w)
             self._height = float(h)
             
         elif y != None:
             self._left, self._bottom = x
             self._width,self._height = y
             
         elif isinstance(x,Rect):
             self._left   = x.left
             self._bottom = x.bottom
             self._width  = x.width
             self._height = x.height
             
         else:
             x = tuple(x)
             
             self._left,self._bottom,self._width,self._height = x
             
         
         self._left   = float(self._left)
         self._bottom = float(self._bottom)
         self._width  = float(self._width)
         self._height = float(self._height)
         
     
     def getLeft(self):
         return self._left
         
     def setLeft(self,new_left):
         self._left = float(new_left)
         
     ##
     # The Rect's left edge (single coordinate)
     left = property(
         getLeft,
         setLeft
     )
     
     def getRight(self):
         return self._left + self._width
         
     def setRight(self,new_right):
         self._left = float(new_right) - self._width
         
     ##
     # The Rect's right edge (single coordinate)
     right = property(
         getRight,
         setRight
     )
     
     def getCenterX(self):
         return self._left + (self._width / 2.0)
         
     def setCenterX(self,new_centerx):
         self._left = float(new_centerx) - (self._width / 2.0)
         
     ##
     # The Rect's horizontal center (single coordinate)
     centerx = property(
         getCenterX,
         setCenterX
     )
     
     def getBottom(self):
         return self._bottom
         
     def setBottom(self,new_bottom):
         self._bottom = float(new_bottom)
         
     ##
     # The Rect's bottom edge (single coordinate)
     bottom = property(
         getBottom,
         setBottom
     )
     
     def getTop(self):
         return self._bottom + self._width
         
     def setTop(self,new_top):
         self._bottom = float(new_top) - self._width
         
     ##
     # The Rect's top edge (single coordinate)
     top = property(
         getTop,
         setTop
     )
     
     def getCenterY(self):
         return self._bottom + (self._width / 2.0)
         
     def setCenterY(self,new_centery):
         self._bottom = float(new_centery) - (self._width / 2.0)
         
     ##
     # The Rect's vertical center (single coordinate)
     centery = property(
         getCenterY,
         setCenterY
     )
     
     def getWidth(self):
         return self._width
         
     def setWidth(self,new_width):
         self._width = float(new_width)
         
     ##
     # The Rect's width
     width = property(
         getWidth,
         setWidth
     )
     
     def getHeight(self):
         return self._height
         
     def setHeight(self,new_height):
         self._height = float(new_height)
         
     ##
     # The Rect's height
     height = property(
         getHeight,
         setHeight
     )
     
     
     def getBottomLeft(self):
         return (self.left,self.bottom)
         
     def setBottomLeft(self,new_bottomleft):
         self.left,self.bottom = tuple(new_bottomleft)
         
     ##
     # The Rect's bottom-left corner
     bottomleft = property(
         getBottomLeft,
         setBottomLeft
     )
     
     def getBottomRight(self):
         return (self.right,self.bottom)
         
     def setBottomRight(self,new_bottomright):
         self.right,self.bottom = tuple(new_bottomright)
         
     ##
     # The Rect's bottom-right corner
     bottomright = property(
         getBottomRight,
         setBottomRight
     )
     
     def getTopLeft(self):
         return (self.left,self.top)
         
     def setTopLeft(self,new_topleft):
         self.left,self.top = tuple(new_topleft)
         
     ##
     # The Rect's top-left corner
     topleft = property(
         getTopLeft,
         setTopLeft
     )
     
     def getTopRight(self):
         return (self.right,self.top)
         
     def setTopRight(self,new_topright):
         self.right,self.top = tuple(new_topright)
         
     ##
     # The Rect's top-right corner
     topright = property(
         getTopRight,
         setTopRight
     )
     
     def getMidLeft(self):
         return (self.left,self.centery)
         
     def setMidLeft(self,new_midleft):
         self.left,self.centery = tuple(new_midleft)
         
     ##
     # The midpoint of the Rect's left edge
     midleft = property(
         getMidLeft,
         setMidLeft
     )
     
     def getMidRight(self):
         return (self.right,self.centery)
         
     def setMidRight(self,new_midright):
         self.right,self.centery = tuple(new_midright)
         
     ##
     # The midpoint of the Rect's right edge
     midright = property(
         getMidRight,
         setMidRight
     )
     
     def getMidBottom(self):
         return (self.centerx,self.bottom)
         
     def setMidBottom(self,new_midbottom):
         self.centerx,self.bottom = tuple(new_midbottom)
         
     ##
     # The midpoint of the Rect's bottom edge
     midbottom = property(
         getMidBottom,
         setMidBottom
     )
     
     def getMidTop(self):
         return (self.centerx,self.top)
         
     def setMidTop(self,new_midtop):
         self.centerx,self.top = tuple(new_midtop)
         
     ##
     # The midpoint of the Rect's top edge
     midtop = property(
         getMidTop,
         setMidTop
     )
     
     def getCenter(self):
         return (self.centerx,self.centery)
         
     def setCenter(self,new_center):
         self.centerx,self.centery = tuple(new_center)
     ##
     # The Rect's center point
     center = property(
         getCenter,
         setCenter
     )
     
     def getSize(self):
         return (self.width,self.height)
         
     def setSize(self,new_size):
         self.width,self.height = tuple(new_size)
         
     ##
     # The Rect's size
     size = property(
         getSize,
         setSize
     )
     
     
     ##
     # Check whether the caller overlaps another Rect
     #
     # @param other The Rect to check for an overlap with
     #
     # @return Whether the caller overlaps with \e other
     #
     # \note If \e other is not a Rect, then this method
     #       will attempt to construct a Rect using \e other
     #
     def overlap(self,other):
         if not isinstance(other,Rect):
             other = Rect(other)
             
         
         coll_x, coll_y = True, True
         
         coll_x = coll_x and self.left  <= other.right
         coll_x = coll_x and other.left <= self.right
         
         coll_y = coll_y and self.bottom  <= other.top
         coll_y = coll_y and other.bottom <= self.top
         
         return coll_x and coll_y
         
     
     
 
 
 

title screen w/ music, no gameplay yet :P

A title graphic and some music, woohoo.  Sailing was one of the themes I suggested, so what better way to get revenge than combine it with the winning theme.

A little late maybe

It may be a little late already but I’m in.

Anyway: I’m using löve 7.2, gimp and bfxr.

Alright, back to coding.

First update

Phew, things are off to a more or less good start after some delicious croissants and brainstorming this morning. I love the theme, but I’ve found myself really stumped with coming up with a great idea. I find myself getting clammed up with trying to create something *different* instead of focusing on fun or feasibility. At the moment, I’m sort of winging it and hoping the final product will be fun!

Ah, an update on tools – I’m gonna be using Tweenlite, and have obviously gone for pre-rendered 3D, but have avoided flixel and co again! This means a greater (and fulfilling) programming challenge, and of course will result in some very dodgy collision detection. Quicksand walls are a thing now.

First screenshot:

More to come later!

Almost Alpha

I have been up for 24 hours now, but I have something playable to show for it. My rail shooter navigation is working. The camera smoothly moves between nodes. Enemies will spawn at when the player reaches certain nodes. They die when you click on them. Once all the enemies are dead the navigator moves to the next node. Unit makes rag doll physics easy.

Here is a screen shot:
Test Build

Here is a Unity web player link
http://www.monkeydev.com/unity/ld21/Alpha1.html

So far…

Here’s a quick screenie of our newest addition to ze game, buildings!

Here’s what we have so far:

Wall-running/jumping

Giant crushers

Lava

Fluent movement

Retarded dancing glitches

More graphics!

My game idea is extremely simple so I can spend extra time on graphics. Yay! Title screen and intro is done as well. A good days work! Tomorrow I will tie up lose ends and add some sound effects.

Latest shot:

First game play preview

Got lots done, but also still have way too much to get done. Getting tired here, so I’ll be taking a “sleep” break and start up early tomorrow morning.

I’m pretty happy with the basics in place. Now I actually have to make a game out of this. In saying that, it’s pretty interesting how the idea has evolved the more I work on it. I have quite a few nice ideas for the level design & puzzles that the player will be facing (Needless to say that this will be a very very short adventure. It’ll be almost like a short film.)

Check out the preview video here:

Still Dreaming Video

 

First room into the game

Few artifacts of the process I use to generate the art but looks pretty nice, its all actually tiles, autogenerated from a 3D scene.

Now to get some player animation frames and get some basic interaction going, then place my first NPC to explain whats going on.