Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length

 
Advanced search

1319263 Posts in 59268 Topics- by 50364 Members - Latest Member: kidori

October 22, 2017, 11:48:19 pm

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityDevLogsPakka Pets
Pages: [1] 2
Print
Author Topic: Pakka Pets  (Read 13375 times)
thomf00
Level 0
***



View Profile WWW
« on: January 18, 2014, 08:12:52 pm »


                                                                               
Welcome to the world of Pakka Pets! Raise your very own pet by concocting special treats, getting to know their needs, and loving them to bits. Explore the Pakka world to meet new friends, find lost treasure, and to give your pets the experiences of their lives.
                                                                               


Hello! I'm Thomas Uster, and I'm the programmer on Pakka Pets.

I'm going to dive right into all the naughty tech that's going into this game, so if you want more game design details check out my Townhall post here. Or check back on this thread for posts from Willem Rosenthal the designer and artist.

And now the Badass Tech Stuff! Yea Baby!

Some Stats

Pakka Pets is written in Haxe with dependencies on OpenFL, minject, and msignal.

The rendering is currently done with lot of our own infrastructure. The lowest level code hits OpenFL TileSheets(A single texture spritesheet API) designed for speed.

It's also written with my own flavor of an entity system framework. A ton of ideas being pulled from Richard Lord & Alec Mceachran on this.

I even had to write my own bitmap font parser (OH MY JESUS).

Performance

Having a sexy eye on performance has kept Pakka Pets fast and lean. Because Haxe has a flash build target I can profile it with Adobe Scout, a tool I have experience with that's easy on the eyes.

Profiling of Pakka Pets in Adobe Scout

One of the things this allowed us to do is help us tune our clarity of a time simulation. We don't want the app sucking up your battery while your not playing, so it doesn't actually run as a background process when you close the app like other pet games. What this means is that if you turned off your phone, it doesn't matter. We run a simulation to process what happened to the pet as if it was living when you were away. We can do it pretty damn well within a few seconds. Because you're still in a load, we can disable the main game rendering systems, and crank up the number of logic system cycles per frame. This way you still get a smooth loading screen while we're plowing down on the CPU. To simulate the game we're literally running the game but with bigger time slices at a faster rate. The outcomes are pretty awesome sometimes, and this method keeps the door open for new possibilities if you leave your pet unattended with an item they might get into trouble with.

"You can handle huge time slices?! Does that mean you can see your game in fast motion if you wanted to?"

Hell yea bro! Check it.

Increasing time speed on the fly


Tests!


"What the?! I know what this is, are you serious Tom?" Yes, I'm very serious, as you can see.

High level integration tests beat the shit out of most unit tests that I have.

For example,

This test was written with TDD but has a big assumption on my source code.

What not to do most of the time...

Code:
@Test
public function shouldNotEvolveIfSystemDisabled():Void {
game.makeSystem(EvolveSystem);
game.disableSystem(EvolveSystem);
time.updateInDays(1);
Assert.isFalse(pet.isState(WalkToEvolutionPosition)); //!!! Inflexible test!
}


See my assertion? This means that I MUST have a state called WalkToEvolutionPosition even though my feature only really cares whether the pet evolves or not.

What to do most of the time...

Code:
@Test
public function testFingerReleasingFood():Void {
grabBowlOfRice();
clicker.mouseMoveUp(0, 350);
gravityModel.gravity = 2;
time.updateInSeconds(1);
var box:Rectangle = rendering.getBox(rice);
Assert.isTrue(box.bottom == 350 + 2);
}


This test is making sure that if you were moving a bowl of rice into the game with your finger, that if you released it should be affected by gravity. This is a great test because it assumes very little about implementation.

Okay that's it for my first post. I'll leave you with some funny class names in our game...

  • PoopingSystem
  • NewBabyCommand
  • GhostFactory
  • KillCommand
  • ShotPopulater
  • LoadSpreader
  • AutoSimulate

@PakkaPets
« Last Edit: January 26, 2014, 06:55:15 pm by thomf00 » Logged

Twitter @thomasuster
Bruce Leroy
Level 0
*

Little crazy


View Profile WWW Email
« Reply #1 on: January 18, 2014, 09:00:20 pm »

 Shocked Very cool man! Congratulation!
Logged
thomf00
Level 0
***



View Profile WWW
« Reply #2 on: January 20, 2014, 11:06:13 am »

Thanks dude!
Logged

Twitter @thomasuster
ephoete
Level 2
**


View Profile WWW Email
« Reply #3 on: January 20, 2014, 04:23:21 pm »

I see an iphone, any plan to release this on mobile platform?
Logged

Check out my Soundcloud! https://soundcloud.com/edgar-phoete
thomf00
Level 0
***



View Profile WWW
« Reply #4 on: January 20, 2014, 05:48:50 pm »

Yea definitely! We think we'll be able to handle the following.

* Android OS 2.2 or higher
* iPhone 3GS or later
* It should also be able to run upscaled on the iPad, iPad Mini, and iPod Touch 3rd generation or later. We might also make a high res build, but that will likely come later if people like it on the phone.
« Last Edit: January 21, 2014, 07:16:54 am by thomf00 » Logged

