Saturday, December 14, 2013

3 textures free for Ludum Dare Jam players & Indie Devs

Hello,

I'm doing the Ludum Dare competition but if you are in the jam and want some free textures please feel free to use this I just whipped up in Photoshop.

I'll be honest I did not read the Jam rules so if it breaks the rules don't use them I guess :)

Otherwise these are free to use for any Indie game developers for any use you have commercial or personal just do not sell them directly as assets!


#LD48 , slept on it and my idea has changed a bit!

As anticipated my Ludum Dare 28 idea matured and changed a bit once I slept on it.

I may end up changing the title as the primary game mechanic now is going to be that You Only Get One minute of light.  

This will be enforced by some form of torch or lantern the character can carry about and turn off/on at will.

I did not like the limits of only 1 minute of gameplay but I liked the pressure of 1 minute of something so this is a good compromise.

Nothing Much To See Yet!

The rest of the game play that I imagined is still the same but the light mechanics are not as hard wired now and I think will be more fun.

Otherwise I want this to very much be a game about light and the lack of it.

Its unclear at this point if there will be *any* in game lighting that the player does not carry with them.

In one way I think this is cool, in another it would be cruddy because I do hate games where I can not see at *all*.

That is a balance thing that will tell through later.

Friday, December 13, 2013

#LD48 : My idea: One Minute of EVIL

So the them for Ludum Dare 28 is "You Only Have One"  so I decided it would be One Minute ... bringing my idea's title to be "One Minute of EVIL"

