abf12632bb
VVVVVV 2.2 only supported displaying characters 00-7F with its font system. VVVVVV 2.3 added support for unicode, by supplying a font.txt with all the characters that are in the font image. But 2.3 made another change that I didn't immediately realize, even after reading the code: if font.txt is not present, then the font is not assumed to have _only_ 00-7F, but _all_ of unicode, as far as the image dimensions allow. However, an inconsistency I _did_ notice is how unknown characters would be rendered in 2.3. If a font had a font.txt, then any unknown characters would be shown as a '?'. If a font had no font.txt however, then suddenly any unknown characters would just come out as a space. I fixed this behavior with the new font system; but what was actually happening for characters to come out blank is that characters up to U+00FF, which _were_ technically in the font image but as fully transparent, would be shown as they were in the image, and characters beyond U+00FF wouldn't be shown since they were outside of the image. I don't really want to show blank characters for any character between 80-FF if it is technically inside the image, because pretty much every single ASCII-only font.png in existence (including the one in data.zip) contains a blank lower half, just because the font in the game had always had this specific resolution. (We didn't want to do things that might crash the game because something was different from what it expected...) We have had some confusing occasions before with the old behavior where the fonts weren't correctly packaged or something (like when the Catalan translator was sent the first version of the translator pack, or when people customize their fonts wrong) and special characters were just blank spaces. So, instead, for characters beyond 7F, I decided to consider them part of the font, as long as they are not blank. That means, if a character beyond the ASCII range has any (non-alpha-0) pixels, then it will be added, otherwise it won't be. This is just to handle legacy fonts, and the case where all fonts are missing and the one from data.zip is used; new fonts should just use .fontmeta or .txt to define their characters. |
||
---|---|---|
.. | ||
fonts | ||
lang | ||
src | ||
VVVVVV-android | ||
.dockerignore | ||
.gitignore | ||
CMakeLists.txt | ||
CONTRIBUTORS.txt | ||
Dockerfile | ||
fixupMac.sh | ||
icon.ico | ||
icon.rc | ||
README.md | ||
version.cmake |
How to Build
VVVVVV's official desktop versions are built with the following environments:
- Windows: Visual Studio 2010
- macOS: Xcode CLT, currently targeting 10.9 SDK
- GNU/Linux: CentOS 7
The engine depends solely on SDL2 2.24.0+. All other dependencies are statically linked into the engine. The development libraries for Windows can be downloaded from SDL's website, Linux developers can find the dev libraries from their respective repositories, and macOS developers should compile and install from source. (If you're on Ubuntu and your Ubuntu is too old to have this SDL version, then see here for workarounds.)
Since VVVVVV 2.4, git submodules are used for the
third party libraries.
After cloning, run git submodule update --init
to set all of these up.
You can also use this command whenever the submodules need to be updated.
Steamworks support is included and the DLL is loaded dynamically, you do not need the SDK headers and there is no special Steam or non-Steam version. The current implementation has been tested with Steamworks SDK v1.46.
To build the Make and Play edition of the game, uncomment #define MAKEANDPLAY
in MakeAndPlay.h
.
To generate the projects on Windows:
# Put your SDL2 folders somewhere nice!
mkdir flibitBuild
cd flibitBuild
cmake -A Win32 -G "Visual Studio 10 2010" .. -DSDL2_INCLUDE_DIRS="C:\SDL2-2.24.0\include" -DSDL2_LIBRARIES="C:\SDL2-2.24.0\lib\x86\SDL2;C:\SDL2-2.24.0\lib\x86\SDL2main"
Note that on some systems, the SDL2_LIBRARIES
list on Windows may need
SDL2/SDL2main to have .lib
at the end of them. The reason for this
inconsistency is unknown.
Also note that if you're using a Visual Studio later than 2010, you will need to
change the -G
string accordingly; otherwise you will get a weird cryptic
error. Refer to the list below:
- VS 2012:
"Visual Studio 11 2012"
- VS 2013:
"Visual Studio 12 2013"
- VS 2015:
"Visual Studio 14 2015"
- VS 2017:
"Visual Studio 15 2017"
- VS 2019:
"Visual Studio 16 2019"
- VS 2022:
"Visual Studio 17 2022"
To generate everywhere else:
mkdir flibitBuild
cd flibitBuild
cmake ..
macOS may be fussy about the SDK version. How to fix this is up to the whims of however Apple wants to make CMAKE_OSX_SYSROOT annoying to configure and retain each time Xcode updates.
Including data.zip
You'll need the data.zip file from VVVVVV to actually run the game! You can grab it from your copy of the game, or you can download it for free from the Make and Play page. Put this file next to your executable and the game should run.
This is intended for personal use only - our license doesn't allow you to actually distribute this data.zip file with your own forks without getting permission from us first. See LICENSE.md for more details. (If you've got a project in mind that requires distributing this file, get in touch!)