Giftscop 1.2 Update Guide

This page discusses what has changed between Giftscop 1.1.1 and 1.2.

NOTE: This page is a work-in-progress. It was last updated for 1.2-pre27, on November 2nd 2022.


In 1.1.1 and older builds of Giftscop, the following things were either missing entirely, or were very incomplete:

As of Giftscop 1.2, these have all been added, and it is now possible to complete the game.


In addition to new features, many existing parts of the have have undergone large improvements. Here are a few examples:


In 1.2, we've replaced nearly all of the builtin Unity renderers with our own custom implementations, which give us more precise control over how things are drawn and allows us to fine-tune objects to look closer to how they do in the original videos.

Using custom renderer components also allowed us to implement depth sorting. In the original videos, depth sorting is sometimes used instead of the more modern depth buffer, to make the game look more like it's running on an actual PlayStation, which did not support depth buffering.

The PlayStation vertex snapping effect has been adjusted so that it matches how it looks in the original videos. While 1.1.1 technically included this effect, it was hardly visible, and it was quite different than the implementation used in the original videos.

Many of the game's textures and 3D models have been signifcantly improved since 1.1.1, making the game look much closer to how it does in the original videos. Some textures are also now based on the same source images that were used to create the textures in the original series.

Additionally, most rooms are now build using a custom 3D tile system, instead of regular 3D models. This system may also be used to create custom tilemaps.

The composite video shader has also been reworked to function much more closely to how it does in the original videos.


The file format for recordings has been optimized significantly. With the new format, recordings are generally only a few kilobytes large at most, whereas the old format would result in file sizes of over 20 kilobytes for short recordings.

In addition to file size optimizations, recording playback is also much more stable. In previous builds, recordings would sometimes desync from their original actions for no apparent reason. These issues have been addressed in 1.2.

We've also recreated several of the recordings shown in the original series, which are now included within Giftscop. Some of these may appear as demos on the title screen.

Draw Mode

In previous versions of Giftscop, Draw Mode was only useable in the same room where it was used in Petscop 15, did not use the nifty code for activation, and functioned rather inconsistently.

Now, it can be activated using the nifty code, L2-Square-R1-Triangle-R2-Up-R2-Circle-R1-Circle, from any room in the game (excluding some special rooms like the title screen), and it has been reworked so that it functions consistently across every room in the game.

Movement and Collision

The player movement physics have been adjusted to more closely match how they function in the original videos.

In Giftscop 1.1.1, many narrow paths were very difficult to enter, as the game's collision detection was rather finicky. In 1.2, we've completely rebuild the collision system in such a way that allows us to adjust things more precisely, and these narrow pathways are now much easier to enter.



The file formats have changed significantly between 1.1.1 and 1.2.
Because of this, the recording files that the game automatically creates will be significantly smaller. However, save and recording files from earlier builds are not compatible with 1.2.

Several of the folders where custom content is placed (including custom sheets and languages) have been moved to the game's persistent data folder:

While this will make it slightly more difficult to access said folders, it will allow you to keep these files in the same location when new builds are released, instead of having to move them over to a different folder for each new build.


The game will now run at 30 frames per second.

While the game appeared to run at higher framerates in earlier versions, things were still being evaluated 30 times per second internally. Visually, things were interpolated at a higher framerate.

This did not work very well with recording playback, often causing things to desync unexpectedly. Maintaining this interpolation system, while also keeping things completely deterministic, was quite tedious. So, we decided to switch to 30 frames per second.


In 1.2, we are removing the built-in translations that were included in previous builds.
There were some quality issues with the built-in translations, and we don't have a good way to verify their quality, as most of us do not speak those languages. Because of this, we decided that translations would work better as a community thing. The previous translations may be downloaded HERE.

The folder where custom language files must be placed has been moved to the game's persistent data folder.

Custom Sprite Sheets

In 1.1.1, custom sprite sheets were placed in the Naulsheets folder, which was located in the same directory as the game's executable file. Now, they're placed in the sheets folder, which is inside of the game's persistent data folder.

The setchar command is now used exclusively for custom sheets, meaning that builtin sheets can no longer be selected, besides the default guardian character. The builtin sheets may be downloaded HERE, and more may be found within our Discord server.

Additionally, sheets without animations may now use 64x64 images.


Since 1.1.1, the console has also changed in several ways.

Accessing The Console

You must now press Shift-C-8 to enable the console. After this, it will function the same as it did in older Giftscop builds. You may also enter the code again to disable the console.

Previously, there was some confusion about how the console was meant to be used, which was causing frustration and unfounded expectations regarding the console's functionality. The purpose of this code is to encourage people to view the console as a tool, distinct from the rest of the game, rather than a gameplay mechanic which can be discovered unintentionally.


Many commands are considered cheats, and are now disabled by default.

In earlier versions of Giftscop, many people seemed to assume that these commands were meant to be used during regular playthroughs, which caused the game to become significantly more confusing for those users, as many cheat commands can cause the game to behave irregularly, permanently alter how the game functions, and are often quite unintuitive if you aren't deeply familiar with how the game functions.

