Be a Supporter!

MageQuest Development Blog

  • 4,002 Views
  • 125 Replies
New Topic Respond to this Topic
mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
MageQuest Development Blog 2008-02-05 01:07:18 Reply

Hey everyone!

I've just begun production on a new flash platformer called MageQuest. It's a very extensive project that will hopefully sit among the greatest flash games to date. It's my goal to make it a "console-like" experience, which I believe Flash is very capable of with enough effort in art, animation, game play and engine design.

The cool part is, I'm going to document every step of its production at my development blog. You can watch each step of implementing a game character, from a rough doodle on a napkin to a sprite in the game. You can see how I build levels, break them into tiles, and compile them into scrolling backgrounds. Everything will be available for reference, including code excerpts from the engine and conceptual examples of how I turn ideas into working game features.

Feel free to leave comments either here or on the blog. I'll announce every new post in this thread and on my NG user page. Check it out now if you like! I just uploaded a rough sketch of level 1, as well as some concept art of the main character.

:-)

thedo12
thedo12
  • Member since: May. 18, 2007
  • Offline.
Forum Stats
Member
Level 04
Blank Slate
Response to MageQuest Development Blog 2008-02-05 01:16:20 Reply

looks like your know what your doing

WolfAkela
WolfAkela
  • Member since: Dec. 19, 2005
  • Offline.
Forum Stats
Member
Level 08
Blank Slate
Response to MageQuest Development Blog 2008-02-05 08:11:27 Reply

I really need to do stuff like these, your documentary pics gave me ideas on how to do it properly, specially the layers, so I won't have to just slap another frame for X object.

Assios
Assios
  • Member since: Nov. 10, 2007
  • Offline.
Forum Stats
Member
Level 26
Programmer
Response to MageQuest Development Blog 2008-02-05 08:18:39 Reply

Wow, this looks really good!

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-05 12:47:43 Reply

Awesome!

I'm glad you guys like it so far. This is all very exciting for me as well. Let me know if you would like me to show you how I implement anything in specific. I'm wearing all the hats on this project, which means I do all the art, animation, level design, programming, etc. (except music production, you can look to MaestroRage for help). I'm always open to answering questions.

NOTE! I am not the authority on ActionScript 3.0 programming. You may find different ways of accomplishing the same features that I explain in my blog (in some cases, they may be better! :-P ). There's more than one way to skin a cat, so if something doesn't make sense or looks awkward, try approaching it from a different angle.

:-)

GustTheASGuy
GustTheASGuy
  • Member since: Nov. 2, 2005
  • Offline.
Forum Stats
Member
Level 08
Blank Slate
Response to MageQuest Development Blog 2008-02-05 13:33:04 Reply

Well let us know if you need any help or advice. :D


BBS Signature
mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-07 02:27:36 Reply

Hey guys, I just added a new post on the dev blog showing all the different revisions the main character went through until finally landing on his current design. Hope you enjoy it!

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-09 19:51:57 Reply

Hey guys,

I just posted a prototype of a tile-based engine for scrolling background artwork. Plus, I added a little lesson as to why tile-based engines are so useful! Check it out and let me know what you think!

:-)

DougyTheFreshmaker
DougyTheFreshmaker
  • Member since: Jul. 30, 2007
  • Offline.
Forum Stats
Member
Level 02
Blank Slate
Response to MageQuest Development Blog 2008-02-09 21:17:55 Reply

Is there some obvious way to post comments on your site that I'm maybe missing or something?

On the tiles, though, the way you've worded it ("loads" and variants thereof), it almost sounds like you're reloading the tiles from files, or recreating/reallocating/etc them each frame--is this actually the case? Tiles would generally be loaded once (prior to beginning the level, maybe) and then just referenced going forward, maybe via a tile manager or something.

Finally, the large tile map timed out repeatedly for me on the computer I'm on (1.6 ghz laptop) due to execution taking > 15 seconds.

Anyway, looks good so far, even this early in development.


We should take care not to make the intellect our god; it has, of course, powerful muscles, but no personality.
Freshmaking
Brainscrape

BBS Signature
willobeen
willobeen
  • Member since: Jan. 4, 2008
  • Offline.
Forum Stats
Member
Level 06
Blank Slate
Response to MageQuest Development Blog 2008-02-09 21:20:22 Reply

is this the "game project" that jeff was mentioning in his blog?

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 17:50:58 Reply

At 2/9/08 09:17 PM, DougyTheFreshmaker wrote: Is there some obvious way to post comments on your site that I'm maybe missing or something?