Twitter @thomasuster
loudo
Level 1
*



View Profile WWW
« Reply #5 on: January 22, 2014, 10:11:43 am »

It's also written with my own flavor of an entity system framework. A ton of ideas being pulled from Richard Lord & Alec Mceachran on this.

I love Ash, the Richard Lord's entity system framework. Do you plan to release your entity system framework (I'm interested Smiley ) ?

Keep going good work with Haxe.
Logged

thomf00
Level 0
***



View Profile WWW
« Reply #6 on: January 22, 2014, 11:20:06 am »


I love Ash, the Richard Lord's entity system framework. Do you plan to release your entity system framework (I'm interested Smiley ) ?

Hey Loudo! Yea I was heavily influenced by Ash. I have nodes, link list iteration, components, all that fun stuff.

I haven't thought about releasing it, but that's an intriguing idea.

Are you interested in how it works or using it for a project?
Logged

Twitter @thomasuster
yui_jegnan
Level 0
***


Challenging video games


View Profile Email
« Reply #7 on: January 22, 2014, 11:48:02 am »

hey! I saw your video on kickstarter. Isn't that robot in the middle of your page and video from the final area of Earthbound?



You might want to change that before Nintendo does something.

Cute looking pets by the way! Hope it all goes well for you.
« Last Edit: January 22, 2014, 11:55:58 am by yui_jegnan » Logged

Cube and Me Devlog
snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #8 on: January 22, 2014, 03:45:00 pm »

Hey yui_jegnan!
I'm Willem the designer and artist. Thanks for your feedback!

Our robot is an homage to the one in earthbound. It's design is similar but not the same. There are a few designs in Pakka Pets that are inspired by other places or games that have been meaningful to me- I'm going to do a pass before launch and be sure that each of my designs are different enough to be an homage and not a rip-off.  Smiley


Logged

loudo
Level 1
*



View Profile WWW
« Reply #9 on: January 23, 2014, 02:53:15 am »

Hey Loudo! Yea I was heavily influenced by Ash. I have nodes, link list iteration, components, all that fun stuff.

That's cool !

Are you interested in how it works or using it for a project?

I'm currently using Ash in as3 and I use Awe6 in Haxe. But I'm always searching for good entity-based stuff Smiley

Why didn't you use Ash-haxe or Awe6 for your project ?
Logged

thomf00
Level 0
***



View Profile WWW
« Reply #10 on: January 23, 2014, 10:45:34 am »

I'm currently using Ash in as3 and I use Awe6 in Haxe. But I'm always searching for good entity-based stuff Smiley

Why didn't you use Ash-haxe or Awe6 for your project ?

Oh cool! I haven't heard of Awe6. Browsing the source code a little now and I can't find any tests which scares me. But I see it's been used in some shipped games so It's probably good.

I didn't use Ash-haxe or Awe6 for a couple of reasons. The first reason was I really wanted to write an entity system framework, and I had started writing it for fun a few weeks before I had decided to make my own game.

The second reason is that I didn't have any experience in mobile or the sim genre of games. So I thought hey if I can finish my entity system I'll have made something cool, with APIs that I think are most intuitive, and the flexibility to do anything I want without begging for pull requests.

My engine, which lately I've been calling cat-hamburger, is also perfect for Pakka Pets. Every requirement for this engine is for Pakka Pets, so it'll probably be better for our game in the long-run.

I'm sure Ash-haxe and Awe6 are great though!

PS, here's my buddies entity system called Xember, a lot of cool stuff under the hood.
Logged

Twitter @thomasuster
thomf00
Level 0
***



View Profile WWW
« Reply #11 on: January 25, 2014, 12:10:49 pm »

Tons of Tile Sheets
Packing pixels in Pakka Pets, lazy loading is the best

Pakka Pets let's you customize your pet's room to your hearts content. You can can change the floor tiles, wall pattern, and all the individual decorations that fill the room. So far we have a little over 100 decorations with more to come. Below are two customized room combinations.



We use to pack all the individual images that make up the room into a few giant textures and then render from them like normal. The first problem with this is that you get a huge frame drop when decompressing the image which makes our loading screen look chuggy. The second bigger problem is that eventually as we add more decorations we're going to run out of space.

The solution is pretty straight forward, but it was a little daunting.

1. Dynamically create a 2048x2048 texture and load it into memory

2. Embed the decorations in individual 1024x1024 textures



3. Lazy load/paste the individual decorations into the dynamic 2048x2048 texture.



There was also some edge cases in reloading the game and the decorating UI, but it's all beautiful and working now!
« Last Edit: February 05, 2014, 09:53:57 am by thomf00 » Logged

Twitter @thomasuster
snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #12 on: January 29, 2014, 03:05:33 pm »

Hey everyone! I'm the Game designer & Artist working on Pakka Pets. Sorry for the late introduction- Here's a copy/paste of my intro post to these forums, so you can learn a bit more about me and my past work. After this, I'll be posting more on Pakka Pets, art and more. Hand Metal Left

