Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - ffomega

Pages: [1] 2 3 4
Game art & music / Tilesets for Oni-Link Begins: Solarus Edition
« on: June 21, 2017, 06:38:22 am »
In a few of his live streams, Chris has mentioned that he was in need of certain tileset recolors for some of the maps used in Oni-Link begins.  Earlier today, I told him that I would make tilesets for him.  He said in the stream that he only needed the images, and that he would just use an existing data file.  So if any of you wish to use these tilesets for your own maps, you will need to pick an absolute dungeon tileset data file, as well as an absolute dungeon entities data file, and rename them to match the names of the images listed here.

Take note: These WILL NOT be included in my official Hyrule Maps Package, as they are not an official color within A Link to the Past.  My tilesets only include (with the exceptions of ADT 19 & ADT 20) palettes found within Hyrule Magic.  These were also a request by Chris and therefore will have no need to be added to my pack.

The "Purple" tileset was used in "Map18"

The "Dark Teal" tileset was used in "Map26"

Finally, the "Pale Yellow tileset was used in "Map19"

If you notice any inconsistencies, please leave them in this thread and I will do my best to correct them, and as always...

Happy mapping!

Game art & music / Mouhitotsu no Takarajima
« on: April 21, 2017, 10:11:19 pm »
Hey guys! I just found out something really interesting that might benefit Solarus in terms of sprites.

This game,

Mouhitotsu no Takarajima, was originally directed by Eiji Aonuma, and shares a very similar art-style to A Link to the Past.

Here are some screens:

It would appear this game's sprites and tiles may look at home in Solarus.  What do you guys think?

I thought I'd share with you a new type of soldier for Solarus--the Hyrule Castle Tower soldiers.

These soldiers were basically the same as the sword-carrying soldiers scattered all over Hyrule in A Link to the Past, except these were only seen inside Hyrule Castle tower, and unlike their brothers, these guys held their sword up high and had different helmets as well.

I created these sprites because they barely exist outside of single poses from search engines.  The only place I was able to find more than one pose of these guys was on a single sprite sheet on the Spriters' Resource, so I decided to create an entire sheet for Solarus, in ten variants.  The simple soldiers have also been given the new helmets (Again, if you want to use these alongside existing soldiers, create copies of the sprites and scripts, then just assign the new copies to this sheet):

Script-wise, they function exactly like the regular soldiers who carry swords.  You can copy the scripts and assign them to the new sprites, or you may choose to overwrite the ones you already have for a more menacing looking soldier.  The choice is yours!

UPDATE! I added Spear soldiers now.  Again, these sprites use the same scripts as the soldiers do, and can be made from copies of the soldiers scripts, or as replacements to the soldiers:

Development / Mystery of Solarus: Signs and Eggs
« on: March 23, 2017, 02:30:26 am »
I'm looking through the maps in Mystery of Solarus, and noticed that signs are created as NPC entities.  So in order to replicate the sign, being able to show the hero a dialogue, as well as be lifted, thrown, and then destroyed, I was unable to find the code that shows how to do that.

The millasaur eggs in the first dungeon would be kind of perfect for the large black and white rocks littered around hyrule.  I noticed that they were marked as enemy entities, which is fine to be honest.  I do not need the segments that allow them to hatch however.