On the tiles, though, the way you've worded it ("loads" and variants thereof), it almost sounds like you're reloading the tiles from files, or recreating/reallocating/etc them each frame--is this actually the case? Tiles would generally be loaded once (prior to beginning the level, maybe) and then just referenced going forward, maybe via a tile manager or something.

Finally, the large tile map timed out repeatedly for me on the computer I'm on (1.6 ghz laptop) due to execution taking > 15 seconds.

Anyway, looks good so far, even this early in development.

Oh CRAP! You have to login to comment?? No wonder I have no comments on the dev blog. I'll change that setting right now. Though, it looks like I'm asking for SPAM comments (i.e. the reason why I shut off commenting on my previous blog.) Hahah!

Very good question! In my prototype, I use a single tile movieclip from the library. I create a new instance of that tile, color it a shade different than the previous tile, and then add it as a child of the stage's display object. So, you're right, I'm not really loading it from an external file, sorry for the confusion.

Thanks for letting me know about the large map timing out. I'll export a smaller one, maybe 1000x2000 tiles. That should take less time to load.

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 17:57:33 Reply

At 2/9/08 09:20 PM, willobeen wrote: is this the "game project" that jeff was mentioning in his blog?

Hmm, I searched his blog and couldn't find where he said that.

Magical-Mark
Magical-Mark
  • Member since: Mar. 25, 2003
  • Offline.
Forum Stats
Member
Level 13
Blank Slate
Response to MageQuest Development Blog 2008-02-10 18:00:26 Reply

At 2/10/08 05:50 PM, mongoid wrote: Oh CRAP! You have to login to comment?? No wonder I have no comments on the dev blog. I'll change that setting right now. Though, it looks like I'm asking for SPAM comments (i.e. the reason why I shut off commenting on my previous blog.) Hahah!

Not really sure but I think that there are programs that generates random codes that people have to enter to write a comment (without having to register)

Hats!

Oh my god...you really do all the work? Then I guess this won't be out for a long time?

What I have seen on the blog so far is great!

Can't wait to see this!

DougyTheFreshmaker
DougyTheFreshmaker
  • Member since: Jul. 30, 2007
  • Offline.
Forum Stats
Member
Level 02
Blank Slate
Response to MageQuest Development Blog 2008-02-10 18:19:54 Reply

Very good question! In my prototype, I use a single tile movieclip from the library. I create a new instance of that tile, color it a shade different than the previous tile, and then add it as a child of the stage's display object. So, you're right, I'm not really loading it from an external file, sorry for the confusion.

This method essentially suffers from the same issue, really. The idea is that you're using 'new' to allocate new space for each tile that needs to be introduced to the visible map whenever a new tile needs to be added. You'd really want to pre-cache all of the tiles and then just point to the appropriate space when necessary.