Introduction Post:
Hey Folks,
I'm Willem Rosenthal, a game designer, artist and new forum-er. I've been a professional in the industry for about 4 years now, but have been designing games since I was a wee child.

Here are my most recent/notable games: (in reverse chronological order!)

TransDimensional
A short 2D satyrical adventure

http://jayisgames.com/games/transdimensional/

Realm of the Mad God
A fantasy action bullet-hell shooter MMO

http://www.realmofthemadgod.com/

RGB Warped- free on iPhone & Android
Retro acrade insanity for iPhone & Android

game: www.rgbwarped.com
soundtrack: http://rgbwarped.bandcamp.com/

Pakka Pets
My newest project, Pakka Pets is an 'evolved' Tamagotchi kinda game.
I'm super excited about it and I'd love it if everyone would take a look!

Kickstarter: www.kickstarter.com/projects/1298607829/pakka-pets (with full trailer)
Devblog: http://forums.tigsource.com/index.php?topic=38227.0
« Last Edit: January 29, 2014, 05:46:16 pm by snackycactus » Logged

snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #13 on: January 30, 2014, 02:37:24 pm »

Pakka Pets will officially be partnering with Gamepedia, who will be hosting our official game wiki.

We are super excited to have em! There isn't much up there yet, but once we launch, it'll be full of useful info!
Check it out here: http://pakkapets.gamepedia.com/Pakka_Pets_Wiki
Logged

snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #14 on: January 30, 2014, 11:08:37 pm »



Hey guys, we've hit the one week mark on our Kickstarter! This is crazy nuts exciting for us.
You can check it out here: https://www.kickstarter.com/projects/1298607829/pakka-pets


If you think its cool, please share it with yo' buddies.
Logged

snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #15 on: February 05, 2014, 10:46:51 am »

Hey folks,
I wanted to post a preview of one of our new pets + some Pakka house decoration art I've been working on. Check em' out and let me know what you think!

New pet: Golby



A few of my new decoration designs!



Logged

thomf00
Level 0
***



View Profile WWW
« Reply #16 on: February 10, 2014, 10:47:03 am »

Hello world! I was testing on our low end device and when I was opening the fridge it would drop to 18FPS on one frame.  If you're familiar with how an ES(Entity System) like ASH works, skip this section.


Pakka Pets is written using my own flavor of an Entity System. In an entity system you construct entities which have a collection of components. Components are value objects that logic systems use. Systems iterate entities with required components each frame. For example a Render System iterates entities with both a Bitmap component and a Spatial component.

In my ES we have nodes, a node is a class that defines the collection of components required for a specific logic system. Instead of my systems iterating across entities it iterates on nodes. For example the RenderSystem iterates on RenderNodes.

Whenever an entity adds or removes a component I have to QUICKLY check whether or not an entity is still qualified for logic systems.


Throughout Pakka Pets, including fridge construction, I was using a dynamic factory method called game.make(RenderNode); This method creates an entity for me with all necessary components. I was however constructing it like any other entity.

18 FPS
Make Entity
Observe Entity
Add BitmapComponent
 Invoke node checks
Add SpatialComponent
 Invoke node checks

30 FPS
Make Entity
Add BitmapComponent
Add SpatialComponent
Invoke node checks
Observe Entity

The fix was simple, I can assume the entity is fresh because I'm constructing it in this function. Therefore I can check for node qualifications after all components are added instead of checking after each one.

Logged

Twitter @thomasuster
snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #17 on: February 19, 2014, 02:49:03 pm »

Hey guys, I wanted to share an adorable moment with you all.

I was testing out new build of Pakka Pets, and Lembo was so sleepy that he fell asleep while eating an apple. It was so cute that I just had to share it.

Logged

snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #18 on: March 13, 2014, 05:29:42 pm »

Hey folks! Sorry that it's been a while since our last update- Tom and I have been in full-throttle development mode. This is fantastic for Pakka Pets, but has left us little time for updates and such.

Today I got a chance to work on a few decorations, and I thought you all might be interested in seeing my drawing process. Below is a gif I made of the stages (more or less) I went through in drawing the parking meter for a city-themed room decoration set. If you guys think this is cool/interesting, I'd be happy to post more!

Logged

snackycactus
Level 1
*


YO! Game Design!


View Profile WWW Email
« Reply #19 on: April 15, 2014, 10:44:09 am »

Hey folks! Its been a while since we last updated. We've been VERY busy adding features, pets and more to Pakka Pets. Here is a tiny look at one of the features we just finished called the Pakka Book. It acts as your in-game index of all of the pets in the Pakka World; cataloging them, showing their evolutionary paths and more. You will be filling out the pages as you discover new pets through the game.


Also, here is a look at Seeline's entry in the Pakka Book: (one of our new pets)


Right now we are working on a lot of other super cool features that I hope to share with you soon. We are also starting to work on the soundtrack for Pakka Pets, hopefully we'll have some tunes to share with you soon.

Have an awesome day!!!

- Tom & Willem
Logged

Pages: [1] 2
Print
Jump to:  

Theme orange-lt created by panic