Diversions
 Pixel Joint Forum : The Lounge : Diversions
Message Icon Topic: [NOT]5734L3R - A community driven project Post Reply Post New Topic
Author Message
Yanrishatum
Midshipman
Midshipman
Avatar

Joined: 19 January 2016
Online Status: Offline
Posts: 21
Quote Yanrishatum Replybullet Topic: [NOT]5734L3R - A community driven project
    Posted: 24 July 2014 at 3:13pm

Hello, I'm Soup, and I'm developing a small game with codename [NOT]5734L3R.
In first of all, I'm asking you, guys, DO NOT tell about this project to Winged Doom (original author of 5734L3R project). I already have his permission to do with this title anything I want, but he do not know, that I work on this project currently, and this is must be surprise to him, when he'll be ready to start work on 5734L3R project. Seriously, I don't want him to know about this project.
Okay, let's begin.
Why "Community driven project"?
That because I'm offering to you, yes you, to join this project as level designer. That's pretty easy. You only need a Tiled editor, any graphics editor and fantasy.
Currently there almost nothing to see, but please, if you want any feature included in the game, suggest them, and I'm mostly possible include it.
Note, that project is exploration-based, and any player-harming objects will not be included.

Current project specs
Version: 0.0.2
Objects:
- Any object
Tiled properties:
Any property with "g_" in start will be loaded as graphic. Syntax: g_<name> -> <path_to_image>. Sample: g_sprite -> img/objects/box.png
Note, that g_sprite will be used as main sprite for generic objects which don't have special graphics in settings file. Otherwise will be used graphic, that used in tileset (16x16 tile).

Any property with "ga_" in start will determines an animation for graphic. In property name after ":" symbol you determine an animation name. In value, you have to show that animation is looped (true or false) and write frame-delay pairs. Syntax: ga_<graphic_name>:<animation_name> -> <looped>:<frame-delay pairs>. Sample: ga_g_sprite:idle -> true:0,0.1,1,0.1

Any property with "gs_" in start will determine setting for graphic. You can set next values:
animation:String - an current animation of graphic
visible:Boolean - is graphic is hidden
flipped:Boolean - is graphic flipped horizontally
upsided:Boolean - is graphic flipped vertically
playing:Boolean - is graphic will currently play animation
red, green, blue, alpha:Number[0-1] - coloring tints.
x,y:Number - x/y position of graphic
Syntax is similiar to ga_: gs_<graphic_name>:<paramter> -> <value>. Sample: gs_g_sprite:playing -> true

Scripting methods:
Since 0.0.2:
animate(toX:Float, toY:Float, speed:Float, ease:EaseFunction = null, callback:Void->Void = null):Void
 Moves object to selected position. Description:
 speed - speed of motion in pixels per second.
 ease - easing function of motion. All easing function can be accessed via Ease class (@See Ease.hx for available easings). Cheat sheet for easing functions.
 callback - Void->Void method called after animation end.
hide(duration:Float = 0, ease:EaseFunction = null, callback:Void->Void):Void;
show(duration:Float = 0, ease:EaseFunction = null, callback:Void->Void):Void;
 Shows and hides object.
 duration - Duration of fading in/out. By default it's just hide object.
 ease - easing function for fading.
 callback - function called after hiding/showing.
pos(x:Float, y:Float):Void
 Sets position of object

- Player
Player model are recolored, to empharize, that this is not original 5734L3R.
No Tiled properties.

- Pushable object
This object used to all types of objects by default, if to object class do not set.

- Cutscene object (basic implementation)
Almost nothing to see there at the moment, just static object
Tiled properties:
hidden - if have this property, will be hidden at start. Can be changed by scripts via visible property.

- Interactive terminal object
Player can interact with them by pressing S key.
Will try to start "on" animation, when activated. When deactivated, tries to use "idle" animation, otherwise "default" (plays once, includes all frames of graphic)
Tiled properties:
interact_time - number in seconds, how long player will be stay near terminal "activating it". By default it's 1 second.
one_time - if has this property, terminal can be activated only once.
start - path to script, which will be activated at begin of interaction.
end - path to script, which will be activated at end of interation;
locked_time - Default lock time is 0.5 seconds. When terminal is locked, player can't interact with it. (since v0.0.2)

- Gravity reversor
Reverses gravity to any entity, that hits him.
No tiled properties

- Exit object
Provides transiting from level to level.
Tiled properties:
eixt - Name of level and exit, to which that exit points. Example: exit -> lonelyRoom:exit

Since v0.0.2:
- Conveyor object
Pushes all moveable objects to right or left. On map must be placed left part of conveyor and it's size must be set in object properties by "size" property. Minimum size of conveyor is 2.
Tiled properties:
 size - Size of conveyor in tiles.
 push_speed - Float, strength of pushing speed in pixels-per-second. Default = 16
 direction - right or left - direction of conveyor. Default - left
