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 - Hectate

Pages: 1 2 3 4 5
Suggestion Archives / Code mode "block" insertion
« on: December 16, 2014, 03:28:38 pm »
As I have been using code mode a lot recently for the metroid generator, an idea recently occurred to me. How difficult would it be to have code insertion in it? What I imagine is pressing a hot key or right click to trigger a version of the design mode block adder context menu. Selecting from this list (navigation with arrow keys or other hotkeys would be nice) would insert the selected block's code at the cursor. Kind of a marriage between the IDE code completion and design mode...

Journals / Metroid Generator: Hectate's adventures in PCG (offline)
« on: November 16, 2014, 01:41:13 pm »
So with the recent ProcJam and playing some Ghost Song Beta I happened upon the idea of creating a procedurally-built Metroid game. This journal is to document my attempts in that vein.

The approach I'm using is based on the concept of Lock and Keys to arrange rooms in a logical manner to support player progression.

So far, what I've done is build an initial "world map" generator. Note that this is the overall map generation; it's purpose is to decide the location of each room and some settings that will impact them later on. The actual content of each room is irrelevant at this point, which is why the view is rather abstract so far. Later on, what you are seeing now could be used to build a minimap, but will otherwise be completely hidden from the player.
See it in action here.
Press Enter to regenerate the map. Each character (numbers, letters) shows the relative position and size of the room using that character as it's identifier.

Right now the algorithm is relatively simple. Starting at the top center, rooms are generated in a method of "randomly pick left or right" then "down", repeat; building a chain that winds downward end-to-end. The length of each room varies randomly, with vertical rooms running shorter on average than horizontal ones. This is done in an attempt to hopefully build up layers of horizontal rooms.

Future work will be to have the algorithm build up branches instead of just a chain of rooms. This will be done by going back to previously generated rooms and branching off them. This will require some awareness of existing rooms, both to avoid overlap (which is not possible in the current setup) as well as to build cross-connections.
I also want to include occasional (1 or 2 per map) large vertical shafts to act as a hub for horizontal branches. These would need to be inserted early in the process, perhaps independently.

Remember, right now this is just a way of building a world by slotting empty rooms into it where space permits. Later on, each of these rooms will also be generated, with the appropriate content and connections to other rooms. That will be it's own kind of fun. :)

Ludum Dare 30 / Ludum Dare Theme is "Connected Worlds"
« on: August 22, 2014, 06:03:38 pm »

Ludum Dare 30 / Theme Predictions
« on: August 21, 2014, 06:59:31 am »
I thought it would be amusing to parse the results of the first four rounds of voting and see if any trends stood out. Feel free to join me in predicting what the final theme will be this time!

Round 1 Themes
There are 6 themes from Round 1 in the Final Round. Most interestingly, "Connected Worlds" from Round 1 is the strongest theme of all; both in it's own round and compared to other rounds. Additionally, there are five other Round 1 themes in the Final Round which it already "beat". Thus, the following final themes are not likely to be picked:
  • Day and Night
  • Break The Rules
  • Do No Harm
  • No One Can See You
  • You Must Leave It Behind
Round 2
The 6 themes from Round 2 are all very closely aligned with no clear winner. That said, included in this bunch are the bottom-most voted themes of the Final Round. Thus, we are not likely to see the following themes win.
  • Lost In Space
  • Randomly Generated
