diff --git a/wiki/404.html b/wiki/404.html index 4d5ee8e..d3f7b34 100644 --- a/wiki/404.html +++ b/wiki/404.html @@ -3,7 +3,7 @@ - + @@ -27,11 +27,11 @@ - + - + - +
diff --git a/wiki/api/scripts/index.html b/wiki/api/scripts/index.html index 4686c13..363a368 100644 --- a/wiki/api/scripts/index.html +++ b/wiki/api/scripts/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/wiki/basics/characters/index.html b/wiki/basics/characters/index.html index 4b86c07..2a92e07 100644 --- a/wiki/basics/characters/index.html +++ b/wiki/basics/characters/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/wiki/basics/events/index.html b/wiki/basics/events/index.html index 118d4ff..6027408 100644 --- a/wiki/basics/events/index.html +++ b/wiki/basics/events/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
@@ -226,6 +226,13 @@

Each event can have up to 3 values, which are detailed on a case by case basis. The number stepper chooses which slot you are currently on and you can see a list of the events on each slot from the icons to the right of the Event Note.

You can also use the Clear this Slot and Clear all Slots buttons to clear the values and selected events of a single or every slot.

+ +

+ # + Events by difficulty +

+
+

You can name an event JSON using its difficulty to have it load only when you play that certain difficulty. For example, if you name a JSON events-easy.json it will only play those events on Easy.