In the case of the eggs, is it wise to leave it as an enemy or (considering I don't need the enemy to spawn from it), can it be copied and pasted in as a custom entity?

In the case of the signs, where within your game would I be able to find the code that allows me to lift, throw, and destroy NPCs to make the signs work like a destructable that can be spoken to?

Game art & music / {SPRITES] Some recolored enemies from LttP
« on: February 28, 2017, 12:27:48 am »
Just thought I'd showcase the little project I'm working on.  I am making a palette swap of ten variants of all the enemies you could ever fight in a Link to the Past.

So far, I have a Soldier (Sword and Dagger versions), Bubbles (Anti-Faeries), Hard Hat Beetles, and Bari/Biri:

The standard green, blue, and red varieties are there, but I decided to include purple, yellow/gold, teal, navy, orange/fire, brown,copper, and black/gray.

I feel like ten of each is plenty for enemy variants.  I am already working on adding a matching enemy model for each sprite in the sheet for the enemies folder.  The soldiers all use the same sword, as you can see there is only one set of animations for all the soldiers to use.  I figured there would be no reason to make the file any larger by adding more sprites to it.  I picked a universal color for the sword that everyone can wield.

The soldiers are currently the only sheet to include a 'burning' (on fire) animation and a frozen animation.  As I create more sheets, the animations for enemies that can be frozen or burned will be included (for instance, the Hardhat Beetle can be frozen and burned in LttP, but does not have these animations yet).

Also, in case someone asks, I did use some extra colors for the sprites.  If you look at them they have an additional color to areas of their palette which, I believe, enhances them a bit.  Some of the sprites, like the Dagger-wielding solder (called Simple Soldier in the enemy list), has a yellow shield with added colors.  In the original LttP, this shield changed colors depending on the color of the soldier (within the palette).  However the blue and red variants of that soldier were never in the game, so I decided it would be alright to give them all the same color shield.

Development / [QUESTION] Traversable prickles?
« on: February 10, 2017, 02:49:33 pm »
I was wondering why the prickles ground type is not traversable.  In Link to the Past, the Hero could still walk on a prickle ground type and take constant damage at the same time (a perfect example of this is the room inside Dark World's Death Mountain, where you had to travel across an entire room full of spikes to reach the chest at the end, containing the Cane of Byrna.

However in Solarus, when the hero touches a prickle ground type, he comes to a complete stop.  Should future versions of Solarus include traversable prickles, or was this something you decided upon?

Development / [SOLVED] Error: Cannot create pickable treasure
« on: January 31, 2017, 05:58:50 am »
I ran into a small problem with items.  I have moved the items sprite sheet into the items subfolder within the /sprites/entities/ directory, and whenever I load a game, all the pickables are gone, giving me the error message:

"Error: Cannot create pickable treasure 'item': Sprite 'entities/items' has no animation 'item' ".

Should I have left the items.png file in the root directory of 'entities'?  Are pickables hardcoded into always looking for 'items.png' within the 'entities' folder and nowhere else?

Development / [SOLARUS] Tileset Cache and Snapshot Build?
« on: January 30, 2017, 02:02:41 am »
Hey Chris.  We had discussed the tileset performance bug with Solarus, and you asked me to submit a report to github.  I saw in your report that you fixed this bug, now placing tilesets into a cache that allows much faster load time.  Have you made a snapshot build for this yet?  I'd like to be able to test maps faster for compatibility on my tilesets. :)

It's finally compiled!  After several weeks of preparation, and countless hours of dedication, mixed in with a bit of slacking >.<, I have finally compiled all of my tilesets into one massive package!

Download it here!

UPDATE June 23, 2017 - I updated the tilesets for dungeon to include a new pattern.  One pattern that existed in Chris' game Mystery of Solarus DX was added to the tilesets upon his request, and the tileset layouts have been slightly altered.  There have also been some "blank" tiles added to the 'palettes' at the bottom of each tileset.  This has made the tilesets larger in dimension as well as in size, but for the most part the integrity of your maps should not have changed WITH THE EXCEPTION of the Jabu-Jabu tile patterns.  Unfortunately, these were renamed and if you used them in your maps, they will now have a different tile pattern instead of the ones you used.  I do apologize for the inconvenience.

Update 2: I added alpha floors.  Now you can create floor tiles with any color you like.  You are no longer limited to the color scheme of the current tileset!  Please be sure to update your tilesets!!

The package includes:

Full Hyrule
This tileset was the first of my many projects, and ironically, took the fastest to make.  it includes several map patterns, none are named just to clarify.  But there is an endless variety of options for map creation within these tiles.  Create scenic vistas, underwater areas, in-dungeon rooms for temples, and colorful towns, all patterns have an option to cover with snow as well!

Full Hyrule Entities
Make your entities tileset-dependent if you so choose.  For your convenience, a copy of this entities sheet is also located within the sprites/entities folder, in case you do not wish to make tileset-dependent entites.

Overworld Minimap Tileset
Finally, you can create an overworld minimap using one of 6 different color schemes.  All tile patterns within this set have the "Empty" property.  This is because this is for creating mini-maps only, and has no need for traversability for the Hero.  Mix and match tiles, and create a world that marvels players and makes them say:


Absolute Dungeon Tileset
These tilesets have absolute versitility when it comes to creating dungeons.  Each tileset comes with 8 different "wall types", and dozens of floor patterns.  There really is no limit to the amount of imagination you can put into your maps!   Picking your favorites should be no trouble at all!  There is enough variety here that you could use all tilesets within a single game and you may never use the same pattern and color more than two or three times!

Update:  I created 4 new color schemes for the Absolute Dungeon Tilesets for a total of 20 different color schemes!

Absolute Dungeon Entities
Included in the entities folder are small key doors, big key doors, cell locks, blocks, cracked walls and blocks, ice blocks, conveyor belts and currents for streams, collapsable tiles (sadly there are no scripts for them), Floor Switches that blend in with the floors, and Evil tiles!.  Dungeon entities are tileset-dependent, but all 20 varients, INCLUDING one for a minimap tileset, are included!!

Here is a preview of all 20 tilesets:

I want to thank everyone who supported me along the way!  I couldn't have done this without your encouragement and enthusiasm!!  And As Always:


Your scripts / [SCRIPT HELP] Looking to alter generic portable script
« on: January 10, 2017, 12:33:43 am »
So the generic portable script in my opinion has potential.  I'd like to have this script altered slightly, in three ways:

1. generic timed portable - like a bomb.  Self-explanatory, will be destroyed within a set amount of time regardless of whether held or thrown.  Portable will stay on the ground or in the Hero's hand until the timer ends and then destroy itself

2. generic activated portable - A remote bomb that would destroy upon pressing a button.  A super bomnb that will destroy upon pressing a button or striking it with your sword, which triggers a countdown timer.  Once the timer reaches 0, the object is destroyed.

3. generic custom destructable - Like the generic timed portable, except that the object is destroyed upon throwing and landing on the ground, like any other default destructable.  this entity would be great for larger objects such as the 32 x 32 boulders

The thing is this object is originally designed to be thrown and reused once it lands, meaning it will not get destroyed.

How and where would the script need to be changed or added onto for the portabe(s) to work right

I am using a custom entity for the dash rock, which was pulled from Book of Mudora.  I have everything all set up and it's working perfectly for me.  I have created a dynamic tile using the large dirt patch you would find under large rocks in a Link to the past.  I tried using the event entity:on_removed(}, which the description in the API says this event is called when an entity is about to be destroyed.

However the dynamic tile does not appear until the 'destroy' animation completely finished.  I want this dynamic tile to appear During the destroy animation, as it would in a Link to the Past.  I wasn't able to get it to work.

Here is the Dash Rock custom entity (from Book of Mudora), changed just slightly to use my tileset's entities:

Code: Lua
  1. local entity = ...
  2. local game = entity:get_game()
  4. -- Stone pile: a pile of stones which
  5. -- can only be blown apart by a bomb.
  7. function entity:on_created()
  8.   self:set_size(32, 32)
  9.   self:set_origin(16, 29)
  10.   self:set_traversable_by(false)
  11.   self:add_collision_test("touching", function(self, other)
  12.     ex, ey, el = entity:get_position()
  13.     if other:get_type() == "explosion" then
  14.       self:get_sprite():set_animation("destroy")
  15.       sol.timer.start(self, 500, function() self:remove() end)
  16.     elseif other:get_type() == "hero" and game:get_hero():get_state() == "running" then
  17.       self:get_sprite():set_animation("destroy")
  18.       sol.timer.start(self, 500, function() self:remove() end)
  19.     end
  20.   end)
  21. end

Here is the lua script for the current map this entity is located (for the time being):

Code: Lua
  1. local map = ...
  2. local game = map:get_game()
  4. function dash_rock_1:on_removed()
  5.    dash_rock_dirt_1:set_enabled(true)
  6. end

As explained before, the dynamic tile for the dirt patch appears after the 'destroy' animation finishes, and not when it starts, like it should.

Maybe I am not trying hard enough to figure out the exact method needed here xD

Development / [TUTORIAL] Trouble Installing a Tileset?
« on: December 18, 2016, 11:56:22 pm »
Hi guys!  I received a PM today on how to use one of my tilesets in their project, so I figured since I am answering the person's question, I would just make a copy of the tutorial for everyone else who might not know how to install a tileset.

First off, you must make sure you download both the tileset's image as well as the data file that has the same name:

For example, I'll use the Full Hyrule tileset:

Make sure you have these files located on your computer, or you can head to my website and download the tileset from there.

Full Hyrule.tiles.png
Full Hyrule.dat

You may choose to use the entities tileset as well, but in the case of Full Hyrule, it is optional).

Once you have the tileset and data file, find your game's project folder, and open data > tilesets

Place the files here as shown above.  Now open Solarus if you have not already.  Expand the list tree on the left under "tilesets".  You should see the "Full Hyrule.dat" file there.

Right-click it, and select "Add to Quest as Tileset"

A new dialogue box will open, giving you the option to rename the data file and give it a description.  By default, the information should already be filled in...but if not Do NOT make any changes and just press OK.

If everything was done correctly, the tileset will then appear in the directory tree of the quest with a 'windows paint' icon next to it, and it will open in the editor pane to the right

This is the same method you will use for each of my tilesets you wish to add.

Known bugs

I have not yet addressed to Christopho, and that is possibly due to the massive sizes of my tilesets.  There is a bug where, randomly, the tileset will not be picked up by Solarus during an edit.  Additionally, destructables appear to suffer the same bug, as when this bug occurs, random destructables--if not all--go back to their default "red pot" sprite.  Creating new ones on a map whose tileset still seems to appear will result in "default destructables" until Solarus is restarted.

Due to its size I am not sure if Solarus is capable of handling the tileset sometimes and it will often come back with a "Missing Tileset" error.  When looking at the crash report, it showed that the error was within the file "qt5widgits.dll".  Your only option is to save and quit, then restart Solarus if that happens.

If you run into this error, DO NOT click anywhere on your map otherwise Solarus will crash.  Just save and quit, then reopen Solarus.

I will have to make a note to inform Chris about this issue, as he may want me to open a Github bug report.

I hope this helps solve your issue with the tilese(s) you wish to use :)

