Change adoc to markdown.

This commit is contained in:
John Alanbrook 2023-08-18 05:03:01 +00:00
parent 82f26f0d8c
commit 521566c5b9
3 changed files with 180 additions and 191 deletions

View file

@ -1,89 +1,92 @@
= Yugine Editor # Yugine Editor
The main editor view is made up of objects. Each object can have a The main editor view is made up of objects. Each object can have a
number of components attached to it. When an object is selected, its number of components attached to it. When an object is selected, its
name, position, and list of components are listed. name, position, and list of components are listed.
.Basic controls ## Basic controls
* Ctrl-Z Undo |Ctrl-Z|Undo|
* Ctrl-Shift-Z Redo |Ctrl-Shift-Z|Redo|
* Ctrl-A Select all |Ctrl-A|Select all|
* Ctrl-S Save |Ctrl-S|Save|
* Ctrl-N New |Ctrl-N|New|
* Ctrl-O Open level |Ctrl-O|Open level|
* Ctrl-X Cut |Ctrl-X|Cut|
* Ctrl-C Copy |Ctrl-C|Copy|
* Ctrl-V Paste |Ctrl-V|Paste|
* Alt-O Add level to current level |Alt-O|Add level to current level|
* Alt-A or Alt-P Add a prefab |Alt-A|or Alt-P Add a prefab|
* Ctrl-I Objects on the level |Ctrl-I|Objects on the level|
* Ctrl-E Asset viewer. When on a component like a sprite, serves to select that sprite's texture |Ctrl-E|Asset viewer. When on a component like a sprite, serves to select that sprite's texture|
* Ctrl-[ Downsize grid |Ctrl-[|Downsize grid|
* Ctrl-] Upsize grid |Ctrl-]|Upsize grid|
* Backtick REPL |Backtick|REPL|
* Ctrl-[1-9] to set camera positions |Ctrl-[1-9]|to set camera positions|
* [1-9] to recall camera positions |[1-9]|to recall camera positions|
* 0 Set camera to home view |0|Set camera to home view|
* ESC quit |ESC|quit|
* Alt-1 Normal view |Alt-1|Normal view|
* Alt-2 Wireframe view |Alt-2|Wireframe view|
* Shift-Middle Set editor cursor to mouse position (Cursor affects how objects rotate) |Shift-Middle|Set editor cursor to mouse position (Cursor affects how objects rotate)|
* Shift-Ctrl-Middle Set cursor to object selection |Shift-Ctrl-Middle|Set cursor to object selection|
* Shift-Right Remove cursor |Shift-Right|Remove cursor|
.Editor Mode select ## Editor Mode select
* Alt-F1 Basic mode
* Alt-F2 Brush mode |Alt-F1|Basic mode|
|Alt-F2|Brush mode|
- Clicking will place what is on clipboard - Clicking will place what is on clipboard
.Object controls ## Object controls
* G Translate
* Alt-G Snap objects to cursor
* S Scale
* R Rotate
* Ctrl-P Save object changes to prefab
* Ctrl-shift-P Save object changes as a unique prefab ("Parent")
* Ctrl-shift-T Save object changes to a side prefab ("Type")
* Ctrl-J Bake name to expose to level script
* Alt-J Remove baked name
* Ctrl-Y Show obj chain
* Alt-Y Start prototype explorer
* Ctrl-U Revert object or component to match prototype
* Alt-U Make object unique. If a level, allows setting of internal object position and rotation.
* Ctrl-shift-G Save group as a level
* Arrows Translate 1 px
* Shift-Arrows Translate 10 px
* Tab Select component
* F Zoom to object(s)
* Ctrl-F Focus on a selected sublevel. Edit and save it in place.
* Ctrl-Shift-F Go up one level in the editing chain.
* M Flip horizontally
* Ctrl-M Flip vertically
* Ctrl-D Duplicate
* H Hide
* Ctrl-H Unhide all
* T Lock
* Alt-T Unlock all
* Q Toggle component help
* Ctrl-Shift-Alt-Click Set object center
.Mouse controls |G|Translate|
* Left Select |Alt-G|Snap objects to cursor|
* Middle Quick grab |S|Scale|
* Right Unselect |R|Rotate|
|Ctrl-P|Save object changes to prefab|
|Ctrl-shift-P|Save object changes as a unique prefab ("Parent")|
|Ctrl-shift-T|Save object changes to a side prefab ("Type")|
|Ctrl-J|Bake name to expose to level script|
|Alt-J|Remove baked name|
|Ctrl-Y|Show obj chain|
|Alt-Y|Start prototype explorer|
|Ctrl-U|Revert object or component to match prototype|
|Alt-U|Make object unique. If a level, allows setting of internal object position and rotation.|
|Ctrl-shift-G|Save group as a level|
|Arrows|Translate 1 px|
|Shift-Arrows|Translate 10 px|
|Tab|Select component|
|F|Zoom to object(s)|
|Ctrl-F|Focus on a selected sublevel. Edit and save it in place.|
|Ctrl-Shift-F|Go up one level in the editing chain.|
|M|Flip horizontally|
|Ctrl-M|Flip vertically|
|Ctrl-D|Duplicate|
|H|Hide|
|Ctrl-H|Unhide all|
|T|Lock|
|Alt-T|Unlock all|
|Q|Toggle component help|
|Ctrl-Shift-Alt-Click|Set object center|
.Level controls ## Mouse controls
* Ctrl-L Open level script
.Game controls |Left|Select|
* F1 Debug draw |Middle|Quick grab|
* F2 Config menu |Right|Unselect|
* F3 Show bounding boxes
* F4 Show gizmos ## Level controls
* F5 Start |Ctrl-L|Open level script|
* F6 Pause
* F7 Stop ## Game controls
* F10 Toggle slow motion |F1|Debug draw|
|F2|Config menu|
|F3|Show bounding boxes|
|F4|Show gizmos|
|F5|Start|
|F6|Pause|
|F7|Stop|
|F10|Toggle slow motion|
== Components == Components
Components all have their own set of controls. Many act similar to Components all have their own set of controls. Many act similar to
@ -93,19 +96,19 @@ expected to object grabbing; same with scaling, rotation, and so on.
If a component uses an asset, the asset viewer will serve to pick new If a component uses an asset, the asset viewer will serve to pick new
assets for it. assets for it.
.Spline controls ## Spline controls
* Ctrl-click Add a point |Ctrl-click|Add a point|
* Shift-click remove a point |Shift-click|remove a point|
* +,- Increase or decrease spline segments |+,-|Increase or decrease spline segments|
* Ctrl-+,- Increase or decrease spline degrees. Put this to 1 for the spline to go point to point |Ctrl-+,-|Increase or decrease spline degrees. Put this to 1 for the spline to go point to point|
* Alt-B,V Increase or decrease spline thickness |Alt-B,V|Increase or decrease spline thickness|
.Collider controls .Collider controls
* Alt-S Toggle sensor |Alt-S|Toggle sensor|
== Yugine Programming ## Yugine Programming
.Object functions ### Object functions
* start(): Called when the object is created, before the first update is ran * start(): Called when the object is created, before the first update is ran
* update(dt): Called once per frame * update(dt): Called once per frame
@ -116,7 +119,7 @@ assets for it.
- hit.velocity: Velocity of impact - hit.velocity: Velocity of impact
- hit.normal: Normal of impact - hit.normal: Normal of impact
.Colliders ### Colliders
Colliders visually look different based on their status. Objects can Colliders visually look different based on their status. Objects can
be in one of three states be in one of three states
@ -132,7 +135,7 @@ do not let objects through.
.Input ### Input
Input works by adding functions to an object, and then "controlling" Input works by adding functions to an object, and then "controlling"
them. The format for a function is "input_[key]_[action]". [Action] them. The format for a function is "input_[key]_[action]". [Action]
can be any of can be any of
@ -144,7 +147,7 @@ can be any of
For example, "input_p_pressed()" will be called when p is pressed, and not again For example, "input_p_pressed()" will be called when p is pressed, and not again
until it is released and pressed again. until it is released and pressed again.
.Your game ### Your game
When the engine runs, it executes config.js, and then game.js. A When the engine runs, it executes config.js, and then game.js. A
window should be created in config.js, and custom code for prototypes window should be created in config.js, and custom code for prototypes
@ -152,7 +155,7 @@ should be executed.
game.js is the place to open your first level. game.js is the place to open your first level.
.Levels ### Levels
A level is a collection of objects. A level has a script associated A level is a collection of objects. A level has a script associated
with it. The script is ran when the level is loaded. with it. The script is ran when the level is loaded.