Round 3
There are 6 themes from Round 3 also. Of this bunch, "Don't Stop Moving" is the strongest contender (although it's still 8% behind "Connected Worlds"). Round 3 also has two of the lowest scoring final themes that we are not likely to see win.
  • Alchemy
  • Strength In Numbers
Round 4
There are only 2 themes from Round 4 that made the Final cut. Of these, "You're Not Supposed To Be Here" is clearly ahead of the other. I believe we can eliminate one more theme from the potential winners:
  • Fortress

Final Round
This leaves us with our short-list of 10. Out of those themes, "Connected Worlds" is still the strongest contender. However, voting has always wildly shifted during the final round. It appears that the first four rounds typically show results based on "absolute" strength of the theme. That is to say; each theme is voted on it's own merits and not compared to the other themes.
During the Final Round, however, voters are aware that one of the themes in front of them will be the theme and begin comparing the relative desirability of each theme. This results in significant variation to the score of each theme when compared to results from the first voting rounds.

Regardless, one theme still stands well above the others in how well it scored. "Connected Worlds" has the highest chance of winning. That said, if it is not, the relative strength of Round 1's themes means that (even though I cut it from my short-list) one of those has a higher chance of winning over any other round's themes - if "Connected Worlds" does not.

Dialog Extension / Dialogue about Dialogues!
« on: May 22, 2014, 06:10:14 am »
I thought I'd share this interesting post here, since it seemed at least a little relevant.

Completed / Camera Viewer for Scene Designer
« on: May 05, 2014, 03:31:08 pm »
When reading ttpete's topic about his scenes, it occurred to me that I'd heard similar things before; that users would like to have a Scene Designer viewing mode that matches the in-game camera. Obviously the Scene Designer's view right now is optimized for creating and editing scenes; you want as much of the scene visible as possible typically. However a view-mode that emulates the in-game camera (can we steal the code from the engine itself and convert it to work in the Scene Designer?) would be good. Obviously users would lose that wider view usually used for editing, but the primary goal here is to help them do minor tweaks and to see things like parallax.
This could be incredibly difficult, of course, I have no idea ;)

Ludum Dare 29 / LD48 #29 (Hectate's cancelled entry; source available)
« on: April 26, 2014, 05:50:34 am »
Update; "playable" thing uploaded for your amusement. Use the arrow keys and Z.

No time to talk, I'm busy ludumizing!

