๐๐ฐ๐๐ผ๐:
๐๐ฒ ๐ ๐๐ฑ๐ ๐๐ฑ๐ฅ ๐ฃ๐ฝ
Features:
Buy the base game here
Mod, Powdered Milk Shavian & Newspaper Bleed Shavian - 128 0 255
Minispaced font and additional assistance - FacePwn64
Shavian transliteration script - dechifro.org
Dictionary, resources & Inter Alia font - shavian.info
George Bernard Shaw for the funding and idea of Shavian,
Ronald Kingsly Reed for the actual execution and development of Shavian,
and you, for checking out the mod.
Note: This mod, its creator and FacePwn64 are NOT affiliated with;
Milk Outside a Bag of Milk Outside a Bag of Milk,
Nikita Kryukov,
shavian.info,
dechifro.org,
or any of Shavian's original creators.
This is a fan-made mod made by entirely different people.
Locate your Milk2 installation folder. On Windows, this is usually located in:
C:\Program Files (x86)\Steam\steamapps\common\Milk outside a bag of milk outside a bag of milk\
Extract the contents of "game" (from the zip) into the "game" folder of the above path.
Boot the game. The language select screen should have Shavian options along with the font selector.
The first, top rightmost image of this page should be what your game should look like if successful.
It should be noted that you CANNOT switch the language or font after you have selected your language.
You must reboot the game to switch lang and font.
changlog:
v1.0 release
This mod was only tested on a screen resolution of 1920x1080.
Because of that, I can't ensure the quality of text outside that resolution.
All text should be clear and crisp, without blurring or non-integer-scaled pixels.
If you encounter issues related to that, it could be that you aren't using the same resolution. In addition,
I have only tested the Windows version of Milk2. Scaling issues could also be a problem
on Linux and/or Mac.
Starting the game allows you to switch between two modes, Traditional and Quikscript Contractions.
Traditional is the default and the mode you should be playing. It uses Readlex for every word that appears in it,
with a bunch of new words and expressions added. However, some words were changed to better fit my dialect,
but there aren't many. Lastly, this mod uses the TRAP-BATH merger,
which means TRAP and BATH use the same ๐จ vowel.
Quikscript Contractions is a somewhat complicated mode to explain. Please read "Quikscript Details" on the right for a detailed description.
All things considered, this mode should NOT be picked unless you want an experimental experience.
This mode does a lot of things which are going to be unfamiliar and sometimes downright strange.
That aside, if you are looking for an experiment, this mode has a lot of different contractions
that may be adopted into traditional Shavian. Take a look if you want some inspiration, and be warned
that not everything in it is necessarily a good idea. Many of the contractions make sense in Quikscript, but they're a little more dubious in Shavian.
Starting the game allows you to pick between two fonts,
Powdered Milk Shavian &
Minispaced. In addition, the game has a third, mandatory font, Newspaper Bleed Shavian.
Powdered Milk Shavian (or just Powdered Milk) is the standard pixel-style font. It is proportional, painstakingly kerned, and I consider it pleasant to read.
Minispaced is a fixed-width font with a more cult-looking aesthetic. It is displayed in a larger font size compared to Powdered Milk.
In addition, this special version of Minispaced contains full-height descenders.
Standard Minispaced has asymmetrical ascender and descender heights.
Newspaper Bleed Shavian is a special inline pixel-style font used exclusively for yelling.
The current version is not complete and only has enough glyphs as needed for a functional mod.
For clarification, this mod makes use of the extended Shavian glyph ๐๏ธ. However, it is only used for interjections like "ugh" and "argh".
Finally, this mod contains a file which provides an abridged list of my dictionary addendums called CUSTOM_DICT.txt.
As an aside, these words are written as such to better match my dialect:
been: ๐๐ฆ๐ฏ
exit: ๐ง๐๐๐ฆ๐
opposite: ๐ช๐๐ฉ๐๐ฆ๐
littlest: ๐ค๐ฆ๐๐ฉ๐ค๐ฉ๐๐
Inter Alia | Powdered Milk Shavian |
Minispaced | Newspaper Bleed Shavian |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
peep | tot | kick | fee | thigh | so | sure | church | yea | hung | ||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
bib | dead | gag | vow | they | zoo | measure | judge | woe | ha-ha | ||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
loll | roar | mime | nun | if | eat | edge | aim | ash | eyes | ||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||
ago | up | on | oak | wool | ooze | out | oil | alms | ought | ||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||
aria | aura | aero | early | array | eerie | ian | yule | ||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||
loch | whitewheat | excite | exam |
note: excite and exam are shown with Quikscript Sans, not Inter Alia
This mode uses Quikscript conventions in Shavian.
This means that words will be spelled as if they were spelled in Senior Quikscript, using Shavian glyphs.
This is possible because Quikscript shares a lot of characters in common with Shavian.
Quikscript is divided into two "versions",
Senior Quikscript & Junior Quikscript.
Junior Quikscript is nearly functionally identical to Shavian, with practically identical spelling minus a few quikscript-specific quirks.
Senior Quikscript, however, is considerably different.
It contains many, many more elaborate contractions that can be considerably complicated to keep track of.
Quikscript also details ways in which words are to be spelled even excluding contractions.
The scope of this mod is only focused on the contractions aspect of Quikscript. Thus, none of the rules in Quikscript standardizing the way words are to be pronounced (and thus spelled) are followed.
Unfortunately, there are a fair number of issues to be resolved. One of them is that Quikscript adds some new characters, two of those being ๎ซ & ๎ฌ.
They are NOT used in Shavian, and are seldom used in Quikscript anyway.
However, for the sake of completion, I have done the rather sacrilegious act of importing those characters into Shavian.
Another issue is that Quikscript straight up removed some characters.
Specifically, ๐ผ represents both ๐ผ and ๐ป in Quikscript.
This is an issue because one of the contractions specify that words ending in ๐ผ๐ must have the ๐ผ removed.
I've decided to include words ending in ๐ป๐, meaning both ๐ผ and ๐ป will be removed from -๐ผ๐ or -๐ป๐ endings.
Because of the nature of Shavian and Quikscript technically being different scripts, not every contraction was possible.
To make matters more confusing, many Quikscript contractions are grammar or spelling-dependent. For instance, a word ending in
-๐ฆ๐ would have the "๐ฆ" removed, only if it's an affix, not a root.
This means you can spell "winging" as ๐ข๐ฆ๐๐, but you can only spell "wing" as ๐ข๐ฆ๐.
Another instance is the word "that" which is contracted to ๐๐ if it's non-demonstrative, but is somewhat weirdly not contracted when it is demonstrative.
I used a script to automatically (and manually) find and use the (hopefully) correct grammar-dependent contraction for words that have different meaning depending on the context,
but it and I am not perfect.
You will likely encounter numerous errors or more appropriate ways of handling certain contractions, but I think this came out fairly decently.
Here is an abridged list of Quikscript Contractions:
๐ฆ = it, ๐ = is, ๐ = be
๎ซ and ๎ฌ replace "๐๐" and "๐๐" respectively if a word contains an X
๐ข๏ธ used for the contraction of "what" and "whatever"
Words ending in ?๐ฉ? (where "?" is a consonant) tend to have ๐ฉ omitted.
Words ending in ๐ฆ๐ or ๐ฆ๐๐ฆ๐ or ๐ฆ๐๐ค๐ฆ tend to have the ๐ฆ omitted.
Words ending in ๐ผ๐ or ๐ป๐ tend to have ๐ผ/๐ป omitted
Words beginning with ๐๐ฉ๐ฏ or ๐๐ฉ๐ฅ have ๐ฉ omitted.
This document provides the full specification for how words in Quikscript are to be contracted.
In addition, this mod comes with a file, CUSTOM_DICT.txt, showcasing an abridged list of Quikscript contractions.
If you'd like to see how every Quikscript contraction works, you can download the source files for this mod way way below.
(Mainly useful_lib_dan.py and milk2_v2.py)
THIS MODE IS HIGHLY EXPERIMENTAL AND GOES AGAINST MOST ESTABLISHED SHAVIAN NORMS. DO NOT SELECT THIS MODE IF YOU JUST WANT TO READ "TRADITIONAL" SHAVIAN.
All fonts used for the mod were made in Fontstruct.
However, this game uses modified versions of all fonts
in the game for various reasons. This effectively means
that the fonts that are shipped with the mod are different
than the same fonts distributed through Fontstruct.
One major reason is that Fontstruct cannot kern Shavian glyphs.
Powdered Milk Shavian was designed as a proportional font,
which basically left me with the only option to manually kern
in FontForge.
In addition, the Minispaced in the Fontstruct website is not the same Minispaced
used in the mod. In the original design, to conserve space, the height of ascenders
are different from the height of descenders. In other words,
tall letters are taller than deep letters are deep. I've decided
for the sake of readability to modify Minispaced so that deep
letters are as deep as tall letters are tall.
One other quite major issue is that for some reason, Ren'Py (or Milk2's version of Ren'Py)
cannot display text in the Unicode SMP
(but it can weirdly display text in the private use area for Quikscript just fine for some reason)
So what I did was translate (as in move) the codepoints for Shavian to start at the codepoint for โด.
This basically means that for every single font used, a duplicate copy of the glyphs exists
starting at the codepoint for โด. I'm not sure how to fix Milk2 to properly render Shavian codepoints,
as some of the internal libraries looked kind of intimidating.
To reiterate,
Powdered Milk Shavian will not have kerning in the Fontstruct version,
and Minispaced will not have descenders and ascenders of equal heights in the Fonstruct version.
Newspaper Bleed Shavian will pretty much stay intact (besides the Unicode codepoints being translated)
It goes without saying, but ALL Fonstruct versions of the fonts used in the mod will not be usable ingame.
You must translate the codepoints where ๐ starts at โด for any Shavian font to work with this mod.
You can find the original Fontstruct versions in the Credits
section at the top of the page. You can also download the source files made in FontForge for the fonts used ingame below.
Although I suggest reading the next section (right) for details on the directory structure.
Below are the source files used to create the mod.
Keep in mind that they will very likely not work
when used as-is. They are mostly designed for educational
purposes, so you can get an idea on how the mod was made.
It also shows the exact algorithms used for Quikscript contractions.
That said, I will try and provide a brief summary of the different
files used for the mod:
milk2_v2.py - The main way this mod was created was through this custom transliteration
script that runs through the extracted game dialogue files and transliterates
each line one by one using a modified version of dechifro.org's fantastic
Python transliteration script, completely stock Readlex, and a small library
I made for various functions, one of the big ones being Quikscript contractions.
readlex.dict, addendum.dict, trapbathmerger.dict, readlex.json - As mentioned,
these dictionaries are not modified. Instead, they are loaded through the main script (milk2_v2.py)
and each dict entry is modified in memory. milk2_v2.py contains all the dictionary
changes, addendums, etc. to traditional Shavian. It also provides a few dictionary changes
to the Quikscript mode.
The dechifro script (shaw.py) is not included in the mod. This is because a license
was not explicitly given for its usage, so It's assumed
it is explicitly non-redistributable. The main change was to make
the main transliteration stage a function that can be called in any other script.
Other changes include differences in how it interprets dashes and numbers so things like
"3d-modelling" could be interpreted correctly, and other misc things. There is an xdelta3 file where you can use my modified changes to dechifro's "shaw.py"
.ass files represent subtitles for hardsubbing
the video's intro file. FFmpeg was used for burning them.
useful_lib_dan.py - Contains an extremely haphazard list of functions used for Unicode codepoint conversion
(as explained in the Font Info section on the left) and very many numerous other misc functions.
Most functions in it aren't even used.
Some of the files included in the mod are modified compared to their originals.
Of them, milk2_v2.py contains one of the biggest changes. Originally, it contained copyrighted dialogue in Shavian.
It's been removed, and you will need to manually replace each line properly in lines 147-199. Their variable
names give a hint to the dialogue file along with which line number you need to transliterate.
The directory structure is as follows:
[shavian_scripts] contains everything used to create the mod (programs)
[game] contains the source for fonts, images and several xdelta3 files
[game] - A directory structure emulating the mod's actual directory structure.
Inside you will find 4 xdelta3 files to use my modifications for those respective files in the vanilla game's archive.rpa.
You will also find a copy of several of the exact fonts used in the mod, along with Powdered Milk's FontForge source file.
Lastly, you will also find the source files for images used in the mod in Gimp's .xcf format, in game/tl/shavian
[shavian_scripts] - In the folder you will find three files,
useful_lib_dan.py, shaw.xdelta, and convert.txt.
shaw.xdelta is a patch file meant to modify dechifro's shaw.py with the changes required to make the transliteration process work.
Lastly, there is convert.txt, which is not used for anything but a specific script file for testing.
There are two more directories, [dicts] and [milk2].
[shavian_scripts/dicts] - All Readlex dictionaries used to make the mod work.
[shavian_scripts/milk2] - Contains
milk2_v2.py, milk2_singletest.py, and all the .ass files used for hardsubbing.
milk2_singletest.py is only used to test specific, single transliterations, and isn't used for any transliteration steps.
It transliterates anything in [shavian_scripts/convert.txt] using any of your supplied options.
Lastly, there are two folders within this directory, [auto_export] and [auto_import].
[shavian_scripts/milk2/auto_export] - Where your transliterated files will be generated.
[shavian_scripts/milk2/auto_import] - Milk2's vanilla dialogue files are located in a file called archive.rpa.
They are: kompol.rpy, lest.rpy, magaz.rpy, pnc_text.rpy, screens.rpy, script.rpy, telef.rpy and zerk.rpy
You will need to extract these files and place them within [auto_import] for milk2_v2.py
to automatically transliterate everything.
The game's source dialogue files are not included with the mod.
Instead, you will have to extract them yourself.
An explanation for how this is done will not be given.
milk2_v2.py uses a temporary folder located in R:/ - you will NEED to change this to something else, otherwise you'll get an error.
Finally, game code changes were made to the vanilla game's script.rpy, gui.rpy, pnc.rpy and art.rpy files. I cannot distribute these files.
However, as stated earlier, there are xdelta3 files in [game] that you can use to modify those files with the changes I made..
the "game" folder contains the images used in the game.
If you do everything perfectly, you can actually make a perfect recreation of the mod with the exact method I used (with the exception of the FFmpeg command I lost).
I don't see much purpose in doing so however, unless you wanted to make your own mod. (Fully functional handwritten-style Senior Quikscript mod anyone?)
A: Because I could.
...is there a Quikscript anything?
A: The mod actually started off not as a mod, but for a way to help me learn Quikscript.
I was writing the game's dialogue by hand until I figured it was easier to go from
Shavian->Quikscript than to Latin->Quikscript, but I didn't want to manually transliterate
all latin into Shavian by hand,
so I started doing a little transliteration project. I eventually dropped the project, until...
...is there another selectable font?
A: A friend of mine, FacePwn64, was getting into a bit of fontmaking as a small hobby.
That's when I told him about my interest in Shavian. For the hell of it, I convinced
him to add Shavian glyphs into his font, Minispaced, under my supervision, and it ended up
interesting enough that it rekindled my interest to restart the project. Vanilla Milk2
already has a font that includes Shavian glyphs called Unifont, but I didn't think the glyphs
were that great, so I set off with making a new font, with Minispaced in consideration.
My font, Powdered Milk Shavian, was based on a small font size of Minispaced, and I made
it into a pixel font more like vanilla Milk2's default font. As such,
the font is not supposed to emulate the vanilla game's original latin font.
It is a different font, based on me and FacePwn64's design.
Not knowing what font to use as default for the mod, I decided to make a font selector allowing you to choose
between whatever feeling you want, with Powdered Milk being the defacto standard.
This mod, this site, and the fonts, took a considerable amount of time to make.
There were numerous things I had to learn to get to this point.
I hope you'll be able to appreciate the effort that went into everything.
Inter Alia font by Evan/shavian.info
Minispaced font by FacePwn64
Quikscript Sans font by pcdandy