Scipring vars:
 direction:String - left or right. For manual change of direction.
 pushSpeed:Float - pushing speed.

- Trigger object
They can be defined with geometry tools of Tiled. Now supported only Rectangle and Polygon trigger with some restrictions. Polygon hitbox does not work with Pixel-perfect hitboxes.
In scripts, you can access entity, that activated trigger by "target" variable.
Tiled properties:
 target - name of group, which activates trigger. Default is "player". Possible values:
   pushable - any pushable objects.
   player - player object.
   object - any other object.
   cutsceneObject - any cutsceneObject
   interactiveObject - interactive terminals.
   triggerObject - other triggers
 target_name - name of exact entity, which will activate trigger. Default is null.
 first - Script path, which will be activated in very first activation of trigger.
 first_leave - Script path, which will be activated in first activation after object leaves trigger.
 enter - Script path, which wlll be activated every time trigger activated (include first time)
 leave - Script path, which will be activated every time trigger deactivated (include first time)
Scripting vars:
 target - same as target property.
 targetName - same sa target_name peropery.
 first - same as first property.
 firstLeave - same as first_leave property.
 enter - same as enter property.
 leave - same as leave property.
 activations - counter of activations. Can be resetted by setting value to 0.

Other features:
- Scripting engine
Function and variables available:
Constants - constants class. Now contains GRAVITY (Point, x/y) and DEFAULT_OBJECT
setTimeout(function, delay) - takes function and delay in seconds, and calls it in that time.
game - GameScene object. @See Scene.hx to functions available.
Ease - Easing functions (@See Ease.hx for available easings). Cheat sheet for easing functions.
SoundManager - Main sound engine manager. See SoundManager description below for available methods.
You can access other entities by game.getInstance(name). Name can be set in Tiled.
Possible scipring triggers:
Interactive terminals.
Trigger objects.
"start" property in Tiled level properties. Activates every time, when user enters level
"first" property in Tiled level properties. Activates only once, when player first enters the level.

- Decals
You can add to any tile animated decal. Just add to Tile properties in Tiled next property: decal -> path_to_decal
I'm not tested non 16x16 decals, results may be unexpected.

- Pixel-perfect level collider
Mark tile layer as collider, by setting in properties collide -> 1

- Non-gif file animations.
For those, who don't want use .gif files as animation sets or want full color palette/alpha channel.
Add .anim file with framed png file. e.g. door.png and door.anim
Also you can define multiple animations in single .anim file. That's pretty useful, when you need custom animated graphics.
Anim file have bigger priority, than .gif animation.
Syntax:
w/width - width of single frame
h/height - height of single frame
ratetype - type of framerate format. ms - milliseconds (1 second = 1000 milliseconds), ds - deciseconds (or so, I don't remember word, 1 second = 100 deciseconds). By default it s - seconds.
framerate - framerate of animation. But every frame can have it's own delay.
looped - true/false, sets selected animation looped or not. (since v0.0.2)
aniamtion - sets selected animation. At begin, selected animation is "default".
index[:delay] - defines animation frame. Delay are optional, you can add, or not add this.
Example:
w: 100
h: 100
reatetype: ds
framerate: 2
0
2
1:0.5
animation: idle
0
4
3
2:0.1

- SoundManager (since v0.0.2).
Responsible for sound and music.
Place all sound files to assets/sounds/
Use .ogg files for music, and .wav for SFX.
You can set level theme, by setting "music" property in level properties with path to .ogg file.
Scripting methods:
 playMusic(pathToMusic:String):Void; - Plays selected music.
 stopMusic():Void; - imiddiatly stop music.
 setMusicVolume(volume:Float):Void - sets volume of music.
 setSFXVolume(volume:Float):Void - sets volume of SFX's.
 playSFX(pathToSFX:String):SoundEffect - plays selected SFX at all level, and returns sound effect.
 playSFXAt(pathToSFX:String, x:Float, y:Float, radius:Float):SoundEffect - plays selected SFX at selected location and hearing radius, and returns sounds effect.

Other:
Positions of objects on Objects Tileset:
From 1-1 to 4-1: Exit objects.
5-1: CutsceneObject
6-1: IneractiveObject
6-2: ConveyorObject
5-7: Reversor up
12-7: Reversor down

TODO list:
- More objects
- More scripting features
- More complex cutscene objects.
- SoundManager: stopMusicFade(time:Float):Void for smooth fading out of music.

Grand finale
And finaly, there is the current build of my project. Click:
And for inspiration.

gamedev.ru topic: Forum
Pixeljoint topic: Forum

P.S. Sorry for my english. :)

Edited by Yanrishatum - 26 July 2014 at 10:35am
IP IP Logged
jalonso
Admiral
Admiral
Avatar