And to help set the theme and direction I made a quick title screen (probably will be the final one as fast as I have to do all this but here it is:


Nothing like some bloody good EVIL to set the theme.. now I have some where to go with this!

- punchy out

#LD48 , what to do ...

So the theme for Ludum Dare number 28 is "You Only Have One"

I was thinking about doing this, but now I'm thinking I regret it.

The first thing that comes to mind is "You Only Have One Life" and of course that will be the most common themed game and  the first thing that every one thinks of.

So for the past 2 hours I've been trying to come up with some thing better, and I think I have:

"You Only Get One Minute!"

So this has a seed of inspiration for me ... one minute .. one minute .. this could be a race, this could could be a contest, this could be a survival theme!

Lots of little seeds here and I want them to keep germinating so instead of starting on the game I'm booting up Unity and I'm going to break out the menu's and scenes and link them all together.

Hopefully things will be a little more clear by then; if not well maybe I'll sleep on it?


- punchy out!


Sunday, September 29, 2013

Pirate's Jewels II hits beta!


It took 3 months and 1 day of active development but I am proud to announce that my upcoming game Pirates Jewels II hit its first beta today Sept 29th.

My previous gem game in this series had 1 game mode which I am very proud to announce will now be 6 game modes!

Note: All of these screenshots are beta; and subject to change. Most of them have debug information on them also if you see some oddly placed numbers that don't seem to make sense :-)



My biggest two achievements are the creation of a Quest Mode which ties together two of the other game modes in a progressive game play for the player and the specific's of the Battle Mode (name subject to change) wherein you play a game against an artificial pirate opponent. Forming matches along the rows allows you to fire your cannons defeat your foe.



I was able to create pirate opponents with several properties that affect their behavior such as intelligence, aggressiveness, and speed.

Also for each player they have upgradeable ships  with increasing health and bays of cannons so they can have anywhere from 4 to 7 cannons to use against the other player.



Also of course I have several variants of fairly classic gem game play including a relaxing Zen mode with backgrounds that zoom and pan slowly for a beautiful and relaxing scenic game play, or you can turn the pressure on a bit with Timed Mode or Progressive mode which gets harder each level you advance!


I took the plunge for this product and purchased the full version of Unity Pro 3D to render my backgrounds and scene information.  This allowed me to purchase art from the Unity Asset Store and product better looking screens in lower amount of time. Being a solo indie developer its very difficult to find enough time to both do all your coding and come out with nice graphics in the end also. 


There are still lots of polishing and bug fixing tasks left to do but finally all the game modes are functional and it feels like a really huge accomplishment!


In quest mode you can choose your own pirate flag, I am hoping to have a selection of class historical flags as well as a few fun and silly flags for your selection!

And now I return to polishing my jewel so to speak!

- punchy out

Friday, September 20, 2013

iOS 7 looks like a bag of cat crap

So I was not in a huge hurry to download and install iOS 7 but was still a bit curious. I generally feel like Apple's operating systems have a ton of polish that places them light years ahead of Windows OS's.  Mac OS X  (10.1) had more polish than Windows 7 does most of the time.

So I expected iOS 7 to be a refinement on excellence, a few notches better and maybe utilize some 3D hardware to make things more alive and have depth.

Apparently they have hired the Windows 8 designer idiot from Microsoft and put them in charge of iOS 7.

Words  and phrases to describe iOS
- flat
- ugly
- lacking polish
- Windows 8 on sedatives


Also for the first time ever my iPad 2 feels sluggish?  How do you do that? How do you make something look flat and uninteresting and take away most of the perceived depth and also make it run worse?  

Raw talent? 

I have to imagine Steve was alive when they were prototyping this so he had some hand in it; but I also feel like it would not have shipped out looking this ugly and performing this poorly if he were still at the helm.

Note to Apple: if you find yourself being compared to Windows 8 in any way : you are doing it wrong.

The end.

Monday, July 29, 2013

Pirates Jewels II - 3 Game Modes now complete

WHEW!   Man what a lot of work!

As you may remember I underwent the task of teaching myself Java very seriously this year and had to set aside my game development for a significant time but that focus resulted in a very nice promotion in my day job so I am now a full time software engineer ! (yay!)

But now that I am doing that all day long and things are getting a little bit grounded I have been getting back on track with my current game development project.

I do have to say my next project is very likely to NOT be in C++ / AGK  .. but we'll get in to that more later.

For now let me share an 'in progress' screenshot from the current build of Pirates Jewels II!

If you recall the last time I was able to share a screenshot was in April of this year ( see here ) where things looked a lot rougher!

But now me'hearties! Now she's looking grand indeed!

I would like to say the graphics are definitely not final; but they've improved so much its a very nice feeling to watch the game at this point and I excited to continue polishing and refine it further!

Three more game modes to go !  Wish me luck!

- punchy out

Tuesday, July 2, 2013

Learning Curve : Finding out you wrote bad code; way after the fact


So I have not been blogging a lot lately, and I have a lot I want to write about but I'm also very busy.

I have been settling in (a little bit) to my new job as a software engineer but there is so much to learn ; a lot of my 'free time' (aka blog time included in that) goes towards making sure I'm learning all the new technologies that the product I'm working on in my day job uses.

In my night-job - the indie game designer I spend time trying to write the next incarnation of Pirates Jewels.

I first wrote this product as Pirates Treasure in DarkBasicPro.  It worked but being a BASIC variant it was slow and had a couple of bugs I was convinced that were as a result of the DBPro platform.

So I upgraded to the AppGameKit using C++ ; well really C because I did not know C++ .. well I didn't know C either honestly.

I taught myself C and AppGameKit while I did the Pirates Treasure rewrite.  I ended up re-naming it to Pirates Jewels due to a naming conflict on the App Store but once it was done the bugs were gone and the game was much faster.

So then I started learning C++ ; but soon swapped to Java because my work uses Java and I wanted to possibly get a promotion to a developer.

Here we are a few months later and I got that promotion and now I'm re-writing Pirates Jewels in Object Oriented Code.

And today I found some code that as I read it I said to myself "That doesn't do anything?"

Sure enough I commented the code out and it did nothing?

So that's my quick learning curve article for today; I ended up laughing about it. I'm sure there are a few other lines of code that I was trying something out and I ended up going a different direction and then didn't remove everything.

But the point of this one is its nice to have learned enough that I am more readily able to read a bit of code and 'know' what its doing ; or in this case not doing.

Friday, April 26, 2013

How I achieved my 5 year goal in 1 year!

One year and two months ago I posted on my blog that I had a goal to become a programmer here.

Today I am proud to announce that I am officially calling it as an achieved goal: I have definitely learned how to program at this point!

My list of applications is very nice but I have also accomplished another goal that I really didn't get in to which was my 5 year goal.

My 5 Year goal was a piggyback goal for my programming goal you see: learning to program through games was to be a stepping stone to become a fulltime professional software developer.

Professional can mean many things but in this context I mean that I would make my living by programming. 

So the great news is that I accepted an offer by my current employer this afternoon to join the product development team as an Associate Software Engineer.

If you just want the short story you can stop here; otherwise if you're looking for an extended story about how I did this read on!


Friday, April 19, 2013

Pirates Jewels II : two new alpha screenshots achieved using vectors

So after learning about vectors recently I modified my game code to use vectors rather than traditional arrays.

This made the process of creating the game boards in these two screenshots very simple for me as I can pass the setup for a board of any size as an object to the function and have initialize all the values and then draw the gems on the screen according to a fairly simple formula based on the size of the gems and size of the array.

So we have here two separate screens, one uses a single large board, and the other uses two smaller side-by-side boards.

All 3 are done with the same functions, just passing a different vector when the are each set up.



Naturally I'm not claiming to be a code-scientist or a pioneer here, just sharing my progress in learning new things and making my indie games better!

I believe always pushing yourself to learn new techniques is extremely valuable. In this case it has made my code leaner, meaner, easier to use and much more modular.

punchy out!

Thursday, April 18, 2013

the solution to my previous question!

So last post I asked how to perform the passing of an array to a function / method in C++ similar to the Java code sample I published here.

 I was informed by a couple of folks to look into C++ Vectors. That turned out to be grand advice so I'd like to share the code that I came up with:

       

void zeroOnlyBubbleSort(vector< vector >&passedArray ){

for(int y = 0; y < passedArray.size(); y++){
bool needNextPass = true;
    while (needNextPass == true){
    needNextPass = false;
       for(int x = 1 ; x < passedArray.size()   ; x++) {  
           if (passedArray[x][y] == 0 && passedArray[x-1][y] != 0){
           int temp = passedArray[x][y];
           passedArray[x][y] = passedArray[x-1][y];
           passedArray[x-1][y]= temp;
           needNextPass = true;
       }  
    }
   }
  }
}

       
 

 This code is a tiny bit different in that it deals with a two dimensional array of vector type but that was a little bit tricky to figure out so I thought it would be nice to share here.

 I also found a couple of nice articles that helped a lot for learning resources so wanted to share those as well: 

This stackoverflow question was very useful: http://stackoverflow.com/questions/5333113/how-to-pass-a-vector-to-a-function 

 And this cplusplus.com article proved nice reference as well: http://www.cplusplus.com/reference/vector/vector/ Thanks for the tips guys!

Thursday, April 11, 2013

how would I do this in C++

So as previously mentioned I have been learning Java and really digging it.

In my previous game Pirates Jewels I use a bubble sort at certain points in the game, and I decided to work on an improved bubble sort that fit certain criteria:

1: This is a specialized bubble sort where '0' numbers float to the top and the rest of the numbers sink down and stay in their previous order

2: The first improvement is I  want to be able to pass an array to the function rather than hard coding it to always use one particular array.

3: The second improvement is I want it to accept variable length arrays ; that is it should automatically traverse the array for the length of the passed array.

4: The third improvement is if no swapping occurred on an given pass it should break through the current  inner for loop and out to the next outer loop (speeds up processing that is otherwise unnecessary)


So I wrote it in Java because I'm learning Java .. I do everything first in Java right now to improve my skills there.

BUT I need this to work in C++ because right now I am using the AppGameKit by  The Game Creator's and I have to write this in C++ to get it to port to iOS AND Android at the same time.

So here is my Java code (that works fine!)
       

public static int[] zeroOnlyBubbleSort(int[] array){
  
  boolean needNextPass = true;
  
   for(int k =1; k < array.length && needNextPass; k++){
    needNextPass = false;
     for(int i = 0; i < array.length - k; i++) {
    if (array[i] != 0 && array[i +1] == 0){
     int temp = array[i];
     array[i] = array[i+1];
     array[i+1]= temp;
     needNextPass = true;
    }  
     }
   }
  return array;
}

       
 
I have done some googling and I am not finding any solutions that match the simple elegance of the Java approach?

Any suggestions ?

Post a comment!

Wednesday, April 10, 2013

blocking out my next game menus Pirates Jewels II

So in case you didn't know I am definitely the type to spend way too much time on graphics when I should be coding my game! I am doing my best this time to use some very generic blocked out placeholder graphics so behold the main menu placeholder!



While certainly not incredibly exciting the names of the menu options should reveal that compared to the gigantic amount of ONE type of game play in the previous version of Pirates Jewels I am going over the top at this point and plan on including SIX game modes.

To be honest I already have the mechanics in place that will make 3 of them work with very minimal effort but I have some very big plans for some of the other modes.. I hope to blog about my progress as the game comes along.

Stay tuned.

Tuesday, April 9, 2013

Learning Java progress for 2013


So I've been learning Java this year.

It was part of my goal for this year as I had taught myself BASIC, C, and C++ last year.

Well to be honest; I only halfway taught myself C++ last year.

I actually started learning C++ in November and  as I entered the area for Classes and Objects it got very pointer heavy and the new year came about and it was time to start learning Java.

I had to make a decision ; continue forward with C++ or dive into Java and set C++ aside.

Sunday, March 10, 2013

Leprechaun's Luck on iOS and Android

I just released (in the past few days) Leprechaun's Luck on Google Play Android and iOS for iPhone

Been too busy putting it all together to get any updates to the blog; but that's what being an indie developer is about.  You've got to know when to choose to spend time on blogs and when to spend time on your product.

So Leprechaun's Luck on iOS was uploaded on February 28th and was my February release for #1GAM challenge.  However it wasn't approved / available by Apple until late this week.

Leprechaun's Luck on Google Play Android is my #1GAM entry for March. It was just approved yesterday.

As of now I have released as many products this year as I did last year and its only February!

And here's an updated wallpaper with all 4 of my products :D woot!


-punchy out


Tuesday, February 19, 2013

Two of my Games for FREE on Indie City


I have decided to (for now) make two of my   PC games FREE on Indie City

Pirates Jewels

Space Chickens vs Angry Zombies

I developed these with the App Game Kit by The Game Creators in C++

If you download my games I would appreciate if you have any feedback that you left a response in the thread so I can benefit from your feedback.

Enjoy!

- punchy out

Monday, February 11, 2013

The Learning Curve : Character Sprite

Welcome to "The Learning Curve"  a new periodic topic I plan to revisit from time to time. I guess you could call it a column if this were a newspaper? I'm not really an 'educated' blogger so I don't know what the term is for blogs. 

 I'm here to get things done so I'll leave the semantics to the blog nazi's and get on to say what I have to say!



New tools, new code, new concepts, new math.

Everything we do as developers takes time.

Time is one of the primary constraints to being successful as a developer.

Tuesday, February 5, 2013

#1GAM Month 2, core game play achieved

It's using place holder graphics scavenged from my previous game but my game for this month now has its core game play in place and is playable!

Short message so I can keep working tonight.  Obligatory screenshot:


- punchy out

Sunday, February 3, 2013

Wallpaper of all my app's

So I made some wallpaper that no one but me will ever use, but that's okay!

I felt this little celebration was well deserved so took some time in Adobe Photoshop to compose my 3 games icon's into this wallpaper along with my indie game development studio "Infernohawke Entertainment".

Its funny my development cycle from joining #1GAM was so rapid I haven't even added Space Chickens VS Angry Zombies to my website yet? How weird is that?



It looks good, and it feels good.

I'm enjoying the moment.

Thanks.

- punch out

Saturday, February 2, 2013

Started my #1GAM Month 2 project

So I have started my #1GAM project for month 2.

At the moment the idea is to re-use the game engine  or framework I created in Space Chickens VS Angry Zombies to create a new game minimizing some of the design aspects.

Most particularly I will be highly utilizing the level editor and probably the menuing system.

Naturally I will tweak it all a bit to suit the current game but the level editor particuarly should be extremely usefull and time-saving.

The idea at the moment is to mix elements of asteroids with a player navigating a very "loose" maze to reach an objective without being smashed by the asteroids.

The reason I use the word asteroids is think of flying objects that float around and bounce off of things and if they hit you kill you.  Not because it will be in space or anything like that.

So the project is in progress as we speak. I am hoping to hammer this one out in 10 days or less so I can begin my next project sooner than usual to give it more time. I have a slightly larger project in mind for project #3 and the extra time will be quite welcome.

Updates to come.

- punch out

Friday, February 1, 2013

Postmortem: My first year as a Indie Developer

One year ago on February 1st, 2012 I began my journey to learn how to program.

So here we are exactly one year later, I have decided to do a developer postmortem and share my experiences.

To get the full story on my decision to become a programmer you can read my announcement post here but in short I had decided that after doing game related development in every other aspect since 1995 that I would finally take the last step and learn to program myself.

Warning this is going to be long, but I'll try to include as many pictures as possible!

So as part of my motivation plan to learn to program I decided I needed to pick a goal. I decided to try and pick something easy to learn with. Something that would be more motivational than constantly doing tutorials!

So I decided I would make a classic 'match-3' style gem game.

This being a postmortem this is where I tell you how that worked out for me!


Wednesday, January 30, 2013

Space Chickens VS Angry Zombies is done!

My first entry for the #1GAM challenge this year is now done.

I am currently doing distribution builds for Indie City and iOS Submissions.

Here's a couple of screenshots to enjoy for now:



Monday, January 28, 2013

App Icon for Space Chickens VS Angry Zombies

Okay so the game is coming along very well. It appears some how I will indeed make the deadline for my #1GAM month 1 challenge!  Wewt!

Here's the icon for the App I just made within the last 30 minutes:


I took the character sprite frame 1 from within Adobe Illustrator and then used a PhotoShop icon template I have.

It wasn't quite right so ...


Wednesday, January 23, 2013

8 Days on #1GAM left, am I clucking insane?

So there are only 8 days left in the first Month #1GAM challenge and I joined 12 days late.

So I basically committed to doing my first game in a year long challenge in only 19 days?!?!  Am I mother clucking insane?!



The current state of the game is barely playable right now.

 I guess I say "barely" because I have high standards.  Technically speaking the only things missing are the following:


Sunday, January 20, 2013

physics collision via raycast completed

So for my #1GAM challenge I decided to use Physics Ray Cast to detect collisions.

Originally I imagined using a "corner point" system thinking to myself this would detect anything right as I hit it.

Indeed this worked very well as long as the player was not jumping!

The player sprite is 128x128 pixels and the world blocks are 64x64 pixels.

So in scenario 1 you see if the player walked into an object of any kind there would be two collisions (noted by the red lines for the physics ray cast).

However I started noticing odd behavior when I jumped.  Sometimes I would jump and the middle of my player would hit against something ; and nothing would happen.

So we see in scenario 2 as soon as the jumping is in play this set of ray cast points was in fact insufficient. As the visual portrays what happens sometimes during a jump the sideways stack of blocks can hit between ray cast points.

So finally I came up with the system in scenario 3.

There is no gap on the player large enough to slip through and this has the benefit of detecting if you hit something from any angle on left edge, right edge, or center (for any side).

And per the spacing I made (perhaps not 100% accurate on the mock up here) there is no room for 64x block to slip through undetected.

I'm glad I spent some time testing this in game otherwise this might have slipped through and presented some possible exploits, and game bugs for Space Chickens vs Angry Zombies.

- punch out

Thursday, January 17, 2013

menu art for space chickens vs angry zombies

Did a nice menu screen for my upcoming platformer Space Chickens vs Angry Zombies for this months #1GAM challenge.


Not settled on it but its pretty nice at the moment.

It's one of those things I might have been inclined to tweak for a long time; but if I'm going to do 1 title a month I need to be fast, productive and move on when its 'good enough'.  So other than possibly adding level shots to the transparent areas or changing fonts (got a license inquiry out on one of them) I think this is going to work!

- punchy out


Tuesday, January 15, 2013

platformer updates for Jan 15th

Continuing my work on my #1GAM Platformer : Space Chickens vs Angry Zombies I have completed the following the last day or two:


  • When saving levels in the editor you can type in the level number for the save file
  • When loading levels in the editor  you can specify which level to load.
  • Created new pulsing heart sprite (for health pickups)
  • Added  Stars & Hearts to the level file format for both saving and loading.
  • Health bar added to GUI
  • Health system implemented
Keeping the entry short today in interest of more programming! 

 - punchy out

Monday, January 14, 2013

free star sprite

So I finally learned both Silo 2 and Blender enough to make my first sprite a couple of days ago!

I like it a lot; I was able to get a very nice reflection going on it! I did add a black outline in Photoshop to help it punch against certain backgrounds.


So to celebrate I am giving this out for royalty free use with the following conditions:

1: You may not sell the sprite itself
2: If you have a 'credits' portion give me credit (Carl Kidwell)  (if however your product lacks a credit section then feel free to leave me out)
3: I'd appreciate a link to whatever product you use it in (not required but nice).

Enjoy!

- punchy out


Sunday, January 13, 2013

Platformer Alpha video 1

Space Chickens vs Angry Zombies is my upcoming platformer for iOS and my first title of the year as part of my #onegameamonth or #1GAM challenge.

This video features use of the level editor, and shows off the new star and heart sprite.


The star will be the equivalent of 'coins' ; its your primary collectible item.
The heart of course is your health meter refreshment option.
The level editor shows off a few items in this video:
- its ability to be tabbed in out while playing
- its ability to pan around the screen
- the ability to choose and lay down sprites

Note: The level editor is not intended to ship to the end product just showing off my in-house tools :-)