Bugs & Feature requests / [Request] Data files linked to multiple images
« on: December 08, 2016, 08:40:42 am »
Will future builds of Solarus have a feature to allow multiple images to share a single data file? For example: When creating multiple tilesets, each tileset must have its own data file.  But what if a single data file could be called with different images linked to it? Within the data file itself, a line could be added for each image it references, similar to how the project.db file handles the directory tree of the quest from within Solarus, where it lays out an absolute path to everything contained within the quest.  This could save disk space and clean up the folders that use graphics.  A GUI option could be added like a button that would say something like "Link tileset to data file", and an open dialogue box would appear allowing you to choose the data file the image referred to.  Also if any changes needed to be made to the data file, you only have to edit a single file rather than 10 (in the case of tilesets that used the same exact data within different data files whose only differences were a different colored image.

Game art & music / [TILESET] Awaiting Approval from Christopho
« on: December 07, 2016, 01:02:11 am »
This topic is not only to showcase the brand new updated look to the Absolute Dungeon Tileset, but I am also directly calling upon Christopho for a review on the data file.

It's finished Chris!  I have given every pattern a name (except of course for all map tags and the characters that appear on the tileset).  There was no need to name letters, numbers, and map tags, because they will never be used in-game.  But the remaining tile patterns now have names.  Please review the data file and tell me if this was exactly what you were looking for :)

It took me weeks to name the tile patterns, as I basically had to start from scratch.  I figured it would be way much easier to rename them using a blank data file than to re-position every pattern before renaming.

Download the package here.
Here is one of the tilesets' images:

Here is one of the Entity sheets:

Please take as much time as you need for the review.  I'm in no hurry :3

Your scripts / [Script] Slight change to the Rupee counter
« on: December 03, 2016, 12:59:49 pm »
I thought I'd try poking around in the rupee script and came up with a neat little alternate counter.  You'll need to do the following:

1. download the gray and yellow digits fonts and place them in your /data/fonts folder (RIGHT-CLICK > SAVE AS):

gray digits - yellow digits

Make sure you add the fonts to your game from WITHIN the quest editor as well otherwise your game may not run!!

2. copy this code and paste it into the rupees script located in the /scripts/hud folder:

Code: Lua
  1. -- The money counter shown in the game screen.
  3. local rupees_builder = {}
  5. local rupee_icon_img = sol.surface.create("hud/rupee_icon.png")
  7. function rupees_builder:new(game, config)
  9.   local rupees = {}
  11.   local digits_text = sol.text_surface.create({
  12.     font = "white_digits",
  13.     horizontal_alignment = "left",
  14.     vertical_alignment = "bottom",
  15.   })
  16.   local money_displayed = game:get_money()
  18.   local dst_x, dst_y = config.x, config.y
  20.   function rupees:on_draw(dst_surface)
  22.     local x, y = dst_x, dst_y
  23.     local width, height = dst_surface:get_size()
  24.     if x < 0 then
  25.       x = width + x
  26.     end
  27.     if y < 0 then
  28.       y = height + y
  29.     end
  31.     rupee_icon_img:draw(dst_surface, x , y)
  32.     digits_text:draw(dst_surface, x + 12, y + 8)
  33.   end
  35.   -- Checks whether the view displays correct information
  36.   -- and updates it if necessary.
  37.   local function check()
  39.     local need_rebuild = false
  40.     local money = game:get_money()
  41.     local max_money = game:get_max_money()
  43.     -- Current money.
  44.     if money ~= money_displayed then
  46.       need_rebuild = true
  47.       if money_displayed < money then
  48.         money_displayed = money_displayed + 1
  49.       else
  50.         money_displayed = money_displayed - 1
  51.       end
  53.       if money_displayed == money  -- The final value was just reached.
  54.           or money_displayed % 3 == 0 then  -- Otherwise, play sound "rupee_counter_end" every 3 values.
  56.       end
  57.     end
  59.     if digits_text:get_text() == "" then
  60.       need_rebuild = true
  61.     end
  63.     -- Update the text if something has changed.
  64.     if need_rebuild then
  65.       digits_text:set_text(string.format("%04d", money_displayed))
  67.       -- Show in gray if the 0 is reached.
  68.       if money_displayed  == 0 then
  69.         digits_text:set_font("gray_digits")
  70.       end
  71.       -- Show in yellow if 1/4 of the maximum is reached.
  72.       if money_displayed <= max_money / 4 and money_displayed > 0 then
  73.         digits_text:set_font("yellow_digits")
  74.       end
  75.       -- Show in white if the current is grater than 1/4 of the maximum.
  76.       if money_displayed > max_money / 4 then
  77.         digits_text:set_font("white_digits")
  78.       end
  79.       -- Show in green if the maximum is reached.
  80.       if money_displayed == max_money then
  81.         digits_text:set_font("green_digits")
  82.       end
  84.     end
  86.     return true  -- Repeat the timer.
  87.   end
  89.   -- Periodically check.
  90.   check()
  91.   sol.timer.start(game, 40, check)
  93.   return rupees
  94. end
  96. return rupees_builder

Rupees will display in the following format:

0 rupees = dark gray
1 - {max rupees / 4) - yellow
current rupees greater than {max rupees / 4) - white
max rupees - green

Happy mapping!

Pages: [1] 2 3 4