Skip to content

Commit

Permalink
deploy: 7d02150
Browse files Browse the repository at this point in the history
  • Loading branch information
Frakits committed Sep 3, 2024
1 parent 961f08a commit 4ddd11e
Show file tree
Hide file tree
Showing 30 changed files with 1,092 additions and 1 deletion.
14 changes: 14 additions & 0 deletions Differences between the other FNF engines.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<h1>Differences between the other FNF engines.</h1>
<h4>First of all, <strong>this engine does not have built-in LUA scripting,</strong> like &lt;a href=&quot;https://github.com/ShadowMario/FNF-PsychEngine&quot;&gt;Psych Engine&lt;/a&gt;.</h4>
<p>Codename engine is based on <strong>Base Game's week 6 code</strong> (AKA. version 0.2.7.1), and shows heavy modifications from the original source (for example, optimized PlayState ~1400 lines, rewritten systems etc.). It is not a fork of any other engines and hasn't taken code from other engines either.</p>
<p>Compared to the usual engines (Psych Engine, FPS plus), these are the few differences that makes it stand out:</p>
<ul>
<li>Scripting system is specifically HScript Improved, a custom fork made by the devs themselves.</li>
<li>Uses forks of popular libraries tailored specifically for the engine for the goal of better optimization.</li>
<li>Modding system and softcoding is as capable as source coding.</li>
<li>Focuses heavily on optimization, and encourages its users to also take on optimization practices.</li>
<li>Bloated, in the sense that it offers as many modding tools as possible without changing the core gameplay and the base to mod on.</li>
<li>Allows modularity using addons and mods that apply on top of the core mod.</li>
<li>Advanced editors which allows for possibly better experience and easiness when creating the mod.</li>
</ul>
<h6>Please keep in mind that, despite these differences, we do not consider our engine to be any better than the others and this page exists purely for people to distinguish our engine from the other engines in the community.</h6>
54 changes: 54 additions & 0 deletions Home.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
<h1>Welcome to the Codename Engine Docs</h1>
<p>Here is documentation on functions of the engine (gameplay and modding), and how to use them for your mod.</p>
<h4>Navigation is done via either the sidebar, or by using this chart below:</h4>
<ul>
<li>&lt;a href=&quot;./docs/How to navigate the engine.md&quot;&gt;How to navigate the engine&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Differences between the other FNF engines.md&quot;&gt;Differences between the other FNF engines&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/index.md&quot;&gt;Modding the engine&lt;/a&gt;
<ul>
<li>&lt;a href=&quot;./docs/Modding The Engine/Creating songs/index.md&quot;&gt;Creating songs&lt;/a&gt;
<ul>
<li>&lt;a href=&quot;./docs/Modding The Engine/Creating songs/Chart Editor Features.md&quot;&gt;Chart Editor Features&lt;/a&gt;</li>
</ul></li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Creating characters/index.md&quot;&gt;Creating characters&lt;/a&gt;
<ul>
<li>&lt;a href=&quot;./docs/Modding The Engine/Creating characters/Character Editor Features.md&quot;&gt;Character Editor Features&lt;/a&gt;</li>
</ul></li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Creating stages/index.md&quot;&gt;Creating stages&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Cutscenes or Dialogues.md&quot;&gt;Cutscenes/Dialogues&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/index.md&quot;&gt;Scripting&lt;/a&gt;
<ul>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/PlayState Scripts/index.md&quot;&gt;PlayState Scripts&lt;/a&gt;
<ul>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/PlayState Scripts/Gameplay Scripts.md&quot;&gt;Gameplay Scripts&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/PlayState Scripts/Character or Stage Scripts.md&quot;&gt;Character/Stage Scripts&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/PlayState Scripts/Cutscenes or Dialogue Scripts.md&quot;&gt;Cutscenes/Dialogue Scripts&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/PlayState Scripts/Pause or Game Over Scripts.md&quot;&gt;Pause/Game Over Scripts&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/PlayState Scripts/Events or Notetype Scripts.md&quot;&gt;Events/Notetype Scripts&lt;/a&gt;</li>
</ul></li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/State Scripts.md&quot;&gt;State Scripts&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Global Scripts.md&quot;&gt;Global Scripts&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Custom options.md&quot;&gt;Custom options&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Scripted Assets Libraries.md&quot;&gt;Scripted Assets Libraries&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Shaders.md&quot;&gt;Shaders&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/3D rendering.md&quot;&gt;3D rendering&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Using hxvlc for videos.md&quot;&gt;Using hxvlc for videos&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Useful script snippets for modders.md&quot;&gt;Useful script snippets for modders&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/All of the script calls.md&quot;&gt;All of the script calls&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/Custom Classes.md&quot;&gt;Custom Classes&lt;/a&gt;</li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Scripting/NDLL Scripting.md&quot;&gt;NDLL Scripting&lt;/a&gt;</li>
</ul></li>
<li>&lt;a href=&quot;./docs/Modding The Engine/Hardcoding/index.md&quot;&gt;Hardcoding&lt;/a&gt;
<ul>
<li>idk lol</li>
</ul></li>
</ul></li>
</ul>
<p>Credits:</p>
<ul>
<li>Neeo - stylizing and basically making the entire structure of the website.</li>
<li>Frakits - useless documentation.</li>
<li>swordcube - helping hand for documentation.</li>
<li>Care or usb_port_2 - helped with keeping my sanity.</li>
</ul>
<p><strong>PSA</strong>. if you wish to contribute to this website, whether it be a page modification or adding a brand new page, visit the &lt;a href=&quot;&quot;&gt;Github Repository&lt;/a&gt; and contribute via pull requests. (contributions are heavily encouraged, as we're not able to cover all possible cases.)</p>
28 changes: 28 additions & 0 deletions How to navigate the engine.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<h1>How to navigate the engine</h1>
<p>While the engine has pretty much not changed the usual look and feel of the original game, it's worth noting that there are a few additions to the game that needs to be studied, a bit.</p>
<h3>The Warning Screen</h3>
<p>&lt;img src=&quot;How to navigate the engine-2.png&quot;/&gt;</p>
<p>Although not very notable, it's still important to read the message to understand why the engine doesn't feel &quot;complete&quot;. And also, this state can be modified to show your own message (see &lt;a href=&quot;./Modding The Engine/Scripting/State Scripts.md&quot;&gt;State Scripts&lt;/a&gt;).</p>
<h3>Mod Select Menu</h3>
<p>&lt;img src=&quot;How to navigate the engine.png&quot;/&gt;</p>
<p>After going through the Title Screen and arriving at the Main Menu, you can now press TAB to reveal the.. Mod Select Menu! This is where your installed mods will appear, and this is where you select them. It's very simple and nothing to note here.</p>
<h6>(Skipping story mode menu because there's nothing to note there)</h6>
<h3>Freeplay Menu</h3>
<p>&lt;img src=&quot;How to navigate the engine-3.png&quot;/&gt;</p>
<p>Looks just like the ordinary Freeplay menu, with one exception. A new modifier that changes the way you can play songs!</p>
<p>&lt;img src=&quot;How to navigate the engine-4.png&quot;/&gt;</p>
<p>Upon pressing TAB, you get to play solo, as the opponent, or even in co-op mode to play with your buddy (uses your alternate controls, see &lt;a href=&quot;#Controls Menu&quot;&gt;Controls Menu&lt;/a&gt;).</p>
<h3>Options Menu</h3>
<p>&lt;img src=&quot;How to navigate the engine-5.png&quot;/&gt;</p>
<p>Now going back to the Main Menu and choosing the &quot;Options&quot; option, you're greeted with this menu! Although, at first, this might be too much to take in, there aren't really that many settings, but each of them are pretty self explanatory.</p>
<p>&lt;h4 id=&quot;Controls Menu&quot;&gt;Controls Menu&lt;/h4&gt;</p>
<p>&lt;img src=&quot;How to navigate the engine-6.png&quot;/&gt;
Set your controls here. Pretty self-explanatory, but as you can see you also get to bind a second keybind for each action. And you also get to change controls for actions outside of gameplay.</p>
<h3>Gameplay</h3>
<p>&lt;img src=&quot;How to navigate the engine-7.png&quot;/&gt;</p>
<p>Now for the gameplay, it's pretty much the same as normal FNF, although some UI elements look different. For one, the notes are.. properly aligned. For two, there's 2 new counters at the bottom (or at the top, if you have Downscroll enabled), which represents your accuracy on how well you hit the notes, and the misses which.. shows your misses.</p>
<h4>FPS Counter</h4>
<p>&lt;img src=&quot;How to navigate the engine-8.png&quot;/&gt;</p>
<p>The fps counter shows very basic information (FPS, current memory consumed, peak memory consumed, the watermark and current GitHub commit of the engine). But upon pressing F3, we get a lot more information.</p>
<p>&lt;img src=&quot;How to navigate the engine-9.png&quot;/&gt;</p>
<p>Most of this information isn't really important to the ordinary player, but for developers/debuggers it's pretty important (btw don't be afraid to show this because none of this is your personal information lol)</p>
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<h1>Additional Chfuck this is not the chart editor file</h1>
40 changes: 40 additions & 0 deletions Modding The Engine/Creating characters/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<h1>Creating Characters</h1>
<p>Creating characters thru the engine is not available yet, so you have to manually add the files yourself.&lt;br&gt;
All you need is the spritesheet and an XML file for the data.&lt;br&gt;
The spritesheet goes in <code>./images/characters/</code> and the XML file in <code>./data/characters</code>.</p>
<p>Writing the XML file is pretty simple, here is what Dad's XML data looks like:</p>
<pre><code class="language-xml">&lt;character isPlayer=&quot;false&quot; flipX=&quot;false&quot; holdTime=&quot;6.1&quot; color=&quot;#AF66CE&quot;&gt;
&lt;anim name=&quot;idle&quot; anim=&quot;Dad idle dance&quot; fps=&quot;24&quot; loop=&quot;false&quot; x=&quot;0&quot; y=&quot;0&quot;/&gt;
&lt;anim name=&quot;singUP&quot; anim=&quot;Dad Sing note UP&quot; fps=&quot;24&quot; loop=&quot;false&quot; x=&quot;-6&quot; y=&quot;50&quot;/&gt;
&lt;anim name=&quot;singLEFT&quot; anim=&quot;dad sing note right&quot; fps=&quot;24&quot; loop=&quot;false&quot; x=&quot;-10&quot; y=&quot;10&quot;/&gt;
&lt;anim name=&quot;singRIGHT&quot; anim=&quot;Dad Sing Note LEFT&quot; fps=&quot;24&quot; loop=&quot;false&quot; x=&quot;0&quot; y=&quot;27&quot;/&gt;
&lt;anim name=&quot;singDOWN&quot; anim=&quot;Dad Sing Note DOWN&quot; fps=&quot;24&quot; loop=&quot;false&quot; x=&quot;0&quot; y=&quot;-30&quot;/&gt;
&lt;/character&gt;
</code></pre>
<p>There's a lot to unpack, but we'll go over the <code>character</code> node's properties first:</p>
<ul>
<li><code>sprite</code> determines which sprite to load, if you have a spritesheet with a different name.</li>
<li><code>isPlayer</code> determines whether your character is a player character or not <em>(for example, boyfriend is a player character)</em>.</li>
<li><code>x</code> and <code>y</code> determine the character's position in the stage. <em>(keep in mind that stages can override these values)</em></li>
<li><code>scale</code> determines the scale of the character.</li>
<li><code>camx</code> and <code>camy</code> adjusts the character's camera point.</li>
<li><code>flipX</code> can be used if your sprite is facing the wrong direction.</li>
<li><code>antialiasing</code> determines if your sprite should use antialiasing or not.</li>
<li><code>gameOverChar</code> defines the separate character to be used on the Game Over screen <em>(for example bf-dead)</em></li>
<li><code>icon</code> can be used if your character icon has a different name.</li>
<li><code>color</code> defines the color of it's Health Bar part.</li>
<li><code>holdTime</code> defines how many steps it should wait until resuming to it's idle.</li>
</ul>
<p>These are about all properties you can apply to the character node.&lt;br&gt;
You can obviously apply more properties and access them in Scripts, see &lt;a href=&quot;../Scripting/PlayState Scripts/Character or Stage Scripts.md&quot;&gt;Character/Stage Scripts&lt;/a&gt;.</p>
<p>As for animation nodes, they're pretty self-explanatory but here's a list of properties of them too:</p>
<ul>
<li><code>name</code> defines the internal name of the animation <em>(used for scripting)</em></li>
<li><code>anim</code> is the prefix for finding the animation in the spritesheet.</li>
<li><code>indices</code> indicates which frames to play from the previously found frames.</li>
<li><code>type</code> determines the type of the animation. either <code>beat</code> or <code>loop</code>.</li>
<li><code>fps</code> is the framerate of your animation.</li>
<li><code>x</code> and <code>y</code> are the animation offset. <em>(offset is only applied when the animation is played)</em></li>
<li><code>forced</code> whether or not to force animation playback while a different one is already playing.</li>
<li><code>loop</code> to make your animation loop.</li>
</ul>
68 changes: 68 additions & 0 deletions Modding The Engine/Creating songs/Chart Editor Features.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
<h1>Additional Chart Editor Features</h1>
<p>while we have only covered the basic of charting in &lt;a href=&quot;./index.md&quot;&gt;Creating songs&lt;/a&gt;, we will cover the additional chart editor features here, in no particular order.</p>
<h2>Strumlines.</h2>
<h3>More than 2.</h3>
<p>Songs in Codename Engine are more modular, in the sense that you're no longer restricted to just 2 strumlines. This means that, you can have as many strumlines and characters in the song as you like. Moreover, Girlfriend also gets her own strumline.</p>
<p>&lt;img src=&quot;Chart Editor Features.png&quot;/&gt;</p>
<h3>Moving around.</h3>
<p>This is only an in-editor thing, but if you don't like how the Strumlines are ordered, and prefer a different order, you can reposition them easily with just this lock button.&lt;br&gt;
(insert a gif here)</p>
<h3>Hitsounds</h3>
<p>Pretty self explanatory, but you get to choose which Strumline should play a Hitsound when you get past a Note.</p>
<p>&lt;img src=&quot;Chart Editor Features-1.png&quot;/&gt;</p>
<h3>Waveforms.</h3>
<p>Waveforms allows for visualizing songs, and we have that too. You get 2 or more options depending on how many audio files you have in the songs.</p>
<p>&lt;img src=&quot;Chart Editor Features-2.png&quot;/&gt;</p>
<p>&lt;img src=&quot;Chart Editor Features-3.png&quot;/&gt;</p>
<h3>Editing Strumlines Data.</h3>
<p>Strumlines have more options than usual, being able to do things without scripting them in.</p>
<p>&lt;img src=&quot;Chart Editor Features-4.png&quot;/&gt;</p>
<ul>
<li><strong>Characters</strong>, is where you input your characters. As you can see, you can have more than one character per Strumline.</li>
<li><strong>Type</strong>, is where you determine the type of the strumline. Player makes the Strumline playable by a player, while Opponent and Additional makes the Strumline be handled by a CPU.</li>
<li><strong>Stage positioning</strong>, is where you select where the Strumline characters will be placed, pretty self-explanatory.</li>
<li><strong>Scale and HUD position</strong>, is where you set the scale of the strumline and the position in the HUD. <em>(keep in mind when setting the HUD positioning, the X axis is determined by a float, aka. 0.25 is Opponent side, 0.75 is Player side, and 0.5 is the middle point, while y axis uses actual positioning)</em></li>
<li><strong>Visible</strong> determines whether or not your Strumline shows up in the song. If you have it disabled, your Strumline will cease to exist <em>(though your notes will be intact and still play)</em>.</li>
<li><strong>Scroll Speed and that switch with a long name in it</strong> determines if this Strumline should use a scroll speed, separately from the other Strumlines.</li>
<li><strong>Vocal Suffix</strong> is covered in this next section.</li>
</ul>
<h3>Multi-Vocals</h3>
<p>You can have different vocal audio files per Strumline. As seen previously, there's an option to set Vocal Suffixes on a Strumline.</p>
<p>For this, you have to obviously have different vocal audio files ready, with a suffix at the end <em>(for example <code>Voices-bf.ogg</code> has a <code>-bf</code> suffix at the end)</em>
&lt;img src=&quot;./Chart Editor Features-16.png&quot;/&gt;
&lt;img src=&quot;./Chart Editor Features-15.png&quot;/&gt;</p>
<h2>Events &amp; Notetypes.</h2>
<h3>Events</h3>
<p>Events exist in the Chart Editor to avoid coding a lot of code for just a few events. Some of them are already built-in but you can also code your own <em>(see &lt;a href=&quot;../Scripting/PlayState Scripts/Events or Notetype Scripts.md&quot;&gt;Events/Notetype Scripts&lt;/a&gt;)</em>.</p>
<p>&lt;img src=&quot;Chart Editor Features-5.png&quot;/&gt;
&lt;img src=&quot;Chart Editor Features-6.png&quot;/&gt;</p>
<p>Each event has it's own parameters, instead of a pre-established number of parameters. &lt;br&gt; Events are also stackable, without having to painstakingly putting them close together.</p>
<p>&lt;img src=&quot;Chart Editor Features-8.png&quot;/&gt;
&lt;img src=&quot;Chart Editor Features-7.png&quot;/&gt;</p>
<p>Events are also movable.&lt;br&gt;
(insert gif of moving events)</p>
<h3>Notetypes</h3>
<p>&lt;img src=&quot;Chart Editor Features-9.png&quot;/&gt;</p>
<p>You can code your own notetypes, or use the pre-existing one <em>(though only 2 exists currently)</em>. They need to first be added to the Notetypes list before being able to use them. Afterwards you can simply select them from the dropdown here.</p>
<p>&lt;img src=&quot;Chart Editor Features-10.png&quot;/&gt;</p>
<p>You can also change the graphic of a Notetype without programming, by putting the Notetype's spritesheet in <code>images/game/notes</code>.</p>
<h2>Changing additional chart/meta data.</h2>
<p>&lt;img src=&quot;Chart Editor Features-12.png&quot;/&gt;</p>
<p>If you wish to change some data regarding the chart <em>(scroll speed, bpm, stage etc.)</em>, you can do so here.</p>
<h3>Editing chart data.</h3>
<p>&lt;img src=&quot;Chart Editor Features-13.png&quot;/&gt;</p>
<p>Editing chart data has only 2 options, and they're self explanatory.</p>
<h3>Editing metadata information.</h3>
<p>&lt;img src=&quot;Chart Editor Features-14.png&quot;/&gt;</p>
<p>Editing metadata information, is also self-explanatory, though you can notice this menu is similar to what you've seen in &lt;a href=&quot;./index.md&quot;&gt;Creating songs&lt;/a&gt;, so this should be easy to figure out. Though you might also notice there's a new option, <strong>Custom Values</strong>. These are extra values that let's you set certain values specifically for the song <em>(for example, crediting someone for a song)</em>. This will be covered in &lt;a href=&quot;../Scripting/PlayState Scripts/Gameplay Scripts.md&quot;&gt;Gameplay Scripts&lt;/a&gt;.</p>
<h2>Saving.</h2>
<p>The chart editor allows for multiple ways to save a chart. Currently, there's about 10 ways to save the information of a chart.</p>
<p>&lt;img src=&quot;Chart Editor Features-11.png&quot;/&gt;</p>
<p>We know what the first option does, but what about those other ones? Well, here's what they do:</p>
<ul>
<li><strong>Save Without Events</strong> saves the chart without saving it's events.</li>
<li><strong>Save Events Separately</strong> saves the events in a separate file, which gets parsed on any difficulty chart you play on. <em>(Note that if you used this you have to also use <strong>Save Without Events</strong>, otherwise you will face issues with duplicate events)</em></li>
<li><strong>Save Meta</strong> saves the meta into a separate file.</li>
<li><strong>Export For FNF Legacy</strong> saves the chart in a format that is supported by other FNF engines.</li>
<li><strong>Save For Psych Engine</strong> saves the chart specifically in Psych Engine's format.</li>
</ul>
Loading

0 comments on commit 4ddd11e

Please sign in to comment.