I'm actually just going to end it there as I don't know exactly how you're handling things, and the method you may be using might be okay, especially since AS3 runs in a GC'd environment (so fragmentation isn't an issue).

But I will throw in some extremely loose pseudo-code, just in case:

TileManager tiles = new TileManager();

// TileManager::add(graphic:DisplayObject, tile_type:uint):void
tiles.add(bricks_graphic, BRICK_TILE);
tiles.add(grass_graphic, GRASS_TILE);

// ..then when adding tiles to the screen
// TileManager::fetch(tile_type:uint):DisplayObject
var tile_object:DisplayObject = tiles.fetch(tile_map[i][j]);

...ya know? But like I said it's probably not a big deal, even in the worst case scenario, I guess. Eh, who knows.


We should take care not to make the intellect our god; it has, of course, powerful muscles, but no personality.
Freshmaking
Brainscrape

BBS Signature
mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 18:39:25 Reply

At 2/10/08 06:19 PM, DougyTheFreshmaker wrote:
Very good question! In my prototype, I use a single tile movieclip from the library. I create a new instance of that tile, color it a shade different than the previous tile, and then add it as a child of the stage's display object. So, you're right, I'm not really loading it from an external file, sorry for the confusion.
This method essentially suffers from the same issue, really. The idea is that you're using 'new' to allocate new space for each tile that needs to be introduced to the visible map whenever a new tile needs to be added. You'd really want to pre-cache all of the tiles and then just point to the appropriate space when necessary.

I'm actually just going to end it there as I don't know exactly how you're handling things, and the method you may be using might be okay, especially since AS3 runs in a GC'd environment (so fragmentation isn't an issue).

But I will throw in some extremely loose pseudo-code, just in case:

TileManager tiles = new TileManager();

// TileManager::add(graphic:DisplayObject, tile_type:uint):void
tiles.add(bricks_graphic, BRICK_TILE);
tiles.add(grass_graphic, GRASS_TILE);

// ..then when adding tiles to the screen
// TileManager::fetch(tile_type:uint):Displ ayObject
var tile_object:DisplayObject = tiles.fetch(tile_map[i][j]);

...ya know? But like I said it's probably not a big deal, even in the worst case scenario, I guess. Eh, who knows.

Hmm, that's a very nice way of doing it. By the looks of it, you're a C++/C# developer. :-P

You're absolutely right, I'm adding a new tile to the stack every time I place one on the screen. But this is just a prototype. I intend to have a huge bitmap image (PNG most likely to take advantage of the alpha channels) divided into smaller tiles and organized/linked from the FLA's library. The final working version of the tile-based background engine should be up and running soon. :-)

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 18:44:43 Reply

At 2/10/08 06:00 PM, Magical-Mark wrote:
At 2/10/08 05:50 PM, mongoid wrote: Oh CRAP! You have to login to comment?? No wonder I have no comments on the dev blog. I'll change that setting right now. Though, it looks like I'm asking for SPAM comments (i.e. the reason why I shut off commenting on my previous blog.) Hahah!
Not really sure but I think that there are programs that generates random codes that people have to enter to write a comment (without having to register)

Hats!
Oh my god...you really do all the work? Then I guess this won't be out for a long time?

What I have seen on the blog so far is great!

Can't wait to see this!

Haha, yeah. I'm a one man show on this project. Except, of course, for the music. MaestroRage has agreed to do some awesome custom soundtracks with all the new toys and sound libraries he just bought. I recommend checking out his profile!

Magical-Mark
Magical-Mark
  • Member since: Mar. 25, 2003
  • Offline.
Forum Stats
Member
Level 13
Blank Slate
Response to MageQuest Development Blog 2008-02-10 18:57:11 Reply

At 2/10/08 06:44 PM, mongoid wrote: Haha, yeah. I'm a one man show on this project. Except, of course, for the music. MaestroRage has agreed to do some awesome custom soundtracks with all the new toys and sound libraries he just bought. I recommend checking out his profile!

Awesome...I just registered to the blog (mark) and I also subscribed to the RSS (Finally I have something in my google reader (other than Zero Punctuation))

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 19:03:15 Reply

At 2/10/08 06:57 PM, Magical-Mark wrote: Awesome...I just registered to the blog (mark) and I also subscribed to the RSS (Finally I have something in my google reader (other than Zero Punctuation))

WOOT! I have subscribers!

Magical-Mark
Magical-Mark
  • Member since: Mar. 25, 2003
  • Offline.
Forum Stats
Member
Level 13
Blank Slate
Response to MageQuest Development Blog 2008-02-10 19:04:41 Reply

At 2/10/08 07:03 PM, mongoid wrote:
At 2/10/08 06:57 PM, Magical-Mark wrote: Awesome...I just registered to the blog (mark) and I also subscribed to the RSS (Finally I have something in my google reader (other than Zero Punctuation))
WOOT! I have subscribers!

WOOT! yes...I haver better things to do than check out websites all day (I just check my google reader and if that is empty then I do better things (like post on the bbs :D))

thedo12
thedo12
  • Member since: May. 18, 2007
  • Offline.
Forum Stats
Member
Level 04
Blank Slate
Response to MageQuest Development Blog 2008-02-10 19:35:42 Reply

i would left a comment but you have to register,

johnfn
johnfn
  • Member since: Aug. 16, 2003
  • Offline.
Forum Stats
Member
Level 20
Blank Slate
Response to MageQuest Development Blog 2008-02-10 19:37:55 Reply

Heh, this thing looks like it'll be in good fun to watch. Good luck finishing your project.

what is it with people and RPGs nowadays?

[6,11,4,10,2,10,-68,5,15,-68,16,4 ,1,-68,-2,1,15,16,-67].map(function(v){ return String.fromCharCode(v + 100) }).join(""); // updated for web 2.0!

BBS Signature
mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 19:41:32 Reply

At 2/10/08 07:35 PM, thedo12 wrote: i would left a comment but you have to register,

I wouldn't worry about it. I only do this to ensure that I won't receive comment spam (which I HATE!). All that's required is a username and email.

DarkRedemption
DarkRedemption
  • Member since: Jul. 21, 2007
  • Offline.
Forum Stats
Member
Level 05
Blank Slate
Response to MageQuest Development Blog 2008-02-10 21:28:54 Reply

At 2/10/08 07:37 PM, johnfn wrote: Heh, this thing looks like it'll be in good fun to watch. Good luck finishing your project.

what is it with people and RPGs nowadays?

RPG is a lot larger of a genre then most people give it credit for.
The only reason we have the narrow-minded RPG market right now is because everyone seems to take the Role-playing idea, take a final fantasy and/or pokemon game, and shittily remake it for Flash.

The actual possibilities of an RPG are rather broad, as you can easily argue that you are 'role-playing' in many games.

Back to your game, it looks rather interesting, and you obviously know what you're doing. You seem to be rather meticulously organized, and have a good plan laid out ahead of you.

With regards to your tile engine:
Are you planning on loading every level as a bitmap and having your engine divide it into tiles, or loading tiles from your library dynamically (which seems vaguely inefficient to me).

Also, will the collisions be based inside the tile engine or will they be physics-ish based, and the tile engine solely for rendering?

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-10 22:49:37 Reply

At 2/10/08 09:28 PM, DarkRedemption wrote:
At 2/10/08 07:37 PM, johnfn wrote: Heh, this thing looks like it'll be in good fun to watch. Good luck finishing your project.

what is it with people and RPGs nowadays?
RPG is a lot larger of a genre then most people give it credit for.
The only reason we have the narrow-minded RPG market right now is because everyone seems to take the Role-playing idea, take a final fantasy and/or pokemon game, and shittily remake it for Flash.

The actual possibilities of an RPG are rather broad, as you can easily argue that you are 'role-playing' in many games.

Back to your game, it looks rather interesting, and you obviously know what you're doing. You seem to be rather meticulously organized, and have a good plan laid out ahead of you.

With regards to your tile engine:
Are you planning on loading every level as a bitmap and having your engine divide it into tiles, or loading tiles from your library dynamically (which seems vaguely inefficient to me).

Also, will the collisions be based inside the tile engine or will they be physics-ish based, and the tile engine solely for rendering?

Hmmm, inefficient eh? I'd love to hear why you think it would be.

Though by just reading your post you've inspired me to try it another way using sub-matricies of a larger bitmapData object. I'll let you know how it works out. :-)

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-11 02:17:09 Reply

With regards to your tile engine:
Are you planning on loading every level as a bitmap and having your engine divide it into tiles, or loading tiles from your library dynamically (which seems vaguely inefficient to me).

Dude, DarkRedemption. I gotta hand it to you. You really took me aback by saying that my current method was vaguely inefficient. I immediately tried to think of a more optimized way of handling it, which helped me cook up a way of moving around a background image using the bitmap data from a master level background art bitmap.

60% increase in efficiency! Holy crap! I have a 600 x 300 window of artwork moving around at 1% CPU usage.

Thanks for the inspiration! I'll show you all what I've done with I do some testing with overlaying a second level of parallax with alpha channels.

:-D

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-11 14:21:34 Reply

OK! My new scrolling background prototype using BitmapData as opposed to an array of tiles is set! Check it out! I'll have some code for you guys to check out very soon. Got to get to class!

:-)