Journals / Urban Trendsetter (Hectate's dev journal)
« on: April 05, 2014, 02:37:00 pm »
Urban Trendsetter
A jetpacking good time in the city!

Link to current WIP of the game: Play on Stencyl Arcade!

The latest blag.
So I wanted to get back around to doing some game development after having finished a few non-game projects recently. I felt like a platformer was something I hadn't fiddled with in a while, but I didn't want to do "standard" platforming. I was reminded of an old DOS game called Alien Carnage (aka Halloween Harry) where the jetpack was a vital tool to getting around. So the idea of a jetpack-based platformer was born.

I don't have a hard design for this or any real plan. In fact, my 6-year-old daughter has been helping me with it as I was working on this today. For example, my original jetpack fuel was auto-replenishing (2 seconds of fuel that refilled automatically in 2 seconds of time maximum) but she asked me to make the player have to find fuel powerups instead - so that's what is in the current demo. She wants to continue to work on this with me so no doubt the final product will be strongly influenced by her. Maybe she'll even be in it as the main character, hah!

I will continue to post things as I get along. Sorry about the programmer art; it's not pretty yet - oh well.

Update: She demanded something that looks more city-like so I created a new tileset for some buildings; and then she built some buildings with me.

To Do List
* Make a game out of this
* Fix movement to be more jetpacky
* Make a game out of this

Chit-Chat / April Fools Jokes
« on: April 01, 2014, 07:56:02 am »
OK, so everybody start collecting their favorite Aprils Fools jokes. I'm going to document what I've seen so far...

1. Gmail offering to share Selfies as your background theme. Weird.
2. TigerDirect has odd things scattered throughout an email today...
  a. iBuyPower has an "Origamibook" laptop (screens fold out larger?)
  b. K.I.L.E.R. nanobots...
  c. a Rubik's Cube-sized nuclear reactor...
  d. hologlasses shipped by "catapult"
3. RedBox claims to have a new color-changing kiosk; ala mood-ring style.

Imgur Uploader (Toolset Extension)
Works on everything that can run Stencyl and connect to the internet.
Note: you must be using Stencyl 3.1 (or private releases from 3/29/14 or later) for this to work.
Note: not created or endorsed by Imgur.

The Imgur Uploader toolset extension permits Stencyl users to quickly and easily upload screenshots from Stencyl to Imgur. This is extremely handy when you want to share your latest Scene screenshot, or the Behavior that is giving you trouble.

- Upload directly to your own account
- Upload anonymously
- Integrated directly into the "Take Screenshot" features of Stencyl
- Skip the "Save File" dialog - or not, if you want!

Get it
- Download this Extension- (mirror)
Special thanks to Justin for hosting the file.
(How to Install a Toolset Extension)

Once the extension is installed and enabled for your game(s), you can immediately begin using it to upload to Imgur anonymously.

However, it is recommended that you link the extension to your Imgur user account. The steps to do so are as follows:
0. Be logged into Imgur, or be prepared to log into Imgur.
1. In Stencyl, select the menu option Extension > Extension Manager.
2. Select the Options for the Imgur Extension.
3. Within the Options Panel, press the top button labeled "Open Browser".
4. Your default web browser will launch and direct you to Imgur.
5. Imgur will ask you if you want to permit access to your account for this extension. Allow it.
6. Imgur will provide you with a PIN for the extension.
7. Enter this PIN into the Options Panel's "Imgur supplied auth PIN" field. (you can press the "paste from clipboard" button also)
8. Press "Submit PIN"
9. If your PIN was valid, Stencyl will now have the necessary authorizations to access your account.
10. Press the "Save" button on the Options panel to close the panel.

Currently, the only other option besides authorization-related tasks is "Save Image To Disk". If you check this box, the extension will permit you to save the image to a file on your hard drive as normal. If it is unchecked, the Save File box will not appear.
This will permit you to both upload and save a local copy of your image if desired; or avoid the hassle of pressing "Cancel" every time that you don't want to save a local copy.

Whenever you press the Camera button to capture a screenshot in Stencyl, the Imgur extension is triggered. A small window will appear in the top left of your screen.

- Send to Imgur anonymously : this uploads the image anonymously (warning: at this time you will not have access to delete this image, or get the URL again later)
- Send to Imgur account : this uploads to your Imgur account. This button will not be enabled if you have not performed the authorization steps already.
- Copy URL to Clipboard : this copies the image URL to the system clipboard for easy use.

Version History

Released as part of the Polydes collection; v0.5.1 - 3/14/15
-Updated to work with current Stencyl versions

Initial Beta release; v0.5- 3/29/14
-- (later same day) Bug-fix
- upload anonymously
- authorize access to user account process
- upload to user account
- other minor initial features for ease of use (copy/paste, etc)

Chit-Chat / Humans and Serifs
« on: March 07, 2014, 08:43:14 pm »
I have to speak up and point out that everyone would be healthier if we were to abolish serifed fonts. Clearly there has been a long history of using serifs in the annals of typefaces, but it's been proven that they are bad. The additional ink used, as a mere flourish, is wasteful! How many more children will have to suffer with Times New Roman as their only choice for book reports and, God forbid, the books themselves? What was once just lazy work by sloppy engravers has become accepted tradition and now we are saddled with these mockeries of pure glyphs. Everyone needs to be a sansgan like me, it's just a fact. Serifs are unnatural and awkward.

Edit: see notes at the bottom of this post as well.
Sine-wave Distortion for Actors (for Stencyl 3.0, all platforms)
Attached to this post This Pastebin file is an Actor Behavior that allows you to apply a sine-wave warping/distortion effect to the actor's image. Some explanation of the settings available are below, but you will probably have to do some tests to get it to look as desired for your particular scenario.
Note that this is designed to work on single-frame actors and will probably not function as expected with animated (multi-frame) actors' images. Scaling images has been reported to also break the effect.
Eventually, I aim to see about implementing this as a scene behavior to apply to the screen on demand.

As the behavior is now on Pastebin, everyone should be able to add it to their game. To do so, create a new Actor Behavior, in code mode. Name it whatever you like, and the Classname field can be whatever is there already. From inside the code mode behavior editor, paste the entire contents of the pastebin file into the behavior. You need to completely replace everything that was in there previously by default. After it is in there, press the "Refresh Attributes" button.

If you feel compelled, you can still use the PNG image attached as the icon for the behavior.
Note that if you happen to have another behavior with the exact same classname (see line 61) Stencyl will give you errors when you compile. This can happen if you create a duplicate of a code mode behavior, so keep that in mind.

This number attribute sets the "orientation" of the waves. Specifically, setting it to 0 (zero) will result in the behavior modifying rows of pixels in the actor's image. Any other value will cause it to modify columns of pixels of the image. This also means that the waves appear to move toward the top when set to 0, or to the right otherwise.
Note that you can reverse the direction of motion; see the Frameskip attribute below.

This number attribute sets the "direction" of the waves' motion. Specifically, setting it to 0 (zero) will result in the behavior to shift the rows/columns (as determined by the orientation value) in a left/right motion. Any other value will cause the rows/columns to shift in an up/down motion.

A number value that allows you to set the speed of the wave motion. A value of 0 (zero) will result in no motion, although the effect will still be present. Positive values will move the waves "upward" or "rightward" and negative values will move "downward" or "leftward". The further from zero the value, the greater the speed of motion.

This number value sets the width of the wave (technically, peak-to-peak measurement). Counter-intuitively, a value of 0 (zero) represents the entire width or height of the image (motion without distortion). A value of 2 is the maximum recommended, and appears to represent every-other row/column. The ideal value for a particular use will be closely related to the Amplitude value, but values of .01 to .5 seem to produce good results. This value can also be negative, to mirror the effect.

This number value is the maximum number of pixels the wave will shift a row or column. Since the edges of the image are not redrawn or rendered transparent, some degree of transparency padding (equal to the amplitude, for example), or the use of similar colors at the edge, will help avoid visible "stretching" issues with higher amplitude settings.

Special thanks to Irock who provided the request and inspiration for this behavior. Without him it would not exist.
The algorithm for the sine-wave motion itself comes from Earthbound Battle Backgrounds. While the sine-wave formula is well documented, having an existing version to work with greatly simplified the task.
Some of the code from Rob's Set Screenshot To Actor was extremely helpful in accessing the BitmapData and ensuring cross-platform compatibility.
MdotEdot also performed some device testing for the initial version.
Thanks to all the above. Enjoy, everyone!

Quote from: original post
Last night and this morning I was working on a way to distort an Actor's BitmapData in a sine-wave pattern. This is the result. I'll share the behavior eventually once I clean it up some.
For other people:

Name your new Actor Behavior "Distortion", select Code Mode,  and give it a classname of "Design_12_12_Distortion" (from line 62 of the above pastebin file). If you use a different classname, you'll have to alter that line to match instead.

Make sure you click "Refresh Attributes" after pasting the file into the behavior. All other instructions are valid. Let me know if this fails as I'm short on testing time right now.

Extensions / Tile API Instructions
« on: January 26, 2014, 07:13:55 pm »
Using the Tile API in Stencyl 3.x+
version 1.0

General Information
What is it?
The Tile API is an extension that permits users to access advanced functions to manipulate tiles in behaviors and events by using custom blocks.

How do you get it?
The extension is included in the Stencyl download, however it is disabled by default for new games. To enable it, load the your game in Stencyl, open the Settings menu, locate the Extensions tab, and click "Enable" on the Tile API extension. You will have to save, close, and re-open your game for the change to take effect. Once you have done so, the new blocks will appear in the Custom section of the block palette for you to use.

Additional Notes
Tile coordinates are measured in Rows and Columns. It is important to note that a Row coordinate is a measure of the tile's position on the Y axis, while Columns are measured on the X axis. Initially this may appear to be incorrect, but it is necessary to remember that "10 rows" means 10 tiles vertically (rows are stacked), but "10 columns" means 10 tiles horizontally.

Row and column coordinates start at 0 (zero), at the top-left corner of the scene, and increase in number going down (for rows) and to the right (for columns).

Tileset ID numbers can be found by looking at the bottom bar in the Tileset Editor. If a single tile is selected you will also see the Tile ID of the selected tile.

Layer ID numbers can be found in the Scene Designer's Layer box.

For performance reasons, layers are not able to contain tiles unless they did so at the time of compile (from the Scene Designer). Thus, attempting to place a new tile on a non-tile layer will fail.

Individual Block Information

Get (Column/Row) Coordinate Of (number) In Scene
Type: Number

This blocks produces the tilemap coordinate of a position in the scene. To get the coordinate in Rows, use a positive Y value. To get the coordinate in Columns, use a positive X value. Negative values are accepted, however they represent tile coordinates that are out-of-bounds of the scene (to the left of or above the top left corner of the scene).

Set Tile At Row: (number) Col: (number) LayerID: (number) Using TileID: (number) From TilesetID: (number)
Type: Action

This block creates a new tile in the scene at the designated coordinate and layer. The tile to be used is determined by the other two ID's given; the Tileset ID and Tile ID of the desired tile from that tileset. Note that placing a tile into the scene in this manner will create a new collision shape each time if the tile placed has a collision shape assigned to it. Significant numbers of these tiles can incur a performance penalty due to the many collision shapes

Tile Exists At Row: (number) Col: (number) LayerID: (number)
Type: Boolean (True/False)

This block indicates if there is a tile of any kind at the given coordinate and layer.

ID For Tile At Row: (number) Col: (number) LayerID: (number)
Type: Number

This block produces the Tile ID for a tile at the given coordinate and layer. If there is no tile at the position, this block returns the value -1 instead.

Tile Collision Shape Found At Row: (number) Col: (number) LayerID: (number)
Type: Boolean (True/False)

This block indicates if the tile at the given coordinate and layer has a collision shape or not. If a negative value (e.g. -1) is used for the Layer ID, it will check all tile layers automatically. Note that to do so, the block must loop through all tile layers in a scene to check; doing so could incur a performance penalty.

Collision ID For Tile At Row: (number) Col: (number) LayerID: (number)
Type: Number

This block provides the numeric value of the collision ID for a tile at the given coordinate and layer. If there is no collision shape found, it will return a value of -1 instead. This includes if there is no tile, or if a tile exists but lacks a collision shape.

ID For Tile's Tileset At Row: (number) Col: (number) LayerID: (number)
Type: Number

This block provides the numeric value of the Tileset ID of the tile at the given coordinate and layer. If there is no tile found, it will return a value of -1 instead.

Remove Tile At Row: (number) Col: (number) LayerID: (number)
Type: Action

This block will delete the tile at the given coordinate and layer. Note that deleting a tile will only remove it's collision shape from the scene if it was added through the Tile API. If the tile was placed in Scene Designer, the tile's visual image will be removed but the collision shape will remain behind (invisible unless Debug Drawing is enabled).

Example Usage
The following image demonstrates how these blocks might be combined to produce a behavior that places, or removes, a tile in the scene when the player clicks the mouse.

Extension Ideas / Discussion about an Imgur extension
« on: January 18, 2014, 03:14:45 pm »
So after messing around with the Tile API, it got me thinking of extensions but I didn't have an outstanding ideas of things that would be useful. Then earlier, when posting a behavior screenshot to the forum I thought to myself, "Wouldn't it be nice if I could just upload a screenshot from Stencyl directly to my Imgur account and then get the URL to paste into the thread in one simple step?"

And thus, the idea for an Imgur extension to Stencyl was born. I've been wanting to do something outside of my comfort zone for a while, and this feeds that need.

Here's my dilemma though. If I personally create this extension 100% as usual, it has to be registered with Imgur and all usage of it goes against the rate limiting they put in place. Specifically, "Each application can allow approximately 1,250 uploads per day or approximately 12,500 requests per day." Also, if Jon were to integrate it into Stencyl itself, then he would have to pay for API access due to the commercial nature of Stencyl.

So to "get around" that, I thought to myself; "Would it be bad to make anybody wanting to use this extension have to register their own version of it?" So that's the question I'm posting to everyone else. If I develop this extension, should I design it so each individual user can register it under their own Imgur account and provide their own OAuth keys to the software? Obviously, instructions on how to do so would need to be provided.


Pages: 1 2 3 4 5