Cheats may be enabled via the /cheats command, but we hope people understand that they may introduce additional and unintended complexity to the game.

Several cheat commands are capable of creating issues with the game's recording system, because the game only records button inputs, not commands. By default, these recording-unsafe commands will be disabled whenever a recording is being created. If you wish to use recording-unsafe commands, you must now either stop recording via /recording stop, or configure the recording safety feature to allow these commands to be used while recording. To configure recording safety, you may use the new /recording safety command.

Additionally, some commands are now considered advanced, and will require a special command line argument to be used.


Various commands were added, changed, or removed in 1.2. Below is a table showing which commands have been changed, and what their 1.2 equivalents are.

Old (1.1.1) New (1.2) Notes
/skipcl /skip
/nmpdoor /skip May also be set via /flag
/housedoor /skip May also be set via /flag
/pet /flag
/hidden /flag The "started" flag enabled when the code in Roneth's room is entered
/odd /gen
/ss /gen
/school /gen
/demo /gen The door puzzle from Petscop 14 is now controlled by gens.
The DEMO icon at the top of the screen will now only appear when a recording plays on the title screen.
/autorecord /recording auto
/demoinfo /recording info
/dmototsv /recording convert rec
/tsvtodmo /recording convert tsv
/listdemos /recording list
/play /recording play
/record /recording record
/stoprecord /recording stop
/marvindemo /recording ghost
/scrwidth /resolution width
/scrheight /resolution height
/scrscale /resolution scale
/fs /resolution fullscreen
/ws /resolution widescreen
/bind /controls set
/resetbinds /controls resetall
/invert /controls invert
/needles /volume toggle needles
/talksfx /volume toggle p2
/chatsound /volume toggle chat
/posx /pos You may now specify an axis in /pos, i.e. /pos x [value]
/posy /pos You may now specify an axis in /pos, i.e. /pos y [value]
/posz /pos You may now specify an axis in /pos, i.e. /pos z [value]
/cam <normal, idle, topdown, free> /cam mode <normal, idle, custom, free> Topdown mode was removed, although it may be replicated using /cam mode custom and /cam param.
Camera settings may still be reset via /cam reset
/fog /light The light command can also be used to adjust the fog radius and color.
/fp /player mode
/shadow /player brightness
/fps /fps Now displays an FPS counter instead of toggling a 30 FPS limit
/speed /gamespeed Now controls the speed of the entire game, rather than just the guardian's movement speed.
/buckets Removed Buckets will now reset to their original position when you leave the room
/chromaamp Removed Sometimes caused the screen to rapidly flicker, served little purpose after 1.2 shader changes
/chromafreq Removed Sometimes caused the screen to rapidly flicker, served little purpose after 1.2 shader changes
/gamma Removed Served little purpose after 1.2 shader changes
/sharpen Removed Served little purpose after 1.2 shader changes
/kernelsize Removed Served little purpose after 1.2 shader changes
/listfsfiles Removed Rarely used, served little purpose
/ortho Removed Caused various visual issues, served little purpose
/hat Removed Worked badly after 1.2 concurrent player changes
/balloon Removed Worked badly after 1.2 concurrent player changes
/grid Removed Served little purpose
/listscenes Removed Including a scene list within the game itself seemed to encourage people to treat the console as a game mechanic.
The list may now be found HERE.
None /draw Activates draw mode

NOTE: Draw mode may be opened without the console
The Nifty code will also activate it: L2-Square-R1-Triangle-R2-Up-R2-Circle-R1-Circle
None /tiles Allows the user to edit tilemaps
None /reload Reloads the current scene
None /time Allows the user to modify the ingame time
None /info Displays information about the current game version, hardware, etc.
None /library Used to debug Child Library room parameters
None /ai Used to debug concurrent players
None /vertprecision Sets strength of the vertex snapping effect
None /episode Controls various OOU parameters based on an episode number
None /bt601 Toggles a subtle color filter which makes the game look more like how it appears on YouTube
None /quantize Toggles a 15-bit color filter
None /macro Used to execute command macros. Macros may be created by modifying the macros.txt file inside the persistent data folder.
/m may also be used
None /perspective Sets the current perspective
None /zbuffer Toggles the depth buffer for the current room
None /sticky Allows the user to specify commands that will execute every time a room is loaded
Quotation marks may be used around the input in order to allow spaces, commands may be separated using semicolons.
Example: /sticky "zbuffer on;light ambient 1 1 1"
None /extras Allows the user to access Giftscop's extra rooms (which have changed significantly since 1.1.1)
None /act Plays a custom character animation

Command Line Arguments

Command line arguments may now be used to configure the console before the game opens.

NOTE: Command line arguments must be included when the game's executable is opened, they may NOT be used from the ingame console.

Argument Notes
-console Bypasses the Shift-C-8 code
-cheats Enables cheats
-advanced Enables advanced commands

Additionally, you may specify commands to be executed when the game opens. Just put a forward slash at the beginning, and ensure that spaces do not cause it to be interpreted as multiple separate arguments.