about summary refs log tree commit diff
path: root/pkgs/games
Commit message (Collapse)AuthorAgeFilesLines
* games/itch: Add Towerfall Ascensionaszlig2018-07-012-0/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | Packaging is a bit similar to what we had to do back then with Opus Magnum (see commit 523dcef1f77251a4cfeb3428a0b13c0ec1d9c342) where some game data files were tried to open in read-write mode. I'm using the same patcher (which is using Mono.Cecil) that I have used for Opus Magnum back then but I've cleaned it up a bit. In the long term I'd try to make the patcher a bit more generic so that it can be used for other Mono-based games, because opening game data files in read-only mode seems to be fairly common among a few other games I haven't fully packaged yet. The game also tries to execute "xdg-open error_log.txt" in the event a uncaught exception occurs, which then fails because no xdg-open is available. So instead, I made a small dummy wrapper which just runs "head" on the error.log instead. Another thing which unfortunately is currently not working is the editor, because it tries to create a directory ("Workshop") within the game's content directory, which - again - doesn't work within the read-only Nix store. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add Satelite Reignaszlig2018-07-012-0/+19
| | | | | | | | | | | Another Unit3d game, so packaging is pretty straightforward but the save games and settings are in $XDG_DATA_HOME/SatelliteReign instead of the standard Unity3d directory ($XDG_CONFIG_HOME/unity3d). The standard Unity3d directory however is still used, but it only contains the player log file. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add Thimbleweed Parkaszlig2018-06-282-0/+56
| | | | | | | | | | | | | | | | | This also supports the "Ransome Unbeeped" addon which should get rid of all the beeps from Ransome's voice tracks. I added this by default in the package, because in order to enable it you still either need to enable it every time you start the game or set "forceRansomeUnbeeped: 1" in "$XDG_DATA_HOME/Terrible Toybox/Thimbleweed Park/Prefs.json" to make it permanent. The packaging is pretty straightforward except a small preloader which changes the working directory to the shared data directory so the "ggpack" files can be found. From inspecting the binary this should also be doable by setting the THIMBLEENGINE_GAMEROOT environment variable, but I haven't tried yet. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add Dungeons 3aszlig2018-06-282-0/+19
| | | | | | | | Unfortunately this game doesn't work on my machine, as I don't have support for OpenGL 4.3. However, the game at least gets to the loading screen, so it should work in theory. Signed-off-by: aszlig <aszlig@nix.build>
* games/build-unity: Add support for .app dirsaszlig2018-06-281-1/+6
| | | | | | | | | | | | | | | Some games (well, currently just one, Dungeons 3) come with a .app directory that contains additional game data which includes package .unity3d files. Such directories will be searched relative from the current working directory, so let's actually set the working directory to $out/share/something and copy the .app directory to that if it exists. Tested with Dungeons 3 and also with a few other Unity3d games to see whether they still work. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add Wizard of Legendaszlig2018-06-282-0/+17
| | | | | | A Unity3d game, so packaging is pretty straightforward. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add Overloadaszlig2018-06-222-0/+17
| | | | | | | I have only tested whether loading and saving games works and flew around for about 1 minute in the first mission. Signed-off-by: aszlig <aszlig@nix.build>
* stardew-valley-beta: Update to version 1.3.18aszlig2018-06-191-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While it would be preferrable to have the current version (1.3.19, which is not available for GOG GNU/Linux users right now), this update at least fixes a few of the more nastier bugs. Fixes for 1.3.12 (22 May 2018): * All players seeing milking messages * Object desync on farm between players * Lighting issue in spa * Clocks becoming de-synced from server latency (now will disconnect player) * Network usage high when NPCs moving * Delay when using bombs * Hidden mines ladder to skull cavern * Erroneous thunderstorm weather forecast in summer Fixes for 1.3.13 (24 May 2018): * Added separate chests in the mines for each player * Fishing tent control lock up * Duplicate cursors in minigames * Crashes buying furniture * Freeze ups when fishing during events * Crash caused by ordering a building construction the day before a festival * Crash breaking certain objects in the skull cavern * Horse-related bugs with movement between screens/clipping Fixes for 1.3.14 (25 May 2018): * Re-enabled moving & demolishing buildings in multiplayer (although only host can do it) * Staircases appearing at the bottom of the mines * Mermaid show not playing if volume is muted * Added a quest to hint at the magnifying lens * Crash when selling lots of items to Pierre / through the shipping bin Fixes for 1.3.15 (30 May 2018): * Bundle menu is usable for clients outside of the community center * Break-up event has been made less harsh * Crash upon returning to a level of the mines with a chest, after having just been in it * Machines breaking themselves sometimes when you're near torches * Crash caused by attempting to load a quest that hasn't been localized yet * Monster cries being heard outside of the mines Fixes for 1.3.16 (05 June 2018): * Client 'introductions' quest tracking the wrong number of villagers * Cabin fridges emptying when host reloads * Secret Santa assignments changing * Items missing from festival shops playing in Chinese * Fishing tackle traded breaking after one use * Tree seeds not harvestable in multiplayer * Spouse position issues * Players stuck in wall after Emily's 10 heart event * Wallpaper/Floors vanishing and resetting * Host and client don't sync if a ladder or shaft spawns * Slimes aggroing player during secret woods event * Horse becomes unmountable after entering a new location * Horses vanish when jumping between two quickly Fixes for 1.3.17 (07 June 2018): * Farmhands not able to interact with bundles inside community center * Farmhand tools disappearing after logging out while being upgraded * Museum donations disappearing * Farmhand profession sale bonuses not applying * Artifact donation message appears in English for all languages * Profit margin mistranslated in German * Character names appearing in English while playing non-English character languages * Unable to walk through animals while inside a building * Bug which could make farm animals disappear * Baby gender assignment issue for player/player newborns This releaso also contains a new feature: * Invite code now copyable to clipboard Fixes for 1.3.18 (12 June 2018): * Active players can cancel new player creation for farmhands * Mouseover hover missing for buffs * Horse footsteps using wrong sounds * Crash whenever Marlon's name is used * NPCs end of route animation playing at double speed for clients * NPC positions not syncing at end of route animations (multiple NPCs) * Extra tools spawning overnight if another player has them * Gift giving not properly resetting after upgrading from 1.2 to 1.3 * Mistranslated pt-br seed disc saying to plant in winter * Spa sign in English while playing in Chinese * Proposals cannot be canceled * Fishing rod event not triggering for farmhand * Machines producing 'empty' products Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add Party Hardaszlig2018-06-142-0/+17
| | | | | | | | | Packaging is pretty straightforward, because it's a Unity3d game and we have a build hepler for that. Upstream site: http://www.tinybuild.com/partyhard Signed-off-by: aszlig <aszlig@nix.build>
* games/albion: Temporarily fix loading of libGLaszlig2018-06-101-2/+6
| | | | | | | | | | | I think this has te be fixed in <nixpkgs>, because SDL2 loads libGL at runtime using dlopen(), but recent changes have been made so that libGL.so is no longer in LD_LIBRARY_PATH on NixOS by default. So until then, let's set SDL_OPENGL_LIBRARY, so that SDL2 will load it from that path directly instead of searching in LD_LIBRARY_PATH. Signed-off-by: aszlig <aszlig@nix.build>
* games/albion: Fix build with Automake 1.16aszlig2018-06-091-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has been broken since a while when Automake 1.16 was introduced in NixOS/nixpkgs@e0c155e26b6a73bba06d6f2ced12bd4bcb0d6503. The upstream WildMIDI project has since moved to CMake and the patches from the static recompilation project haven't been ported to a newer version, so we're stuck with the Automake variant. Fortunately, the fix is rather easy and it's more obvious when you look at the changelog of Automake 1.16: The 'subdir-object' option no longer causes object files corresponding to source files specified with an explicit '$(srcdir)' component to be placed in the source tree rather than in the build tree. For example, if Makefile.am contains: AUTOMAKE_OPTIONS = subdir-objects foo_SOURCES = $(srcdir)/foo.c $(srcdir)/s/bar.c $(top_srcdir)/baz.c then "make all" will create 'foo.o' and 's/bar.o' in $(builddir) rather than in $(srcdir), and will create 'baz.o' in $(top_builddir) rather than in $(top_srcdir). So all we need to do is strip off the absolute pathname of libWildMidi.la/libWildMidiA.la and the build passes. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add World of Xeenaszlig2018-06-092-0/+124
| | | | | | | | | | This is the result when you combine Might and Magic 4 and 5 and ScummVM very recently got support for that. See http://scummvm.org/news/20180501 for the announcement. So we're wrapping the game using latest git version of ScummVM. Signed-off-by: aszlig <aszlig@nix.build>
* games/invisigun-heroes: Update to version 1.6.71aszlig2018-05-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The hotfix release 1.6.71 contains the following fixes: * UI: Fixed sorting of UI dialogs when in-match * UI: Fixed missing Chinese translation for training menu label * UI: Fixed resolution "free" label value change when changing languages New features in version 1.6.70: * New localization: French * New localization: Chinese * UI: Language selector is presented on first launch * UI: Some title screen layout adjustments for localization (complete reskin later) * CRONUS: Finally has a unique victory pose (like the rest of the cast) Fixes in version 1.6.70: * GAME: GIF export files are properly closed when canceling * GAME: Fixed empty powerup crate falling once on clients if all powerups are disabled * GAME: Fixed not being able to split shots on clients if projectile is already destroyed on the host * GAME: Fixed possibility for two projectiles to create a blast barrier instead of hitting objects * GAME: Fixed missing left ember spawner on The Catacombs * GAME: Random map is refreshed when returning to the lobby from a match * GFX: Fixed the tint of Epi's ghost in his victory pose * UI: "Keyboard" is now properly localized on player selectors * UI: Fixed potential for game to stall if localized text parsing fails in some edge cases * UI: Better spacing in GIF end cards for multi-line Steam usernames * UI: Fixed Connect button being selected after removing IP digits using the GUI * UI: Various minor layout fixes for different locales * UI Fixed ready up indicator minor scaling issues * AUDIO: Fixed replays always playing SFX at max volume * EPI: Fixed ghost Epi getting hit instead of real Epi if standing in the same spot Full upstream change log: https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt Signed-off-by: aszlig <aszlig@nix.build>
* games/stardew-valley: Mark beta as lowPrioaszlig2018-05-191-1/+3
| | | | | | | This is to make sure that noone accidentally installs this either via "nix-env -i" or via "nix-env -u". Signed-off-by: aszlig <aszlig@nix.build>
* games/stardew-valley: Add multiplayer betaaszlig2018-05-192-7/+37
| | | | | | | | | | This adds version 1.3.11 of the ongoing multiplayer beta, so it can be conveniently installed via Nix :-) I haven't tested this a whole lot, only started a new farm, walked around and that's it. Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/fetch-gog: List more download typesaszlig2018-05-191-1/+1
| | | | | | | | | | | So far we only showed the main installer packages that are available for a certain game. However there are other things such as downloadable content and related products that we might be interested in. I needed this mainly because the Stardew Valley beta download is listed as bonus content. Signed-off-by: aszlig <aszlig@nix.build>
* games/stardew-valley: Add libGL to LD_LIBRARY_PATHaszlig2018-05-171-1/+2
| | | | | | | | | | | I haven't bisected this to know the exact commit that made this change necessary, but it might be that SDL2 now no longer propagates libGL anymore. If this is the case for other games as well, I might want to do a bisect, but for now let's just fix it. Signed-off-by: aszlig <aszlig@nix.build>
* games/liads: Add sandbox path for XDG_DATA_HOMEaszlig2018-05-171-1/+3
| | | | | | | Unlike the other Unity3D games, LIADS writes settings and save files to XDG_DATA_HOME, so we need to add it to the required sandbox paths. Signed-off-by: aszlig <aszlig@nix.build>
* games/liads: Update to version 1.4.5 (2018-04-27)aszlig2018-05-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes since version 1.3.2 (2016-01-20): 1.4.5 (2018-04-27) * Removed Google Analytics. * macOS build now supports 64-bit. * Minor localization fixes. 1.4.4 (2016-09-07) * XInput now enabled by default on Windows (bypasses some controller problems with Windows 10 Anniversary). * Fixed phantom inputs when using XInput. * Fixed -debuginput launch option not working when XInput is enabled. * Added -disabledpad launch option to disable default mapping of the d-pad. * Updated input device profiles. 1.4.3 (2016-07-22) * Added debug option to get more information about attached controllers (available by launching with the argument "-debuginput") * Updated input device profiles 1.4.2 (2016-07-12) * Better handling of unrecognized controllers * Better support for the Steam Controller on Mac 1.4.0 (2016-05-12) * Four player support! * New playable character skins * Difficulty balances * Automatic support for many controllers (including PlayStation controllers) with no need to manually remap buttons * Support for XInput controllers and rumble (Windows only) * Displays PlayStation button prompts when using PlayStation controllers * Better compatibility with non-standard controllers * Steam Cloud saves are synced cross-platform * Ability to cap frame rate when vsync is disabled Signed-off-by: aszlig <aszlig@nix.build>
* games/starbound: Add libGLU as dependencyaszlig2018-04-251-3/+3
| | | | | | | Starbound not only needs libGL but also libGLU, so let's actually include that dependency in its combined form (libGLU_combined). Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/games: Replace usages of mesa with libGLaszlig2018-04-2113-25/+25
| | | | | | | | | | | | | This has been changed in NixOS/nixpkgs@6bf1421f13d667c2997b67728cf777c6, so let's change it here as well. Quote from the mentioned commit: Implement libGL as a symlink package which uses libraries from libglvnd and headers from Mesa (since ones from libglvnd are outdated). Signed-off-by: aszlig <aszlig@nix.build>
* games/invisigun-heroes: Update to version 1.6.50aszlig2018-04-201-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New features: * UI: Player colors are changeable in the lobby for the match * UI: Available powerups can be customized in match setup * UI: Exported animated GIFs have an end card with the winning hero, date, and Steam name Updates: * PROTEUS: Scanner drone shock count reverted to 3 pulses instead of 2 * CRONUS: Bomb drop speed increased from 10 to 12 * CARMEN: Blocks take 3 bumps to remove the reflector shield instead of 5 * CARMEN: Max simultaneous blocks reduced from 3 to 2 * CARMEN: Spam detection time window increased from 0.5s to 0.75s after placing a block * PHOEBE: Phoebe can't teleport back for 0.25s after teleporting * RONIN: Spam count reduced from 3 to 2 slashes before cooldown sets in * GAME: Guardians deploy from powerup pickup position * GAME: Land Grab default time limit reduced from 150s to 90s * GAME: Birds will scatter from Aether's pound and Cronus' bombs * GAME: More heroes can reliably buffer the next shot during their ability * NET: Host join key is persistent for the entire game session if the region is the same * NET: Last client join key used is saved for the session * UI: Guardian shows an indicator over targeted players when they are visible * UI: Title & Invisigun electricity FX don't continue forever * UI: Initial player choice is consistent (always begins on Selene) * UI: Custom phrases show an indicator on the victory phrase dialog * UI: Changed training pause label from "Exit" to "Menu" * UI: Updated victory phrase character presentation * UI: Lobby hero selectors show a loading spinner until they're ready for input * UI: Improved some powerup icons * UI: Added some icons to options buttons * UI: Smoother and more accurate replays and exported GIFs * UI: Even faster animated GIF exporting * UI: Replay GIFs show connection strength for online matches * UI: Better mini powerup icons on the scoreboard * SFX: Updated map loading audio cue * GFX: Power shots have a subtle animation on the front of the projectile * GFX: Softer rolloff for lighting fx Map updates: * The Conundrum: layout adjustments * Polar Express: minor tile swap, fewer ember spawns from the edges Fixes: * CARRIER: Fixed some bumping and positioning issues * SELENE: Selene can't evade scanner drone detection by jumping anymore * SELENE: Fixed not being able to buffer a shot after a double jump * CRONUS: Fixed issues with bomb trail timings when the game is paused * CRONUS: Fixed drop target stopping when bringing up the match menu during an online game * CRONUS: Fixed soot tracks sometimes showing up where a player was before stepping into soot * PHOEBE: Fixed proper destruction of projectiles teleported under mine carts * PHOEBE: Added some failsafe checks to prevent Phoebe getting shot immediately after teleporting online * PHOEBE: Potential fix for getting shot right after teleporting online * EPI: Fixed real Epi disappearing from spectator view & replays while ghost Epi is teleporting * EPI: Fixed possibility for remote client Epi to teleport to ghost's position on button mash * EPI: Fixed ghost Epi not leaving soot prints from Cronus' bombs * IRIS: More accurate powerup pickups while dashing online * IRIS: Fixed occasional failure for client dashes to work properly on remote connections * IRIS: Fixed occasional inability to dash through proximity doors * RONIN: Fixed some slash FX not showing up for remote clients * GAME: Fixed incorrect bot showing victory pose * GAME: Guardians could destroy the wrong shots if the original target was already destroyed * GAME: Fixed potential for mine carts to get stuck against some rocks * GAME: Fixed conveyor belt speed and player positioning due to physics timestep changes * GAME: Potential fix for projectiles sometimes stalling * GAME: Powerups don't repeatedly drop while the match is inactive * GAME: Fixed potential for projectiles to sometimes ricochet in diagonal directions * GAME: Fixed potential for two orthogonal projectiles to sometimes create diagonal cluster bombs * GAME: Fixed players not being able to get hit by their own split shots * GAME: Fixed players being invulnerable to their own cluster shots * GAME: Improved accuracy of cluster bomb spawn location * GAME: Fix for hitting your own resisted shots if walking into them with lag * GAME: Fixed an issue causing short stun times canceling existing, longer stun times * GAME: Fixed occasional possibility for players to be invisible during respawns or round resets * UI: Navigating back from Match Setup after arriving from Host a Match returns to Join Scene * UI: Fixed incorrect "up" controller label on player selectors in lobby * UI: Fixed traning pause menu input label when switching between keyboard and controllers * UI: Fixed spectator replay controls when switching between keyboard and controllers * UI: Fixed flickering UI elements on instant replay following export of GIF * UI: Fixed erratic replay lengths, playback, timing and GIF exports depending on device specs Full upstream change log: https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt Signed-off-by: aszlig <aszlig@nix.build>
* games/albion: Fix ancient wildmidi against GCC 7aszlig2018-03-072-0/+26
| | | | | | | | | The first error is that there was a case statement fallthrough which was actually unintended and is a bug in the ancient wildmidi used here, while the second one was because of a structure that wasn't initialized to zero before first use. Signed-off-by: aszlig <aszlig@nix.build>
* starbound: Fix preloader snprintf sizeaszlig2018-03-071-1/+1
| | | | | | | | | | | | | | | | I explicitly didn't want to include a \0, but unfortunately with GCC 7 a check is performed on the size of the format arguments and the build now fails with: '__builtin___snprintf_chk' output between 5 and 9 bytes into a destination of size 4 The dereference of the str pointer gives us one byte, so the size of the format argument will be 4 in any cases plus the 0 byte at the end. While we don't need the 0 byte because it will be added later, it doesn't hurt so let's use a maximum size of 5 to keep GCC 7 silent. Signed-off-by: aszlig <aszlig@nix.build>
* games/albion: Add missing patch filesaszlig2018-03-072-0/+81
| | | | | | | These are the patches I forgot to add to 77a0f47d06f3d21b78c7f34a129bc3f75d69fbf7. Signed-off-by: aszlig <aszlig@nix.build>
* games/invisigun-heroes: Update to version 1.6.15aszlig2018-03-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New features: * Localization: Italian * New Cerebrus map: Summit * New Cerebrus map: Yinyang * New Cerebrus map: Polar Express Updates: * CRONUS: Bombs no longer show nearby player indicator * CRONUS: Bomb impact area powers up the longer the target is left out * CRONUS: Bombs briefly show the impact area when a target is marked * CRONUS: Bombs leave soot on the floor which makes players leave a footprint trail * PROTEUS: Scanner drone shocks tagged players 2 times instead of 3 * PROTEUS: Scanner drone re-deploy cooldown also applies to self-destruction * UI: Simplified lobby host info; better readability and presentation * UI: "Join Code" is now known as a "Join Key" * UI: Post-round scoreboard shows Steam nicknames * UI: Post-match stats table headers changed to icons for localization space * UI: Reduced controller vibration in some UI scenes * GFX: Better tile transitions in maps with very different adjacent surface types * GFX: Improved Selene's victory pose sprite * SFX: Subtle audio cue when you first start moving to another tile, as input confirmation Fixes: * CRONUS: Fixed an issue where the center bomb tiles spawned simultaneously instead of staggered * CRONUS: Fixed bomb trails damaging scanner drones by touching their scan radius * GAME: Fixed revealer carrying over to the next round * CARRIER: Fixed carrier ball interactions while players are teleporting * UI: Fixed being able to quickly back out of scenes while they are transitioning in * UI: Fixed "Player Disconnected" popups when remote clients try to join an active match * UI: Fixed spam cooldown indicator still visible when a player dies * UI: Fixed blank lobby region flag when joining a match in "ANY" region * UI: Fixed flag icon showing in lobby when connected via IP * UI: Long controller names are truncated in lobby player selectors * GFX: Fixed pit beasts sorting issues with sand piles * GFX: Fixed y-sorting of Beast Tamer coins * GFX: Fixed y-sorting of some fence posts on Ice Prison * GFX: Fixed map objects showing proper bump FX over network * SFX: Fixed music fade out when exiting challenge mode Full upstream change log: https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt Signed-off-by: aszlig <aszlig@nix.build>
* build-game: Remove installCheckPhaseaszlig2018-02-221-31/+1
| | | | | | | | | | | | This is quite redundant because autoPatchelfHook already scans all shared objects and executables for dependencies and bails out with an error if a dependency isn't found, which is similar to what we're doing in installCheckPhase. Removing this should also speed up builds, especially those with lots of files. Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/games/gog: Add Stardew Valleyaszlig2018-02-222-0/+47
| | | | | | | This is quite straightforward and very similar to most other Mono games and even uses XDG directories already. Signed-off-by: aszlig <aszlig@nix.build>
* fetch-gog: Try to login without captchaaszlig2018-02-222-16/+327
| | | | | | | | On some occasions a captcha isn't needed for login (not sure exactly when this is the case), so we really should just log in without it instead of bailing out with an error. Signed-off-by: aszlig <aszlig@nix.build>
* build-game: Properly find sourceRootaszlig2018-02-221-6/+5
| | | | | | | | | | | | | | | | So far we only checked for the source root by checking only one level of directories, so for example if the source code is unpacked into something like "a/b/c" and only "c" contains files, the previous implementation would set the source root to be "a". In addition we didn't do a check on the type of the contents, so for example if the archive contains only *one* file, that *file* itself would be set as the source root and the chdir to that will fail later. What we do now is recursively search through directories in order to find the last directory that does not contain *only* a subdirectory. Signed-off-by: aszlig <aszlig@nix.build>
* games/gog: Add statically recompiled Albionaszlig2018-02-217-0/+697
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We only fetch the data files from GOG here and use the port from OpenPandora (https://repo.openpandora.org/?page=detail&app=albion_sr) for the main game executable. Instead of using the binaries of the static recompiler, this is completely compiled from source and comes with a few changes in the form of a few patches: config.patch: Hide the mouse cursor and set the default scaled resolution to 1280x960 (the window can still be resized) in the default albion.cfg. error-log-stderr.patch: Whenever an error happens, the game usually creates a file called "error.log", which contains the actual error message. This patch makes sure the file isn't created but the error message is printed to stderr. scons.patch: Fixes a few SConstruct/SConscript files to use the builder's environment, so that it can find executables such as gcc. sdl2.patch: SDL 2 has dropped support for the keysym.unicode field at some point, so use keysym.sym instead. This has the disadvantage that it doesn't recognize key modifiers, so we might want to switch this to use the SDL_TEXTINPUT event. xdg-paths.patch: We want to use XDG_CONFIG_HOME and XDG_DATA_HOME instead of writing everything to one directory, so this patch makes sure that the paths are correctly read depending on whether its an XDG directory or one of the store paths of the game. Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/games: Add a basic fetcher for GOGaszlig2018-02-213-1/+283
| | | | | | | | | | | | | | | | | | | | | | | | | | We're in almost the same misery here as with HumbleBundle, because we can't get stable download URLs with manifests for games that have an "os" field of either "windows" or "osx". Unfortunately, this isn't the only hoop we're going to, because similar to the HumbleBundle fetcher, we need to solve a (re)captcha in order to login (and I've been annoyed by countless cars, street signs, roads, busses, store fronts, hills and mountains during development). I tried looking for a way to get an API key similar to what itch.io is doing, but the only mechanism in place is a temporary key which needs to be refreshed using the old key after a while, so it's unsuitable for our case. The code currently is very much _not_ DRY, because a lot of it is copied over and modified from fetchHumbleBundle, especially the captcha solving application. It's really a shame to see the same situation that we have for HumbleBundle in GOG, given that HB is getting less DRM-free games these days and GOG is DRM-free *only* (which is a very good thing). Signed-off-by: aszlig <aszlig@nix.build>
* build-unity: Properly re-add attributesaszlig2018-02-091-2/+2
| | | | | | | | A few attributes weren't re-added to the actual derivation, so for example whenever we add buildInputs to buildUnity the attribute would be completely ignored. Signed-off-by: aszlig <aszlig@nix.build>
* games/invisigun-heroes: Update to version 1.6.15aszlig2018-02-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New features: * New Cerebrus map: Back to the Future Updates: * RONIN: Slashed players will incur 0.25s of hard stun / push back, and 0.35s of soft stun * PROTEUS: Scanner Drone won't continue to shock dead players * PROTEUS: Next Scanner Drone has a 3s cooldown from the time the last was destroyed (if shot down) * CRONUS: Drop target movement speed increased from 0.17s to 0.15s per tile * CRONUS: Bomb hit time & lingering fire increased from 1s to 1.5s * AETHER: Ground pound hit window is active for 0.25s instead of 1 frame * GAME: Arx-515 teleporters are disabled for 1.25s while being used * GAME: Reduced visibility time after firing from 0.75s to 0.5s * GAME: Slightly reduced replay recording memory usage * GAME: Improved presentation of players visible due to Revealer powerup * GAME: Players are snapped to the nearest tile when firing perpendicular to movement * GFX: Removed FX when revealer ends, which had the potential to reveal real Epi's position * GFX: Clarified readability of some boundaries on Aqueduct * GFX: Powerup parachute drops are slightly transparent until near the ground * UI: Hero Profile demos properly show ability cooldown indicators Fixes: * EPI: Fixed cluster shots from ghost Epi breaking shields * CRONUS: Fixed target disappearing on clients after attempting a drop over a disallowed area * CRONUS: Better drop target local simulation and feel for remote clients * MAPS: Added missing fence posts around holes on Conundrum * GAME: Slightly increased physics step rate to prevent some fast-moving collision misses * GAME: Fixed bumping builder blocks destruction after the reflection shield is already gone * GAME: Fixed potential to get shot in your original spot after teleporting online * GFX: Fixed projectile collision visuals' positions due to high-speed physics * GFX: Fixed projectile collision visuals' positions on network clients * GFX: Fixed exported GIF speeds due to vsync differences * UI: Fixed occasional disappearing in-match pause menu * UI: Fixed Proteus hero profile demo * UI: Fixed insane speed when changing controller setup types using analog sticks * PREFS: custom config file will no longer be reset during updates (after this release) * PREFS: custom config file has option to disable fullscreen FX for strobe-sensitive players Full upstream change log: https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/games/humblebundle: Add Owlboyaszlig2018-02-092-0/+103
| | | | | | | | | | | Very similar to other games using Mono, but this has a similar problem to what Opus Magnum had (see 523dcef1f77251a4cfeb3428a0b13c0ec1d9c342) but instead of using Cecil for patching I'm using LD_PRELOAD instead because the number of occasions we need to patch is not only higher but also there are different constructors in use for System.IO.FileStream, so patching becomes much much harder. Signed-off-by: aszlig <aszlig@nix.build>
* games/opus-magnum: Update to latest versionaszlig2018-02-041-79/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Upstream changelog summarized: * Switch to DirectSound on Windows. * Remove iron-on patch link. * The Hexstabilized Salt puzzle now requires 18 outputs instead of 6. * Add a new journal issue that is entirely production puzzles. * Add a hidden option that will hopefully fix some of the sound issues that were introduced when we rewrote our audio backend. * Add a new issue to the journal with some "battlefield medicine" themed puzzles. * The game's content files are now opened as read-only, which should hopefully fix some of the antivirus-related crashes some players have been experiencing. * Atom spawn/consume effects on glyphs are now cleared when the simulation is stopped, which should fix a bug causing "ghost atoms" to linger on the board. I've made this summary by picking the relevant parts of the upstream Steam announcement page at: http://steamcommunity.com/games/558990/announcements The best part about the changes is that content files are now opened read-only, so we can finally drop all that patching. This also is the first time I can say something positive about AV software, so thanks for bugging Zachtronics into fixing this issue for Nix as well :-) Signed-off-by: aszlig <aszlig@nix.build>
* auto-patchelf: Move checkElfDep into buildGameaszlig2018-02-011-0/+7
| | | | | | | | Having a function in autoPatchelfHook that's unused inside the setup hook is a bit of weird, because the actual usage is within buildGame and thus it should stay there for now. Signed-off-by: aszlig <aszlig@nix.build>
* auto-patchelf: Move into pkgs/build-supportaszlig2018-02-013-155/+2
| | | | | | | | | This is really not game-specific, so let's put it at the top-level and also make sure we substitute all the commands we're using there, even though a few of them are in PATH of stdenv so that it will always work even when the programs available in stdenv should change someday. Signed-off-by: aszlig <aszlig@nix.build>
* auto-patchelf: Only search for deps with same archaszlig2018-02-011-4/+11
| | | | | | | | | | | | So far we only matched the file name of the dependency but not its architecture, so if for example there is one shared object for i686-linux and another one with the same name but for x86_64-linux, chances are that the wrong architecture is chosen. Now we're checking the architecture of the shared object file and only pick it, if it matches the architecture of the file to patchelf. Signed-off-by: aszlig <aszlig@nix.build>
* auto-patchelf: Clean up a bitaszlig2018-02-011-7/+11
| | | | | | | This makes sure that ldd doesn't print warnings like if the file isn't executable and also makes the status messages a bit more clear. Signed-off-by: aszlig <aszlig@nix.build>
* auto-patchelf: Fix adding env hookaszlig2018-02-011-1/+1
| | | | | | | | | | | | | | The semantics of adding env hooks has changed in NixOS/nixpkgs@7f3ca3e21a22fd3101b40cadb86899542dec2e35 so that it's now broken up into several hook variables (envBuildBuildHook, envBuildHostHook, envBuildTargetHook, envHostHostHook, envHostTargetHook and envTargetTargetHook). Fortunately commit NixOS/nixpkgs@a036473a0a0c6100fce316e1444fc33ec6674b adds a helper function (addEnvHooks) to deal this without referencing those hook variables directly and rather just providing an offset. Signed-off-by: aszlig <aszlig@nix.build>
* fetchHumbleBundle: Run get-captcha off-the-recordaszlig2018-02-011-1/+4
| | | | | | | | | | | | | | | | | | | | | We don't want this little helper to leave all kinds of junk on the disk, so let's enable offTheRecord mode for the default QtWebEngine profile. This in turn causes all stuff like cache, cookies, local storage and whatnot to only reside in memory. For example on my machine I had lots of files like this in ~/.local/share and ~/.cache: * 014bxyklf1xm99jd5rg8y4q0blmqw6yc-get-captcha * 18j0knrwrsamsrpwjz741midspxbqmpp-get-captcha * 4817rvjnj249ifvk7dsvv2p0kxi2jwkg-get-captcha So if you ran this helper you should probably remove *-get-captcha in XDG_DATA_HOME (by default ~/.local/share) and XDG_CACHE_HOME (by default ~/.cache). Signed-off-by: aszlig <aszlig@nix.build> Cc: @Profpatsch, @Sternenseemann, @layus
* games/invisigun-heroes: Update to version 1.6.1aszlig2018-01-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New features: * New hero: Cronus * New planet: Cerebrus (Kickstarter Cartographers' designs) * New Cerebrus map: Temple Garden * New Cerebrus map: Triple Trouble * New Cerebrus map: The Four Seasons * New Cerebrus map: Aqueduct * New Cerebrus map: Ice Prison * New Cerebrus map: Cold Storage * New Cerebrus map: The Conundrum * Localization: Spanish (Latin American, ES-419) Updates: * UI: Added ability to change the game mode in the post-match menu * UI: Improved map thumbnails (reflects game-lighting) * UI: Time-based game modes modifier increment changed from 10s to 5s * UI: Changed UI title font to support more localization glyphs * GFX: Cluster bombs match their owner's color Fixes: * UI: Fixed "FREE" resolution setting in windowed mode always reverting back to fixed sizes * UI: Fixed resolution / bluriness when using Alt+Enter to toggle fullscreen Full upstream change log: https://s3-us-west-1.amazonaws.com/sombr-invisigun/messages/ReleaseNotes.txt Signed-off-by: aszlig <aszlig@nix.build>
* games/humblebundle: Add Opus Magnumaszlig2017-12-132-0/+119
| | | | | | | | | | | | | | | | | | | | | | | | | Upstream URL: http://www.zachtronics.com/opus-magnum/ For this I've ripped apart all of the bundled shared objects including Mono itself, so we're using Mono from <nixpkgs> instead of the provided one. In addition to that I had to patch the intermediate language because the game really doesn't cope very well when the data files are read-only, which is the case in the Nix store. Instead of replacing the CIL, I could have used an LD preloader as well, but I think this is way less error-prone even though we had to patch a few internal classes where we couldn't match the name properly. Compared to this an LD preloader would involve patching several symbols and also implement some logic to distinguish between files read from the data directory and files read/written to XDG_DATA_HOME. The reason why I added $HOME/Desktop to the required sandbox paths is because the game saves gif images into that directory. Signed-off-by: aszlig <aszlig@nix.build>
* build-sandbox: Move to top-level build-supportaszlig2017-11-3011-1008/+2
| | | | | | | This is not only useful for packaging games, so let's make it available from the vuizvui scope, so we can use it from other packages as well. Signed-off-by: aszlig <aszlig@nix.build>
* games/invisigun-heroes: Add missing sandbox pathaszlig2017-11-241-0/+2
| | | | | | | | | For replays and custom phrases, Invisigun Heroes writes them to "$HOME/Invisigun Heroes", so we need to bind-mount that directory to the chroot as well. Signed-off-by: aszlig <aszlig@nix.build> Cc: @Profpatsch
* pkgs/build-unity: Make saveDir optionalaszlig2017-11-211-3/+5
| | | | | | | | If the saveDir isn't set the game only gets access to all the saveDirs from other Unity games, so missing that attribute shouldn't be a deal breaker. Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/build-unity: Add a saveDir attributeaszlig2017-11-214-2/+5
| | | | | | | | This is used for sandboxing and instead of letting all Unity games access the data of every other Unity game we now restrict it to its own save directory only. Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/sandbox: Handle non-existing pathsaszlig2017-11-215-32/+59
| | | | | | | | | | | | | | | | | | We now distinguish between paths that have to exist and paths that are fine to skip during bind mounting. So far we had hard failures whenever a path that needed to be mounted didn't exist, for example something like $XDG_CONFIG_HOME/unity3d failed whenever the directory didn't exist. Apart from that we now have a more clean attribute structure for sandbox parameters, which are now: * paths.required: Created prior to bind-mounting * paths.wanted: Skipped if it doesn't exist * paths.runtimeVars: Extracted from PATH-like environment variables Signed-off-by: aszlig <aszlig@nix.build>
* pkgs/games: Display error if config is omittedaszlig2017-11-211-2/+2
| | | | | | | This originally was in the nixgames repository but I accidentally omitted the attribute emitting the error message during refactoring. Signed-off-by: aszlig <aszlig@nix.build>