# diff --git a/wiki/basics/stages/index.html b/wiki/basics/stages/index.html index 57ec31f..c2c444b 100644 --- a/wiki/basics/stages/index.html +++ b/wiki/basics/stages/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
diff --git a/wiki/editors/chart/index.html b/wiki/editors/chart/index.html index 4aff908..64d75ca 100644 --- a/wiki/editors/chart/index.html +++ b/wiki/editors/chart/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
@@ -260,7 +260,7 @@

  • Mute Inst and Voices mute the Instrumental and Vocal tracks
  • BF and Dad Hitsounds enable hitsounds whenever notes are hit by the Player or the Opponent
  • Old Timer changes the timer style. If enabled the current time will be displayed in seconds, as opposed to minutes
  • -
  • Clear Events, Notes and Song clear the notes in the desired track. Clear Song will clear both the Events and Notes.
  • +
  • Clear Events, Notes and Song clear the notes in the desired track. Clear Song will clear both the Events and Notes. These buttons will (auto-save)[/editors/chart/#autosaving] the chart.
  • Controls displays a list of available controls
  • @@ -308,10 +308,10 @@

    - +

    - # - AutoSaving + # + Auto-Saving

    @@ -319,7 +319,7 @@

    -

    If you ever crash or exit the game without saving your chart, you can load it by using the "AutoSaved Charts Station". By opening this SubState from the Chart Editor, you will be able to load one of 5 previously edited charts. THe game auto saves every 5 minutes, as well as every time you press play or clear a chart!

    +

    If you ever crash or exit the game without saving your chart, you can load it by using the "Auto-Saved Charts Station". By opening this SubState from the Chart Editor, you will be able to load one of 5 previously edited charts. The game auto-saves every 5 minutes, as well as every time you play or clear a chart!

    diff --git a/wiki/editors/offset/index.html b/wiki/editors/offset/index.html index afa638a..dbba391 100644 --- a/wiki/editors/offset/index.html +++ b/wiki/editors/offset/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
    diff --git a/wiki/extras/showcase/index.html b/wiki/extras/showcase/index.html index ec2860c..f14c655 100644 --- a/wiki/extras/showcase/index.html +++ b/wiki/extras/showcase/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    diff --git a/wiki/extras/to-do/index.html b/wiki/extras/to-do/index.html index 4bcfbe5..2565ab3 100644 --- a/wiki/extras/to-do/index.html +++ b/wiki/extras/to-do/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    diff --git a/wiki/getting-started/build/index.html b/wiki/getting-started/build/index.html index 7f467e3..6807c53 100644 --- a/wiki/getting-started/build/index.html +++ b/wiki/getting-started/build/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    diff --git a/wiki/getting-started/flags/index.html b/wiki/getting-started/flags/index.html index 3669798..c90de92 100644 --- a/wiki/getting-started/flags/index.html +++ b/wiki/getting-started/flags/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
    diff --git a/wiki/getting-started/source_structure/index.html b/wiki/getting-started/source_structure/index.html index 4832fce..499cb58 100644 --- a/wiki/getting-started/source_structure/index.html +++ b/wiki/getting-started/source_structure/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
    diff --git a/wiki/index.html b/wiki/index.html index dd8d09f..7574c31 100644 --- a/wiki/index.html +++ b/wiki/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    diff --git a/wiki/objects/example_modchart/index.html b/wiki/objects/example_modchart/index.html index c7e6cc8..66c5b41 100644 --- a/wiki/objects/example_modchart/index.html +++ b/wiki/objects/example_modchart/index.html @@ -3,7 +3,7 @@ - + @@ -30,11 +30,11 @@ - + - + - +
    diff --git a/wiki/objects/icons/index.html b/wiki/objects/icons/index.html index 2ccf522..ae6b75a 100644 --- a/wiki/objects/icons/index.html +++ b/wiki/objects/icons/index.html @@ -3,7 +3,7 @@ - + @@ -32,11 +32,11 @@ - + - + - +
    diff --git a/wiki/resources/js/config.js b/wiki/resources/js/config.js index 26c41e1..c79c7b8 100644 --- a/wiki/resources/js/config.js +++ b/wiki/resources/js/config.js @@ -1 +1 @@ -var __DOCS_CONFIG__ = {"id":"N5VPPBRzuf9JxH923276qYQ1CxoA1zs2080","key":"xZnd2no26PuG3R/qWfU/tIVrAJH5JqPuSC2WuYvHo84.Hzat6ys6h3Gr3WettwqD3rXo5ZfAa42Uy6mpE8b+c8gEi5AvvFOYtXjhUguY8LMhpAPeJxxJ5zjb0PXGjDI5KA.118","base":"/","host":"doidoteam.github.io","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"3.6.0.781143360789","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"Home","s":""},{"n":"getting-started","l":"Getting Started","c":false,"o":true,"i":[{"n":"build","l":"Setting up the Engine"},{"n":"flags","l":"Build Flags"},{"n":"source_structure","l":"Source Folder"}],"s":""},{"n":"basics","l":"Modding Basics","c":false,"o":true,"i":[{"n":"characters","l":"Custom Characters"},{"n":"stages","l":"Custom Stages"},{"n":"events","l":"Events"}],"s":""},{"n":"api","l":"API","c":false,"o":true,"i":[{"n":"scripts","l":"Play​State Scripts"}],"s":""},{"n":"editors","l":"Editors","c":false,"o":true,"i":[{"n":"offset","l":"Character Editor"},{"n":"chart","l":"Chart Editor"}],"s":""},{"n":"extras","l":"Extras","c":false,"o":true,"i":[{"n":"showcase","l":"Showcase"},{"n":"to-do","l":"To Do List"}],"s":""}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["k"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false},"resources":{"History_Title_Label":"History","History_ClearLink_Label":"Clear","History_NoHistory_Label":"No history items","API_AccessFilter_Label":"Access","API_ParameterSection_Label":"PARAMETERS","API_SignatureSection_Label":"SIGNATURE","API_CopyHint_Label":"Copy","API_CopyNameHint_Label":"Copy name","API_CopyLinkHint_Label":"Copy link","API_CopiedAckHint_Label":"Copied!","API_MoreOverloads_Label":"more","API_MoreDropdownItems_Label":"More","API_OptionalParameter_Label":"optional","API_DefaultParameterValue_Label":"Default value","API_InheritedFilter_Label":"Inherited","Search_Input_Placeholder":"Search","Toc_Contents_Label":"Contents","Toc_RelatedClasses_Label":"Related Classes","History_JustNowTime_Label":"just now","History_AgoTime_Label":"ago","History_YearTime_Label":"y","History_MonthTime_Label":"mo","History_DayTime_Label":"d","History_HourTime_Label":"h","History_MinuteTime_Label":"m","History_SecondTime_Label":"s"}}; +var __DOCS_CONFIG__ = {"id":"4cfcpTL276Gs0HY/zjNdqe1jzRmrSJtTR7r","key":"VfrF478fJkEeN3SJI7P5GgQEuGqZ2INyjFJWXkbGTSM.cVnngAWW/HN4+TrUAZVQQhWbr0UWTHjXTAI1eUvz/puDfGy1z26eM+qB+kg+EoKQWNf4Gy6+TcZ0tMZjpcHTfw.120","base":"/","host":"doidoteam.github.io","version":"1.0.0","useRelativePaths":true,"documentName":"index.html","appendDocumentName":false,"trailingSlash":true,"preloadSearch":false,"cacheBustingToken":"3.6.0.781143783425","cacheBustingStrategy":"query","sidebarFilterPlaceholder":"Filter","toolbarFilterPlaceholder":"Filter","showSidebarFilter":true,"filterNotFoundMsg":"No member names found containing the query \"{query}\"","maxHistoryItems":15,"homeIcon":"","access":[{"value":"public","label":"Public"},{"value":"protected","label":"Protected"}],"toolbarLinks":[{"id":"fields","label":"Fields"},{"id":"properties","label":"Properties"},{"id":"methods","label":"Methods"},{"id":"events","label":"Events"}],"sidebar":[{"n":"/","l":"Home","s":""},{"n":"getting-started","l":"Getting Started","c":false,"o":true,"i":[{"n":"build","l":"Setting up the Engine"},{"n":"flags","l":"Build Flags"},{"n":"source_structure","l":"Source Folder"}],"s":""},{"n":"basics","l":"Modding Basics","c":false,"o":true,"i":[{"n":"characters","l":"Custom Characters"},{"n":"stages","l":"Custom Stages"},{"n":"events","l":"Events"}],"s":""},{"n":"api","l":"API","c":false,"o":true,"i":[{"n":"scripts","l":"Play​State Scripts"}],"s":""},{"n":"editors","l":"Editors","c":false,"o":true,"i":[{"n":"offset","l":"Character Editor"},{"n":"chart","l":"Chart Editor"}],"s":""},{"n":"extras","l":"Extras","c":false,"o":true,"i":[{"n":"showcase","l":"Showcase"},{"n":"to-do","l":"To Do List"}],"s":""}],"search":{"mode":0,"minChars":2,"maxResults":20,"placeholder":"Search","hotkeys":["k"],"noResultsFoundMsg":"Sorry, no results found.","recognizeLanguages":true,"languages":[0],"preload":false},"resources":{"History_Title_Label":"History","History_ClearLink_Label":"Clear","History_NoHistory_Label":"No history items","API_AccessFilter_Label":"Access","API_ParameterSection_Label":"PARAMETERS","API_SignatureSection_Label":"SIGNATURE","API_CopyHint_Label":"Copy","API_CopyNameHint_Label":"Copy name","API_CopyLinkHint_Label":"Copy link","API_CopiedAckHint_Label":"Copied!","API_MoreOverloads_Label":"more","API_MoreDropdownItems_Label":"More","API_OptionalParameter_Label":"optional","API_DefaultParameterValue_Label":"Default value","API_InheritedFilter_Label":"Inherited","Search_Input_Placeholder":"Search","Toc_Contents_Label":"Contents","Toc_RelatedClasses_Label":"Related Classes","History_JustNowTime_Label":"just now","History_AgoTime_Label":"ago","History_YearTime_Label":"y","History_MonthTime_Label":"mo","History_DayTime_Label":"d","History_HourTime_Label":"h","History_MinuteTime_Label":"m","History_SecondTime_Label":"s"}}; diff --git a/wiki/resources/js/search.json b/wiki/resources/js/search.json index 76a71cb..c08493f 100644 --- a/wiki/resources/js/search.json +++ b/wiki/resources/js/search.json @@ -1 +1 @@ -[[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Home","p":["Welcome to the official FNF: Doido Engine Documentation! Here you can find any information you might need on how to make your own mod in the engine!"]},{"l":"Getting Started","p":["\uD83D\uDE80 How to setup the engine"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Setting up the Engine"},{"l":"Dependencies","p":["All platforms:","git-scm","Haxe (4.3.3 or greater)","Windows Only:","Microsoft Visual Studio Community (Refer to step 3 of setup for installation tutorial)"]},{"l":"First setup","p":["Install git-scm and Haxe","Setup platform","Windows: Run the following commands","Open up any terminal in the engine folder (such as CMD or Powershell) and run the following commands","Build the game","Run the command lime test PLATFORM, where platform is where you are building the engine for (ex: Windows, HTML5, Linux)","First time you build the engine will take longer than usual, so don't worry and be patient!"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Build Flags","p":["There are a couple of Flags you can use when building the engine that can help you in development."]},{"l":"How to use flags","p":["To use flags, simply append them to the end of your lime test PLATFORM command, like this:","If you use VSCode, you can simply select a build preset from the platform list."]},{"l":"List of available flags","p":["-debug can build the game in debug mode. This enables many debug features, such as the FlxDebugger and debugging through VSCode.","-DFREEPLAY and -DMENU launch the game directly in the Freeplay and MainMenu states, respectively. These can't be used together."]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Source Folder","p":["Our Source folder is organized according to what function each .hx file has:","data/ holds important code relating to the engine's core functions and tools, such as Highscore, Timings, Discord and the CrashHandler. You will probably only use this to add Songs or change the Discord Status config.","flixel/ has modified HaxeFlixel code that is optimized for Doido Engine. You probably won't need to use this.","gameObjects/ is where all the objects are stored, such as Characters, Stages, Notes and all the UI. This is something you will use a lot. It has a couple of subfolders specific to the HUD or menus.","shaders/ is where any graphical shaders are stored. Included in the engine is DistantNoteShader, but you might wanna add more, depending on your mod's needs.","states/ and substates/ hold the code for the game's states, such as the PlayState or MainMenuState for states/, and the GameOverSubState or PauseSubState for substates/."]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Custom Characters"},{"l":"Adding your assets","p":["Firstly, place your character in their own folder in assets/images/characters/. You aren't required to make a new folder but it helps organizing so we recommend you do so!","After that, place their icon in assets/images/icons/ with the name icon-YOUR_CHARACTER_NAME.","Every character has a json file that holds their animation offsets, aswell as global, camera and rating positions. These are named after the character (Ex. bf.json) and are located in assets/images/_offsets/. These are made with the engine's Character Editor."]},{"l":"Coding your characters","p":["Code for the characters is handled by Character.hx, which is situated in the gameObjects Source folder. For more info on how the Source folder is structured, click here."]},{"l":"Basic code","p":["To add your new character, you need to add a new case to the switch statement around line 54. Here's the basis on how it works. Feel free to copy this into your code and edit it accordingly."]},{"l":"Animations","p":["The anims array works under this format. You can use this as a reference to add custom animations.","ANIMATION_NAME is what you want to name your animation inside the game","ANIMATION_PREFIX is what your animation is called in it's .xml spritesheet","FRAMERATE is what framerate the animation is gonna play at (we recommend you use 24)","LOOPED decides if the animation should loop when it reaches the end (for singing or other mid-song animations, set this to false)","[FRAMES] is an array of which frames of the animation should be played. Normally you can leave this out but this is useful for GF/speaker type characters."]},{"l":"Other variables","p":["Your character might need other variables to make it work right.","The scale of a character can be changed with scale.set(width,height);","Like other engines, if your character is facing the left (Like BF or Pico), you should set flipX to true.","idleAnims allows you to change which idle animation(s) the character uses. For example, Skid and Pump use [danceLeft, danceRight] to give them their dance. If you have more than one idle anim, you should set quickDancer to true.","antialiasing allows you to disable smoothing on the character, giving them a more \"jagged\" look.","isPixelSprite is used to determine if a character is Pixel Art or not. Use this for characters like Senpai or BF-Pixel","deathChar allows you to set a separate character as a death sprite.","isAnimateAtlas determines if the character uses an Atlas as its format. Sprite format guide is in the works so please be patient!"]},{"l":"Adding your character to the charList","p":["After coding your character, you still need to add it to the engine's internal list. Simply go over to CoolUtil.hx, and add your character's name to the charList() function."]},{"l":"Finalize Character","p":["The final steps to making a character are to edit their offsets and to configure their Health Icon.","Custom Characters Custom Characters"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Custom Stages"},{"l":"Adding your assets","p":["Assets for stages are usually placed in assets/images/backgrounds/, though you are free to place them wherever you want. No specific configuration is necessary for the assets side."]},{"l":"Coding your stages","p":["Code for the characters is handled by Stage.hx, which is situated in the gameObjects Source folder. For more info on how the Source folder is structured, click here."]},{"l":"Example Stage","p":["Here is a simple example stage you can use to make your own. Copy this to the switch statement around line 85.","You can add your own sprites like our example bg, set the positions of each characters and set the defaultCamZoom.","NOTE: Check out the official Flixel documentation for more info on general FlxSprite usage."]},{"l":"Loading Stage","p":["The reloadStageFromSong() function is used to associate stages to songs. You can create an array of stages to be preloaded with the song that can later be changed between without any lag. The LAST stage in the array is the one thats gonna be loaded in last so keep that in mind."]},{"l":"Advanced Stage features"},{"l":"GF Version","p":["You can choose which Character is going in the GF position. By default this is \"gf\" but you can change it to any character you wish. NOTE: If you want to have no GF, you can set her version to \"no-gf\", which is a placeholder empty character."]},{"l":"Foreground Layer","p":["You can choose to render Sprites on a foreground layer (above the characters) by adding the sprite like this:"]},{"l":"Animated Sprites","p":["You can have also have animated sprites, for example:"]},{"l":"stepHit and Update functions","p":["You can set your own code to run on the stepHit (in sync with the song) or Update (constant) functions. There is also a conditional in stepHit that allows you to run a smaller beatHit function. This can be useful for animated sprites, for example. NOTE: Make sure you initialize your variables in the Stage class to do this."]},{"i":"accessing-sprites-from-other-classes-playstate","l":"Accessing Sprites from other classes (PlayState)","p":["You are able to access sprites created in the Stage class from the PlayState or other classes. To do so, you can append stageBuild to the beginning of the sprite, like so:"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Events","p":["FNF: Doido Engine's Event JSONs work in a similar way to Psych Engine's, but there are a few differences. Here's a small guide of them."]},{"l":"Note on JSONs","p":["On FNF: Doido Engine, Events have their own JSON file, and thus will not be saved on the main chart JSON."]},{"l":"Values","p":["Each event can have up to 3 values, which are detailed on a case by case basis. The number stepper chooses which slot you are currently on and you can see a list of the events on each slot from the icons to the right of the Event Note.","You can also use the Clear this Slot and Clear all Slots buttons to clear the values and selected events of a single or every slot."]},{"l":"Adding Custom Events","p":["To create custom events, you simply need to add the Event to the onEventHit() function in PlayState. Then, to use these events, you will also need to add them to the possibleEvents array in the ChartingState class."]},{"l":"Event Icon","p":["While an icon isn't required for an event (there is a default icon that gets used if no icon exists), it helps you with knowing which events are on different slots. To add a custom icon, simply add the icon to images/notes/events/.","NOTE: Icons are named in lowercase with underscores _ replacing spaces."]},{"l":"Preloading Events","p":["Some events might need preloading. To do this, add your preloading code to the preloadEvents() function in PlayState and it will be run for every event of the type in the create() function."]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"PlayState Scripts","p":["FNF: Doido Engine uses HScript-Iris to have user-made scripts that are ran from the Playstate. It is currently developed to make modcharts, but you are also able to do other things using it. Any regular events should be done using JSON events."]},{"l":"Paths","p":["Any scripts in .hxc format placed in a song folder will automatically be loaded, regardless of name.","NOTE: If you wish to use scripts in HTML5, you will have to manually push scripts to the scriptPaths array. (Ex. scriptPaths.push(songs/bopeebo/script.hxc);)"]},{"l":"Functions","p":["The following functions are called from PlayState, which you can use to create scripts. More will be added in the future.","NOTE: create() and update() are both called from the beginning of the functions, while createPost() and updatePost() are called from the end of the function.","You can also create your own functions, as shown here:"]},{"l":"Imports","p":["You can also import Classes from the game. You are able to call most Classes, as long as they are imported somewhere in the code.","NOTE: Currently, the using keyword (Ex. using StringTools) is unavailable due to limitations in HScript Iris. As soon as it gets added you will probably be able to use it in your scripts."]},{"l":"Modcharts"},{"l":"Manipulating notes","p":["To manipulate notes, you can modify the individual strums and the notes will automatically \"lock onto\" them. Here are a couple of fields you can use."]},{"l":"hasModchart","p":["Some modcharts might break when changing Downscroll or Middlescroll in the options. The hasModchart variable allows you to stop the player from changing these options mid-song, to avoid bugs."]},{"l":"Example Modchart","p":["Here's a silly little modchart example, made for Bopeebo Erect. You can use this to base your own modcharts off of.","PlayState Scripts"]},{"l":"Other Examples"},{"l":"Difficulty specific code","p":["To have code run on a specific difficulty, you can detect it with a boolean. Here's an example of how to do this."]},{"l":"Other Uses","p":["For other, simpler events, please checkout the Events guide.","For other possible uses of HScript-Iris, please visit their repository to learn more!","PlayState Scripts"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Character Editor","p":["FNF: Doido Engine has it's own Character Editor, that can configure all the offsets of your characters! Though it might seem intimidating at first, it's very simple to use!"]},{"l":"The Editor","p":["The Characters tab can be used to configure many things about the editor, the character and the ghost. Here is a list of what you can change.","The Character and Ghost dropdowns (!) are used to select which character you are editing or which ghost you are seeing.","The Char FlipX and Ghost FlipX checkboxes let you flip the character or ghost horizontally.","The Playable checkbox lets you select if the character you are editing is Playable or not. If you don't use this correctly your offsets might be wrong in-game. (NOTE: This does not affect the ghost, so you need to set Ghost FlipX separatly)","The Show Ghost checkbox lets you enable or disable the ghost.","The Focus on Character checkbox decides if the camera is currently focusing on the character or not.","The Currently Editing section decides which offset you are currently editing. You can also use the text fields to manually set an offset.","The Save button lets you save your character's JSON file. See Saving your Character section for info"]},{"l":"Controls","p":["Arrow Keys move the selected animation's offset","Holding Shift will increment them by 10","Holding Ctrl will increment them by 100","Middle mouse button will move the camera WITHOUT changing its offset (Check Focus on Character to return it to the offset position)","Scroll Wheel will change the zoom of the camera"]},{"l":"Ghost","p":["Under your character, there exists a slightly transparent version of them called a Ghost. This is meant as a reference for animation offsets, and you can select its animation or even swap them for a completely different character."]},{"l":"Editing Offsets","p":["In any of the next sections, please make sure you select the correct offset before editing."]},{"l":"Animation Offsets","p":["On the upper left corner of the screen, you will find the Animation selector. Simply click on any of the animations on the left to select the character's anim, and on the right to select the ghost's anim."]},{"l":"Global Offsets","p":["Global offset is the overall position of the character in the stage. To help with this we recommend you align the global position with the red cross that's under the character. This way you can do character changes without having to worry about positions being buggy and they will automatically align to any stage you put them in!"]},{"l":"Rating Offsets","p":["Rating offset is the position of the rating sprite when you hit a note as them. This is only able to be seen when you disable the Ratings on HUD option."]},{"l":"Camera Offsets","p":["Camera offset is where the camera is gonna be when your character is focused on in-game. It may be a little hard to set it up from the editor so you can also manually edit the JSON and restart the song from the pause menu to reload."]},{"l":"Saving your Character","p":["After you finish your character, you can press the Save button to export a JSON file, which you should save to assets/images/characters/_offsets/"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Chart Editor","p":["FNF: Doido Engine also features an improved Chart Editor. Most of its features are the same as the legacy 0.2.7 charter so we wont get into as much detail, but there are still a couple of features to note."]},{"l":"The Grid","p":["The grid is the main part of the Chart Edior and where you place notes. Nothing much has changed but there are a set of things that are different."]},{"l":"Controls","p":["Left Mouse Click on a note that's placed to select the note. You can then change its length and type!","Right Mouse Click on a note to delete it.","Scroll Wheel, W or S to move the grid bar","Hold SHIFT to move the grid bar faster","A, D or Scroll Wheel(WHILE HOLDING CTRL) to move between sections","R to reload the current section","Left and Right arrows to change grid snapping","Z and X to change grid zoom","SHIFT+ R to return to the start of the song","SPACE to play/pause the song","ESC to test chart","ENTER to play chart"]},{"l":"Editor Settings","p":["Here's what a handfull of buttons in the Chart Editor do!"]},{"l":"Song","p":["Mute Inst and Voices mute the Instrumental and Vocal tracks","BF and Dad Hitsounds enable hitsounds whenever notes are hit by the Player or the Opponent","Old Timer changes the timer style. If enabled the current time will be displayed in seconds, as opposed to minutes","Clear Events, Notes and Song clear the notes in the desired track. Clear Song will clear both the Events and Notes.","Controls displays a list of available controls"]},{"l":"Section","p":["Copy last and Clear Section copy or clear the desired sections","The Notes? and Events? decide wether the notes or the events are the ones to get copied, cleared, etc...","Swap Section switches the notes between the Player and the Opponent","Duet Section copies the notes from the Player to the Opponent and vice-versa","Invert Dad and BF Side swap the notes for each side (Ex. Left will become Right, Up will become Down, etc...)"]},{"l":"Note","p":["Note Length changes the length of the sustain of the selected note. (Also Q and E)","Note Type opens the Chooser for the Note Type","Convert Note Types lets you mass change the note types of the current section. The dropdown is able to select between Dad Notes and BF Notes."]},{"l":"Events","p":["For events, please check their own page!","Chart Editor"]},{"l":"AutoSaving","p":["If you ever crash or exit the game without saving your chart, you can load it by using the \"AutoSaved Charts Station\". By opening this SubState from the Chart Editor, you will be able to load one of 5 previously edited charts. THe game auto saves every 5 minutes, as well as every time you press play or clear a chart!"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Showcase","p":["You may be wondering, \"What kind of mods can i do with this engine?\". To help you get an idea for what is possible with Doido Engine, check out all these amazing mods that have been done with it!"]},{"l":"Mods running Doido Engine","p":["\uD83D\uDCBF Characteristic Disparity","\uD83D\uDCFC FlxSpriteTest DEMO","\uD83E\uDD21 Mirror Life Crisis","\uD83E\uDDD9‍♀️ Vs. Alexa"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"To Do List","p":["Here's a list of the things about the engine that will get documented at some point. Eveything here is subject to change."]},{"l":"Getting Started","p":["Engine Setup","Build Flags"]},{"l":"Modding Basics","p":["Characters","Stages","Adding Songs","Noteskins and Notetypes","Event JSONs"]},{"l":"API","p":["PlayState Scripts","SongData","SaveData","CoolUtil"]},{"l":"Editors","p":["Character Editor","Chart Editor"]}]] \ No newline at end of file +[[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Home","p":["Welcome to the official FNF: Doido Engine Documentation! Here you can find any information you might need on how to make your own mod in the engine!"]},{"l":"Getting Started","p":["\uD83D\uDE80 How to setup the engine"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Setting up the Engine"},{"l":"Dependencies","p":["All platforms:","git-scm","Haxe (4.3.3 or greater)","Windows Only:","Microsoft Visual Studio Community (Refer to step 3 of setup for installation tutorial)"]},{"l":"First setup","p":["Install git-scm and Haxe","Setup platform","Windows: Run the following commands","Open up any terminal in the engine folder (such as CMD or Powershell) and run the following commands","Build the game","Run the command lime test PLATFORM, where platform is where you are building the engine for (ex: Windows, HTML5, Linux)","First time you build the engine will take longer than usual, so don't worry and be patient!"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Build Flags","p":["There are a couple of Flags you can use when building the engine that can help you in development."]},{"l":"How to use flags","p":["To use flags, simply append them to the end of your lime test PLATFORM command, like this:","If you use VSCode, you can simply select a build preset from the platform list."]},{"l":"List of available flags","p":["-debug can build the game in debug mode. This enables many debug features, such as the FlxDebugger and debugging through VSCode.","-DFREEPLAY and -DMENU launch the game directly in the Freeplay and MainMenu states, respectively. These can't be used together."]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Source Folder","p":["Our Source folder is organized according to what function each .hx file has:","data/ holds important code relating to the engine's core functions and tools, such as Highscore, Timings, Discord and the CrashHandler. You will probably only use this to add Songs or change the Discord Status config.","flixel/ has modified HaxeFlixel code that is optimized for Doido Engine. You probably won't need to use this.","gameObjects/ is where all the objects are stored, such as Characters, Stages, Notes and all the UI. This is something you will use a lot. It has a couple of subfolders specific to the HUD or menus.","shaders/ is where any graphical shaders are stored. Included in the engine is DistantNoteShader, but you might wanna add more, depending on your mod's needs.","states/ and substates/ hold the code for the game's states, such as the PlayState or MainMenuState for states/, and the GameOverSubState or PauseSubState for substates/."]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Custom Characters"},{"l":"Adding your assets","p":["Firstly, place your character in their own folder in assets/images/characters/. You aren't required to make a new folder but it helps organizing so we recommend you do so!","After that, place their icon in assets/images/icons/ with the name icon-YOUR_CHARACTER_NAME.","Every character has a json file that holds their animation offsets, aswell as global, camera and rating positions. These are named after the character (Ex. bf.json) and are located in assets/images/_offsets/. These are made with the engine's Character Editor."]},{"l":"Coding your characters","p":["Code for the characters is handled by Character.hx, which is situated in the gameObjects Source folder. For more info on how the Source folder is structured, click here."]},{"l":"Basic code","p":["To add your new character, you need to add a new case to the switch statement around line 54. Here's the basis on how it works. Feel free to copy this into your code and edit it accordingly."]},{"l":"Animations","p":["The anims array works under this format. You can use this as a reference to add custom animations.","ANIMATION_NAME is what you want to name your animation inside the game","ANIMATION_PREFIX is what your animation is called in it's .xml spritesheet","FRAMERATE is what framerate the animation is gonna play at (we recommend you use 24)","LOOPED decides if the animation should loop when it reaches the end (for singing or other mid-song animations, set this to false)","[FRAMES] is an array of which frames of the animation should be played. Normally you can leave this out but this is useful for GF/speaker type characters."]},{"l":"Other variables","p":["Your character might need other variables to make it work right.","The scale of a character can be changed with scale.set(width,height);","Like other engines, if your character is facing the left (Like BF or Pico), you should set flipX to true.","idleAnims allows you to change which idle animation(s) the character uses. For example, Skid and Pump use [danceLeft, danceRight] to give them their dance. If you have more than one idle anim, you should set quickDancer to true.","antialiasing allows you to disable smoothing on the character, giving them a more \"jagged\" look.","isPixelSprite is used to determine if a character is Pixel Art or not. Use this for characters like Senpai or BF-Pixel","deathChar allows you to set a separate character as a death sprite.","isAnimateAtlas determines if the character uses an Atlas as its format. Sprite format guide is in the works so please be patient!"]},{"l":"Adding your character to the charList","p":["After coding your character, you still need to add it to the engine's internal list. Simply go over to CoolUtil.hx, and add your character's name to the charList() function."]},{"l":"Finalize Character","p":["The final steps to making a character are to edit their offsets and to configure their Health Icon.","Custom Characters Custom Characters"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Custom Stages"},{"l":"Adding your assets","p":["Assets for stages are usually placed in assets/images/backgrounds/, though you are free to place them wherever you want. No specific configuration is necessary for the assets side."]},{"l":"Coding your stages","p":["Code for the characters is handled by Stage.hx, which is situated in the gameObjects Source folder. For more info on how the Source folder is structured, click here."]},{"l":"Example Stage","p":["Here is a simple example stage you can use to make your own. Copy this to the switch statement around line 85.","You can add your own sprites like our example bg, set the positions of each characters and set the defaultCamZoom.","NOTE: Check out the official Flixel documentation for more info on general FlxSprite usage."]},{"l":"Loading Stage","p":["The reloadStageFromSong() function is used to associate stages to songs. You can create an array of stages to be preloaded with the song that can later be changed between without any lag. The LAST stage in the array is the one thats gonna be loaded in last so keep that in mind."]},{"l":"Advanced Stage features"},{"l":"GF Version","p":["You can choose which Character is going in the GF position. By default this is \"gf\" but you can change it to any character you wish. NOTE: If you want to have no GF, you can set her version to \"no-gf\", which is a placeholder empty character."]},{"l":"Foreground Layer","p":["You can choose to render Sprites on a foreground layer (above the characters) by adding the sprite like this:"]},{"l":"Animated Sprites","p":["You can have also have animated sprites, for example:"]},{"l":"stepHit and Update functions","p":["You can set your own code to run on the stepHit (in sync with the song) or Update (constant) functions. There is also a conditional in stepHit that allows you to run a smaller beatHit function. This can be useful for animated sprites, for example. NOTE: Make sure you initialize your variables in the Stage class to do this."]},{"i":"accessing-sprites-from-other-classes-playstate","l":"Accessing Sprites from other classes (PlayState)","p":["You are able to access sprites created in the Stage class from the PlayState or other classes. To do so, you can append stageBuild to the beginning of the sprite, like so:"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Events","p":["FNF: Doido Engine's Event JSONs work in a similar way to Psych Engine's, but there are a few differences. Here's a small guide of them."]},{"l":"Note on JSONs","p":["On FNF: Doido Engine, Events have their own JSON file, and thus will not be saved on the main chart JSON."]},{"l":"Values","p":["Each event can have up to 3 values, which are detailed on a case by case basis. The number stepper chooses which slot you are currently on and you can see a list of the events on each slot from the icons to the right of the Event Note.","You can also use the Clear this Slot and Clear all Slots buttons to clear the values and selected events of a single or every slot."]},{"l":"Events by difficulty","p":["You can name an event JSON using its difficulty to have it load only when you play that certain difficulty. For example, if you name a JSON events-easy.json it will only play those events on Easy."]},{"l":"Adding Custom Events","p":["To create custom events, you simply need to add the Event to the onEventHit() function in PlayState. Then, to use these events, you will also need to add them to the possibleEvents array in the ChartingState class."]},{"l":"Event Icon","p":["While an icon isn't required for an event (there is a default icon that gets used if no icon exists), it helps you with knowing which events are on different slots. To add a custom icon, simply add the icon to images/notes/events/.","NOTE: Icons are named in lowercase with underscores _ replacing spaces."]},{"l":"Preloading Events","p":["Some events might need preloading. To do this, add your preloading code to the preloadEvents() function in PlayState and it will be run for every event of the type in the create() function."]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"PlayState Scripts","p":["FNF: Doido Engine uses HScript-Iris to have user-made scripts that are ran from the Playstate. It is currently developed to make modcharts, but you are also able to do other things using it. Any regular events should be done using JSON events."]},{"l":"Paths","p":["Any scripts in .hxc format placed in a song folder will automatically be loaded, regardless of name.","NOTE: If you wish to use scripts in HTML5, you will have to manually push scripts to the scriptPaths array. (Ex. scriptPaths.push(songs/bopeebo/script.hxc);)"]},{"l":"Functions","p":["The following functions are called from PlayState, which you can use to create scripts. More will be added in the future.","NOTE: create() and update() are both called from the beginning of the functions, while createPost() and updatePost() are called from the end of the function.","You can also create your own functions, as shown here:"]},{"l":"Imports","p":["You can also import Classes from the game. You are able to call most Classes, as long as they are imported somewhere in the code.","NOTE: Currently, the using keyword (Ex. using StringTools) is unavailable due to limitations in HScript Iris. As soon as it gets added you will probably be able to use it in your scripts."]},{"l":"Modcharts"},{"l":"Manipulating notes","p":["To manipulate notes, you can modify the individual strums and the notes will automatically \"lock onto\" them. Here are a couple of fields you can use."]},{"l":"hasModchart","p":["Some modcharts might break when changing Downscroll or Middlescroll in the options. The hasModchart variable allows you to stop the player from changing these options mid-song, to avoid bugs."]},{"l":"Example Modchart","p":["Here's a silly little modchart example, made for Bopeebo Erect. You can use this to base your own modcharts off of.","PlayState Scripts"]},{"l":"Other Examples"},{"l":"Difficulty specific code","p":["To have code run on a specific difficulty, you can detect it with a boolean. Here's an example of how to do this."]},{"l":"Other Uses","p":["For other, simpler events, please checkout the Events guide.","For other possible uses of HScript-Iris, please visit their repository to learn more!","PlayState Scripts"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Character Editor","p":["FNF: Doido Engine has it's own Character Editor, that can configure all the offsets of your characters! Though it might seem intimidating at first, it's very simple to use!"]},{"l":"The Editor","p":["The Characters tab can be used to configure many things about the editor, the character and the ghost. Here is a list of what you can change.","The Character and Ghost dropdowns (!) are used to select which character you are editing or which ghost you are seeing.","The Char FlipX and Ghost FlipX checkboxes let you flip the character or ghost horizontally.","The Playable checkbox lets you select if the character you are editing is Playable or not. If you don't use this correctly your offsets might be wrong in-game. (NOTE: This does not affect the ghost, so you need to set Ghost FlipX separatly)","The Show Ghost checkbox lets you enable or disable the ghost.","The Focus on Character checkbox decides if the camera is currently focusing on the character or not.","The Currently Editing section decides which offset you are currently editing. You can also use the text fields to manually set an offset.","The Save button lets you save your character's JSON file. See Saving your Character section for info"]},{"l":"Controls","p":["Arrow Keys move the selected animation's offset","Holding Shift will increment them by 10","Holding Ctrl will increment them by 100","Middle mouse button will move the camera WITHOUT changing its offset (Check Focus on Character to return it to the offset position)","Scroll Wheel will change the zoom of the camera"]},{"l":"Ghost","p":["Under your character, there exists a slightly transparent version of them called a Ghost. This is meant as a reference for animation offsets, and you can select its animation or even swap them for a completely different character."]},{"l":"Editing Offsets","p":["In any of the next sections, please make sure you select the correct offset before editing."]},{"l":"Animation Offsets","p":["On the upper left corner of the screen, you will find the Animation selector. Simply click on any of the animations on the left to select the character's anim, and on the right to select the ghost's anim."]},{"l":"Global Offsets","p":["Global offset is the overall position of the character in the stage. To help with this we recommend you align the global position with the red cross that's under the character. This way you can do character changes without having to worry about positions being buggy and they will automatically align to any stage you put them in!"]},{"l":"Rating Offsets","p":["Rating offset is the position of the rating sprite when you hit a note as them. This is only able to be seen when you disable the Ratings on HUD option."]},{"l":"Camera Offsets","p":["Camera offset is where the camera is gonna be when your character is focused on in-game. It may be a little hard to set it up from the editor so you can also manually edit the JSON and restart the song from the pause menu to reload."]},{"l":"Saving your Character","p":["After you finish your character, you can press the Save button to export a JSON file, which you should save to assets/images/characters/_offsets/"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Chart Editor","p":["FNF: Doido Engine also features an improved Chart Editor. Most of its features are the same as the legacy 0.2.7 charter so we wont get into as much detail, but there are still a couple of features to note."]},{"l":"The Grid","p":["The grid is the main part of the Chart Edior and where you place notes. Nothing much has changed but there are a set of things that are different."]},{"l":"Controls","p":["Left Mouse Click on a note that's placed to select the note. You can then change its length and type!","Right Mouse Click on a note to delete it.","Scroll Wheel, W or S to move the grid bar","Hold SHIFT to move the grid bar faster","A, D or Scroll Wheel(WHILE HOLDING CTRL) to move between sections","R to reload the current section","Left and Right arrows to change grid snapping","Z and X to change grid zoom","SHIFT+ R to return to the start of the song","SPACE to play/pause the song","ESC to test chart","ENTER to play chart"]},{"l":"Editor Settings","p":["Here's what a handfull of buttons in the Chart Editor do!"]},{"l":"Song","p":["Mute Inst and Voices mute the Instrumental and Vocal tracks","BF and Dad Hitsounds enable hitsounds whenever notes are hit by the Player or the Opponent","Old Timer changes the timer style. If enabled the current time will be displayed in seconds, as opposed to minutes","Clear Events, Notes and Song clear the notes in the desired track. Clear Song will clear both the Events and Notes. These buttons will (auto-save)[/editors/chart/#autosaving] the chart.","Controls displays a list of available controls"]},{"l":"Section","p":["Copy last and Clear Section copy or clear the desired sections","The Notes? and Events? decide wether the notes or the events are the ones to get copied, cleared, etc...","Swap Section switches the notes between the Player and the Opponent","Duet Section copies the notes from the Player to the Opponent and vice-versa","Invert Dad and BF Side swap the notes for each side (Ex. Left will become Right, Up will become Down, etc...)"]},{"l":"Note","p":["Note Length changes the length of the sustain of the selected note. (Also Q and E)","Note Type opens the Chooser for the Note Type","Convert Note Types lets you mass change the note types of the current section. The dropdown is able to select between Dad Notes and BF Notes."]},{"l":"Events","p":["For events, please check their own page!","Chart Editor"]},{"l":"Auto-Saving","p":["If you ever crash or exit the game without saving your chart, you can load it by using the \"Auto-Saved Charts Station\". By opening this SubState from the Chart Editor, you will be able to load one of 5 previously edited charts. The game auto-saves every 5 minutes, as well as every time you play or clear a chart!"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"Showcase","p":["You may be wondering, \"What kind of mods can i do with this engine?\". To help you get an idea for what is possible with Doido Engine, check out all these amazing mods that have been done with it!"]},{"l":"Mods running Doido Engine","p":["\uD83D\uDCBF Characteristic Disparity","\uD83D\uDCFC FlxSpriteTest DEMO","\uD83E\uDD21 Mirror Life Crisis","\uD83E\uDDD9‍♀️ Vs. Alexa"]}],[{"i":"#","p":["FNF: Doido Engine Documentation"]},{"l":"To Do List","p":["Here's a list of the things about the engine that will get documented at some point. Eveything here is subject to change."]},{"l":"Getting Started","p":["Engine Setup","Build Flags"]},{"l":"Modding Basics","p":["Characters","Stages","Adding Songs","Noteskins and Notetypes","Event JSONs"]},{"l":"API","p":["PlayState Scripts","SongData","SaveData","CoolUtil"]},{"l":"Editors","p":["Character Editor","Chart Editor"]}]] \ No newline at end of file diff --git a/wiki/sitemap.xml.gz b/wiki/sitemap.xml.gz index fbbd404..294d3fe 100644 Binary files a/wiki/sitemap.xml.gz and b/wiki/sitemap.xml.gz differ