Saturday, January 12, 2013

new avatar for Google+

Created this awesome new avatar for myself for Google+ which I just activated today finally:


Just can't express how much I love this thing.

- punchy out

I'm entering in the One Game a Month 2013 challenge!

As a goal for this year I knew I wanted to complete more games this year than last year, but it was a little tough to decide what I should aim for?

So I started off by recapping my accomplishment 's for last  year - technically speaking I made 3 games last year:

1:  Pirates Treasure in DBPro - completed but did not commercially release.
2:  Pirates Jewels for iPhone, iPad and PC on Indie City
3:  Holiday Cheer for iPhone, iPad, and PC on WildTangent

So that's pretty good honestly. I learned to program last year starting in February no less!  Getting 3 games finished is awesome.

So I figured - why  not double the goal?  That's fairly reasonable and I should be able to get it done?

Well I am part of the Meetup.com's Sacramento Game Development Meetup Group but most of their meetup's are day-long or weekend-long GameJam's (which is very cool) but as a 40+ year old married guy with kids I can't abandon my family for that long (or don't want to - take your pic).

But I am a member and therefore read the news and posts and our Organizer +Joseph Burchett mentioned and recommended that we should think about participating in One Game a Month's challenge  to create one video game per month in 2013.

But that's pretty huge ..

Tuesday, January 8, 2013

further optimized saving and loading + bugfixes

I was able to further optimize my saving and loading routines for my platformer engine I'm working on.


In particular I made it so every time you save the following takes place:


  1. The array that holds the current level structure is bubble sorted to move all the 'deleted' items to the top
  2. The save routine skips over the deleted elements
  3. The save routine re-numbers the items as they are saved out to have a new in-order numeral  (this is important because I am limiting my levels to 20,000 sprites at the moment, therefore I need to make sure there are not gaps in the order, nor a jump in numbers)
  4. Once saved out the current level is deleted from memory and the screen.
  5. The array that holds the level is zeroed out
  6. The save routine calls the load routine to load the freshly saved , newly ordered level into memory.
There were a few bugs , such as when I was deleting sprites manually I was not zeroing the array # that held the sprite; therefore I had 'magic' blocks that would come back all by themselves! 

That was a fun one to figure out!

Also because I was bubble sorting, the zeroed out "empty' blocks were getting bubble sorted to the top of the array ( position 0,1,2,3 if there were 4 0's for example) and I had to do a function to count how many zeroes there actually were and subtract that from the total before saving. 

- punchy out

Monday, January 7, 2013

Platformer: saving and loading now works!


I was able to get the file loading and saving working using the structure I described in my previous post.

It works extremely well so far!

I did find a few bugs I need to fix:

1: Saving a file I do a getSpriteExists; if it fails then I write that particular block to be 0's. This later causes "empty" blocks in my structure so I need to do some sort of bubble sort on it.

2: The variable I use to determine what sprite # I'm on needs to be reset when I do a load.  For example if I put down 50 sprites and load the level it resets the sprite count back to 1 and each sprite I put down thereafter effectively deletes one of the loaded ones until I surpass the loaded sprite count (super easy to fix but just sharing what I saw).

Also I want to add some additional functionality such as loading/saving by name instead of hard coding it but I want to iron out the bugs before doing so.

But for my first 'level file format' I am jazzed at how well this is working!  Some times its great when you do some planning ahead of time and everything works out!

Sunday, January 6, 2013

file format research for my platformer


Okay did some research on a file format .. not done but the main consideration is storing all the sprite locations and what image number and if its a physics sprite or not.


Using a 1024x768 screen

My sprites are all 64x64

1024 / 64 = 16
768 / 64 = 12

the 1024 row can hold 16 sprites at 64 pixels
the 768 row can hold 12 sprites at 64 pixels

16 * 12 = 192 possible sprites per screen

192 * 10 screens = 1920 
192 * 20 screens = 3840
192 * 100 screens = 19200 .. round off to 20,000

Obviously I am never going to fill an entire screen with sprites so this calculation is extremely conservative. Most screens will comprise of about 80% of the screen being 'air' so practically we are talking about the possibility of level being more like 500 screens if i limit it to 20,000 as I'm presuming here.

if an int is 32 bits (depends on system ) 100 screens of 20,000 int's is 640000 bits or .076 MB's of memory

so if we had to hold 20,000 ints for the x,y, levelSprite and image number and the physics flag thats 5 * .076 or .38 MB


So using this type of structure


+ Code Snippet
struct level_Format
{
int levelSprite;    // levelSprite is just the sprite number variable
int imageNumber;    // imageNumber is the image number that will be used to load the sprite
int x;              // x location of the sprite
int y;              // y location of the sprite
short physicsFlag;  // flag if the sprite will be physics or not (some sprites are for decoration, some for collision)
} levelblocks[20000];


If I write out 21,000 lines of this in a text file it is 489kb.

The reason I'm going with 21,000 is because I will need some header info and I don't know everything about that yet, and Ill also need entity info but that should be considerably less than the level architecture.

So my calculation is if I use this type of format for a level most level data file's will be about 150kb or less because I can't see myself doing levels that comprise of more than 50 screens of 1024x768 width .. that might actually be too big ; play testing will show this out eventually.


Saturday, January 5, 2013

starting a new platformer game for 2013

So as one of my goals for the new year I am starting my next game.

My 3 year old has found that platformer games are his favorite on our iPad and has been having tons of fun on them, so I decided I would make a platformer myself.

The AppGameKit that I have been using to develop has been fairly successful for me so far so I have decided to continue forward with that for this project - although as a side note I am determined to teach myself  Java and make a native android app this year as well.

I'm not fully clear on what my full goal set is for this platformer?  It is my first one ; and I have not been playing them a lot lately. I used to love Super Mario Brothers as a child .. and Super Mario Brothers 3 was probably my favorite .. but the genre has changed a lot.

My son's favorite one's on the iPad are

Lep's World HD
Muffin Knight
Mikey  Shorts

They are all fairly easy to play (even for a 3 year old) and have a lot of fun game play.

I'm not sure that I want my platformer to look just like any of those so I will have to see what happens as my engine matures!

I hope to make something that has the following though:


  • a flavor that is all my own
  • art that is thematic
  • something that tells an interesting story (not just level after level)
  • levels that have a vertical as well as horizontal elements
  • 'boss fights'  - I've noticed some platformers seem to skip these
  • physics puzzles
  • a built in level editor  - I quickly realized that hand coding every block will kill me time-wise!



I've only been working on this since the beginning of the year, but already I have a basic structure in place and the editor already started!

The level editor is extremely alpha but I'm loving it so far, I am going to put a lot of work  in to this. What I've done in it already has been so valuable I immediately realized this was a huge idea that will be critical to making successful levels.