DarkRedemption
DarkRedemption
  • Member since: Jul. 21, 2007
  • Offline.
Forum Stats
Member
Level 05
Blank Slate
Response to MageQuest Development Blog 2008-02-11 15:52:54 Reply

At 2/11/08 02:17 AM, mongoid wrote:
Dude, DarkRedemption. I gotta hand it to you. You really took me aback by saying that my current method was vaguely inefficient. I immediately tried to think of a more optimized way of handling it, which helped me cook up a way of moving around a background image using the bitmap data from a master level background art bitmap.

60% increase in efficiency! Holy crap! I have a 600 x 300 window of artwork moving around at 1% CPU usage.

Thanks for the inspiration! I'll show you all what I've done with I do some testing with overlaying a second level of parallax with alpha channels.

Glad I was able to provide you with a way to optimize it. I'm pretty sure that the less individual sprites/movieclips you attach to the stage (regardless of how you attach them) the better it will be for performance.

My CPU was running at 40% on the original version of the scroller (standalone), while now it runs at a solid 30% with three applications in the background. Massive improvement here.

I've been playing with a method of using this technique for scrolling as well. I'd be curious to know the gist of your method as soon as I finish up my version.

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-13 02:43:42 Reply

OK, the final prototype of the scrolling bitmap background it up on the dev blog, along with some code for you to tinker with! Let me know what you think!

:-)

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-13 02:59:38 Reply

By the way, if you guys want to be 100% full of epic, Digg my articles! I'm really hoping to get the word out on this dev blog. You can click on the little link below every post. So far it's been very well received!

And if you're feeling even more awesome, show your support by clicking my ads! LOL!

mongoid
mongoid
  • Member since: Jan. 3, 2002
  • Offline.
Forum Stats
Member
Level 09
Blank Slate
Response to MageQuest Development Blog 2008-02-13 11:17:56 Reply

Special thanks to DougytheFreshmaker for showing me a few tidbits of unoptimized code in the last post! I've updated the example given on the dev blog.