Joined: 29 November 2022
Online Status: Offline
Posts: 13537
Quote jalonso Replybullet Posted: 24 July 2014 at 3:58pm
His gallery winged doom
IP IP Logged
Yanrishatum
Midshipman
Midshipman
Avatar

Joined: 19 January 2016
Online Status: Offline
Posts: 21
Quote Yanrishatum Replybullet Posted: 26 July 2014 at 1:37am
Updated project to v0.0.2.

Changelog:
Version 0.0.2
- Added advenced .anim files. Now user can define multiple animation in one .anim file.
Now default selected animation is "default".
Added command: looped:<true/false> - sets current selected animation looped.
Added command: aniamtion:<animation_name> - set selected animation to this animation. All next frames definitions will be added to it.
- Added SoundManager.
Add "music" property in Tiled with path for .ogg file, to play music on level. Use .ogg for music, and .wav for SFX. .mp3 does not supported.
SoundManager is available in scripts.
SoundManager methods:
 playMusic(pathToMusic:String):Void; - Plays selected music.
 stopMusic():Void; - imiddiatly stop music.
 setMusicVolume(volume:Float):Void - sets volume of music.
 setSFXVolume(volume:Float):Void - sets volume of SFX's.
 playSFX(pathToSFX:String):SoundEffect - plays selected SFX at all level, and returns sound effect.
 playSFXAt(pathToSFX:String, x:Float, y:Float, radius:Float):SoundEffect - plays selected SFX at selected location and hearing radius, and returns sounds effect.
SoundEffect methods and vars:
 stop():Void; - immidiatly stops playing. (callback will be called)
 var completeCallback - Void->Void callback for scripts to be called after SFX completely played.
- Added locked_time parameter to interactive terminals. Default lock time is 0.5 seconds. When terminal is locked, player can't interact with it.
- Added weight to pushable objects. They now affects player speed relative to size of object.
- Added animate method to CutsceneObject. Moves object to selected position. Description:
 animate(toX:Float, toY:Float, speed:Float, ease:EaseFunction = null, callback:Void->Void = null):Void
 speed - speed of motion in pixels per second.
 ease - easing function of motion. All easing function can be accessed via Ease class (@See Ease.hx for available easings). Cheat sheet for easing functions.
 callback - Void->Void method called after animation end.
- Added hide and show methods to CutsceneObject. Hides and shows object. Description:
 hide/show(duration:Float = 0, ease:EaseFunction = null, callback:Void->Void):Void;
 duration - Duration of fading in/out. By default it's just hide object.
 ease - easing function for fading.
 callback - function called after hiding/showing.
- Added pos method to CutsceneObject. Imiddiatly sets position of object. Description:
 pos(x:Float, y:Float):Void
- Added ConveyorObject. Pushes all moveable objects to right or left. On map must be placed left part of conveyor and it's size must be set in object properties by "size" property. Minimum size of conveyor is 2.
Tiled properties:
 size - Size of conveyor in tiles.
 push_speed - Float, strength of pushing speed in pixels-per-second. Default = 16
 direction - right or left - direction of conveyor. Default - left
Scipring vars:
 direction:String - left or right. For manual change of direction.
 pushSpeed:Float - pushing speed.
- Added "start" property to Tiled level properties. Use it by providing script path, which will be executed at every entering of level.
- Added "first" property to Tiled level properties. Use it by providing script path, which will be executed at first entering of level.
- Added TriggerObject. They can be defined with geometry tools of Tiled. Now supported only Rectangle and Polygon trigger with some restrictions. Polygon hitbox does not work with Pixel-perfect hitboxes.
Tiled properties:
 target - name of group, which activates trigger. Default is "player". Possible values:
   pushable - any pushable objects.
   player - player object.
   object - any other object.
   cutsceneObject - any cutsceneObject
   interactiveObject - interactive terminals.
   triggerObject - other triggers
 target_name - name of exact entity, which will activate trigger. Default is null.
 first - Script path, which will be activated in very first activation of trigger.
 first_leave - Script path, which will be activated in first activation after object leaves trigger.
 enter - Script path, which wlll be activated every time trigger activated (include first time)
 leave - Script path, which will be activated every time trigger deactivated (include first time)
Scripting vars:
 target - same as target property.
 targetName - same sa target_name peropery.
 first - same as first property.
 firstLeave - same as first_leave property.
 enter - same as enter property.
 leave - same as leave property.
 activations - counter of activations. Can be resetted by setting value to 0.
- Rebased all methods of CutsceneObject to GameObject. Now this methods available for any entity. CutsceneObject now represent inert object without collisions.
- Basic initialization now going in separate Thread.
IP IP Logged
Post Reply Post New Topic
Printable version Printable version

Forum Jump
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot delete your posts in this forum
You cannot edit your posts in this forum
You cannot create polls in this forum
You cannot vote in polls in this forum