View file

@ -1,4 +1,4 @@
= Yugine # Yugine
The yugine essentially is made of a sequence of levels. Levels can be The yugine essentially is made of a sequence of levels. Levels can be
nested, they can be streamed in, or loaded one at a time. Levels are nested, they can be streamed in, or loaded one at a time. Levels are
@ -10,29 +10,26 @@ loading functions call the script file, as well as the level file. The
level file can be considered to be a container of objects that the level file can be considered to be a container of objects that the
associated script file can access. associated script file can access.
.Game start * Game start
1. Engine scripts
2. config.js
3. game.lvl & game.js
* Engine scripts * Editor
* config.js 1. Engine scripts
* game.lvl & game.js 2. config.js
3. editor.js
.Editor * Editor play
* F5 debug.lvl. Used for custom debug level testing. If doesn't exist, game.lvl is loaded.
* Engine scripts * F6 game.lvl
* config.js * F7 Currently edited level
* editor.js
.Editor play
* F5 debug.lvl
** Used for custom debug level testing. If doesn't exist, game.lvl is loaded.
* F6 game.lvl
* F7 Currently edited level
While playing ... While playing ...
* F7 Stop * F7 Stop
== Level model ## Level model
The game world is made up of objects. Levels are collections of The game world is made up of objects. Levels are collections of
objects. The topmost level is called "World". Objects are spawned into objects. The topmost level is called "World". Objects are spawned into
a specific level. If none are explicitly given, objects are spawned a specific level. If none are explicitly given, objects are spawned
@ -43,110 +40,99 @@ World.level1.enemy1.sprite.path = "brick.png";
To set the image of enemy1 in level 1's sprite. To set the image of enemy1 in level 1's sprite.
.Level functions ### Level functions
,=== |name| description|
name, description |---|---|
|levels| a list of all levels loaded in this one|
|objects| a list of all objects belonging to this level (objects + levels)|
|object_count| objects.length()|
|spawn(type)| creates an object from the supplied type in the level|
|create()| creates an empty level inside of this one|
|loadfile(file)| loads file as a level inside of this one; returns it. Mainly for editor|
|loadlevel(file)| loads file as a level and does running required for gameplay|
|load(level_json)| clears this level and spawns all objects specified in the level_json|
|clear()| kills all objects in this level|
|kill()| cleans up the level and kills it|
levels, a list of all levels loaded in this one ## Objects
objects, a list of all objects belonging to this level (objects + levels)
object_count, objects.length()
spawn(type), creates an object from the supplied type in the level
create(), creates an empty level inside of this one
loadfile(file), loads file as a level inside of this one; returns it. Mainly for editor
loadlevel(file), loads file as a level and does running required for gameplay
load(level_json), clears this level and spawns all objects specified in the level_json
clear(), kills all objects in this level
kill(), cleans up the level and kills it
,===
.Objects
Objects are things that exist in the game world. Objects are things that exist in the game world.
,=== |name| description|
name, description |---|---|
level, the level this object belongs to |level| the level this object belongs to
pos, the global position |pos| the global position|
relpos, the position relative to its level |relpos| the position relative to its level
angle, the global angle angle| the global angle|
relangle, angle relative to its level |relangle| angle relative to its level|
velocity, velocity of the object |velocity| velocity of the object|
angularvelocity, angular velocity of the object |angularvelocity| angular velocity of the object|
alive, true if the object is valid |alive| true if the object is valid|
varname, the variable name of the object (used for friendly naming) |varname| the variable name of the object (used for friendly naming)|
friction, physics attribnute |friction| physics attribnute|
elasticity, physics attribute |elasticity| physics attribute|
flipx, true if the object is flipped on its x axis |flipx| true if the object is flipped on its x axis|
flipy, true if the object is mirrored on its y axis |flipy| true if the object is mirrored on its y axis|
body, the internal gameobject id of the object |body| the internal gameobject id of the object|
controlled, true if the object is controlled by something |controlled| true if the object is controlled by something|
phys, set to dynamic; kinematic; or static; explained below |phys| set to dynamic; kinematic; or static; explained below|
moi, the moment of inertia of the object |moi| the moment of inertia of the object|
mass, mass of the object |mass| mass of the object|
visible, true if the object is visible. Set to false to disable all visible features belonging to it |visible| true if the object is visible. Set to false to disable all visible features belonging to it|
in_air(), true if the object is not on the ground |in_air()| true if the object is not on the ground|
on_ground(), !in_air() |on_ground()| !in_air()|
layer, collision layer for the physics engine |layer| collision layer for the physics engine|
draw_layer, draw order. higher numbers draw on top of lower ones |draw_layer| draw order. higher numbers draw on top of lower ones|
scale, change to make the object larger or smaller |scale| change to make the object larger or smaller|
from, the object this object was created from |from| the object this object was created from|
boundingbox, the boundingbox of this object in world dimensions |boundingbox| the boundingbox of this object in world dimensions|
push(vec), push this object each frame with vec velocity |push(vec)| push this object each frame with vec velocity|
width, the boundingbox defined width |width| the boundingbox defined width|
height, the boundingbox defined height |height| the boundingbox defined height|
kill, destroy the object |kill| destroy the object|
stop, ??? |stop| ???|
world2this(pos), return the pos in world coordinates to relative this object |world2this(pos)| return the pos in world coordinates to relative this object|
this2world(pos), return the pos in this coordinates relative to the world |this2world(pos)| return the pos in this coordinates relative to the world|
make(props, level), instantiate an object based on this, with additional props, in level |make(props, level)| instantiate an object based on this, with additional props, in level|
,===
.Editor related object features ## Editor related object features
,===
gizmo, path to an image to draw in editor mode
,===
.Functions for object control |gizmo| path to an image to draw in editor mode|
,===
clone(name; ext), create a copy of this object and extend it with ext; does not spawn
instadup(), create an exact duplicate of this object in the World
revert(), remove everything that makes the object unique; make it exactly like what it was spawned from
,===
.Physics ## Functions for object control
|clone(name; ext)| create a copy of this object and extend it with ext; does not spawn|
|instadup()| create an exact duplicate of this object in the World|
|revert()| remove everything that makes the object unique; make it exactly like what it was spawned from|
## Physics
All objects belong to the physics engine, but may be totally ignored by it. All objects belong to the physics engine, but may be totally ignored by it.
,=== |static| does not and will not move|
static, does not and will not move |dynamic| moves under the auspices of the physics engine|
dynamic, moves under the auspices of the physics engine |kinematic| moves under the auspices of the player or other control mechanism|
kinematic, moves under the auspices of the player or other control mechanism
,===
Physics properties work as such Physics properties work as such
,===
mass, affects how much a given force will move an object
elasticity, affects momentum loss on collisions; multiplicative between two objects for each collision; 1 for no loss; 0 for total stoppage; >1 for a chaotic increasing entropy simulation
friction, affects momentum loss when rubbing against another surface; multiplicative between the two objects
,===
.Textures & images |mass| affects how much a given force will move an object|
|elasticity| affects momentum loss on collisions; multiplicative between two objects for each collision; 1 for no loss; 0 for total stoppage; >1 for a chaotic increasing entropy simulation|
|friction| affects momentum loss when rubbing against another surface; multiplicative between the two objects|
## Textures & images
A sprite is a display of a specific texture in the game world. The A sprite is a display of a specific texture in the game world. The
underlying texture has values associated with it, like how it should underlying texture has values associated with it, like how it should
be rendered: is it a sprite, is it a texture, does it have mipmaps, be rendered: is it a sprite, is it a texture, does it have mipmaps,
etc. Textures are all file based, and are only accessed through the etc. Textures are all file based, and are only accessed through the
explicit path to their associated image file. explicit path to their associated image file.
.Finding & Addressing Objects ## Finding & Addressing Objects
.Editor & Debugging ## Editor & Debugging
Although intertwined, debugging functions and the editor are separate entities. Although intertwined, debugging functions and the editor are separate entities.
..Debugging ### Debugging
Debugging functions are mapped to the F buttons, and are always available during gameplay in a debug build. Pressing the F button toggles the feature; pressing it with ALT shows a legend for that feature; pressing it with CTRL shows additional info Debugging functions are mapped to the F buttons, and are always available during gameplay in a debug build. Pressing the F button toggles the feature; pressing it with ALT shows a legend for that feature; pressing it with CTRL shows additional info
,=== |F1| Draw physics info|
F1, Draw physics info |F3| Draw bounding boxes|
F3, Draw bounding boxes |F12| Drawing gui debugging info|
F12, Drawing gui debugging info
,===

View file

@ -1,4 +1,4 @@
.Yugine video playing # Yugine video playing
Yugine plays the open source MPEG-TS muxer, using MPEG1 video and MP2 audio. Yugine plays the open source MPEG-TS muxer, using MPEG1 video and MP2 audio.