Subscribe to GameFromScratch on YouTube Support GameFromScratch on Patreon
6. April 2018


NightDive Studios, who specialize in releasing updated old classics, as well as the developers of a System Shock reboot currently in progress, justImage result for nightdive studios released the source code for the original System Shock on Github.  The code is released under the GPL license and with one pretty series downside… it’s the Mac port of System Shock.  This means building it is going to be a virtual nightmare for most people, as it requires a chip hardware ( Power PC ) that is no longer available as well as a compiler (CodeWarrior for Mac) which is no longer sold.   The release is also code only, so none of the data files are provided. 


Details from Github:

A project file for Metrowerks Codewarrior is provided in ShockMac/Shock.µ

You will need a PowerPC to build the Mac version of System Shock. Fortunately, there are emulators out there that are able to run PowerPC Mac Applications, like SheepShaver. You also need Metrowerks CodeWarrior 10 Tools to build the project and Stuffit Expander to unpack the project files and source code. The game was initially built with an older version of CodeWarrior, but we tested it with CW 10 Gold Tools (IDE 1.7) and it was able to build a working executable. Things you will need:

  • A PowerMac or an emulator like SheepShaver;
  • CodeWarrior for PowerPC (CW 10 Gold Tools works)
  • The original Mac System Shock data.


So obviously this is mostly useful as a code reference.  It will be interesting to see if the community does anything with this, System Shock is one of the all time greats.

GameDev News

4. April 2018


GameMaker Studio 2.1.4 was just released.  German, French and Spanish speakers rejoice, as GMS has be localized to those languages, chosen during the installation process.  If you are interested in learning more about GameMaker Studio 2, be sure to check our Closer Look at GameMaker Studio 2 review.

In addition to the new localization, GMS2 contains several other improvements and fixes, details from the release notes:

  • The audio engine has been consolidated across all platforms and audio synchronisation issues have been fixed
  • Support for IPv6 has been introduced within the networking functions - if you find any issues, please send a sample project to the Helpdesk
  • Async network connection events now contain a new 'other_port' variable
  • #macro definitions now support configs. Use the syntax #macro CONFIG:MACRONAME to override #macro MACRONAME for a given config
  • Buffer-management functions buffer_compress() and buffer_decompress() added
  • Tilemap-management functions tilemap_set_width() and tilemap_set_height() added
  • Fixed an asset compiler crash when a SWF is imported over an existing sprite
  • Instances now correctly inherit Object Variables from parent instance
  • Fixed issues with startup sequence when launching a Steam game outside of the Steam client
  • Fixed issue where a view was not updated first when calling camera_apply()
  • Fixed issues with gamepad support on mcOS and Ubuntu
  • Fixed issues with some string comparisons failing in YYC
  • Fixed issues with screen_save() on several platforms
  • Fixed issues with physics bodies when removing all fixtures and then adding a new fixture
  • Fixed 28482 - Asset Compiler crashes if you have /* as your last line
  • Fixed 21791 - Memory leak when loading/unloading Audio Groups
  • Fixed 28894 - Global variables created using the variable_global_set function don't show up in the watches
  • Fixed 28933 - Steam: Leaderboards - Emojis in usernames cause runner crash
  • Fixed 27413 - GM_version returned only 3 parts of the version number on several platforms
  • Fixed 28946 - font_add_sprite_ext(spr, str, true, 0) when using SWF for "spr" crashes the runner
  • Fixed 28376 - Sprite Editor: [Precise overrides Manual mask values, but the editor does not communicate this properly]
  • Fixed 28723 - steam_set_stat_float doesn't work correctly
  • Fixed 28610 - Object variables of type "Colour" don't seem to work on certain platforms
  • Fixed 28759 - Added new function bool(val) - returns val as a boolean, if val is a number then if it is >0.5 then it is true, if it is a string it will be converted to a number and if >0.5 then it is true, if a ptr it is treated as a number, otherwise it is false.
  • Fixed 28716 - Asset compiler crashes when building this project as there are empty views
  • Fixed 28698 - instance_deactivate_layer doesn't deactivate instances on a layer as they still move using built in variables
  • Fixed 28636 - Having a comma in your YoYo Account name causes a 'Permission Error' compile error when running
  • Fixed 28632 - Issues with instance depth when importing from 1.x
  • Fixed 28358 - Spine: Event information only takes the default value and ignores the value at individual keyframes
  • Fixed 28483 - Debugger: Breakpoints in Clean Up event not triggered if event called by game_end()
  • Fixed 28494 - Configurations: Swapping configs on new projects doesn't work, uses first run config instead
  • Fixed 27564 - Remote Worker: There is no way to set the Steam SDK location
  • Fixed 28367 - Runner titlebar is thinner and uses 1.4's runner icon if built using YYC
  • Fixed issues with image alpha not being processed correctly when compiling using the Mac IDE and running on Mac
  • Fixed 28815 - window_set_fullscreen() doesn't work unless multiple game options are enabled
  • Fixed 28757 - Providing a larger splash screen than your display resolution causes your splash screen to break
  • Fixed 28583 - Xbox One controller has mis-mapped inputs on Mac Runner
  • Fixed 26920 - show_debug_message() doesn't work on Mac IDE
  • Fixed 28021 - YYC runs can't be stopped by the IDE
  • Now support 16.04 LTS 64bit (and this is what the runner is now built using)
  • Fixed Steam integration
  • Changed default index.html template to include "window.onload = GameMaker_Init" to allow delayed game start, so you can inject startup code into your pages, etc.
  • NOTE: If you are using a custom index.html you will need to add that new line, otherwise you'll just get a black screen on startup
  • Fixed 28227 - tilemap_clear() no longer skips some tilemap cells
  • Fixed 24947 - ds_list_sort() does not work in HTML5 (now works generally close to Windows's behaviour)
  • Fixed 25723 - window_get_cursor() returns cr_none by default, in spite of GGS setting
  • Fixed 28626 - load_csv() throws a reference error when used
  • Fixed 28765 - ds_map assumes pairs with "undefined" values to be nonexistent
  • Fixed 22247 - pointers are not identified by is_ptr()
  • Fixed 22248 - ds_list_find_value() unable to return a stored pointer
  • Fixed 15450 - window_has_focus() is incorrect at game launch
  • Fixed 17677 - HTML5 module cannot read INI entries stored from ds_grid_write()
  • Fixed 28774 - buffer_delete() does not fully free up the buffer data
  • Fixed 28331 - Drawing a # using draw_text breaks your alignment
  • Fixed 23271 - sprite_delete() doesn't release VRAM in HTML5
  • Fixed 24669 - High DPI Support
  • Fixed 28821 - Some ds_ functions don't return "undefined" on out-of-bounds access like native ones
  • Fixed 20399 - keyboard_key behaves differently in HTML5 than Windows
  • Fixed 19081 - Obfuscated function crashes application after cutscene plays
  • Fixed 25628 - string_count(chr(13), " " + chr(13)) yields 0
  • Fixed 25577 - file_text_write_string() turns "#" into newlines
  • Fixed 21165 - background_get_height() returns cropped texture height instead of asset height
  • Fixed 16924 - game_end() causes an error
  • Fixed 15608 - Destroy Map HTML5 does not remove nested maps
  • Fixed 24070 - texture_set_interpolation is not supported on 2d
  • Fixed 28817 - Select functions replace "#" with newlines while they don't on native
  • Fixed 28309 - Using skeleton_animation_set_frame() freezes your animations permanently
  • Fixed 19994 - 'Destroy instances at position' action does not work as expected
  • Fixed 28760 - Function.arguments is deprecated
  • Fixed 28627 - Keyword "undefined" handling fixed
  • Fixed 28620 - Object Variable definitions do not work on HTML5
  • game_end() will send the game to the background and return the user to the Android desktop, as per Google's specification
  • Debug dialogs show_question(), show_message(), get_string() and get_integer() have been deprecated - please use the '..._async()' versions instead
  • Fixed 29109 - Android package names with a '.' anywhere in the string are disallowed
  • Fixed 28863 - "Always do full install of APK" setting in Preferences in Android tab doesn't work
  • Fixed 28846 - 'APKExpansion' extension does not create a .zip
  • Fixed 25340 - Android SDK 25.2.3+ has no separate "Support Library" package - update Andriod options
  • Fixed 28484 - Uncaught TypeError: _uC1.getParameter is not a function when setting collision mask in GML
  • Fixed 28643 - Runner crashes if you use draw_text_ext with string_width
  • Fixed 28065 - Does not actually disable Lint analysis when this game option is set
  • Fixed 22689 - YYC builds fail if folder path contains special characters
  • Fixed showing the correct splash screens for iPhone SE, 7, 8 and X
  • game_end() won't do anything on iOS now
  • Debug dialogs show_question(), show_message(), get_string() and get_integer() have been deprecated - please use the '..._async()' versions instead
  • Fixed memory leak when calling extension functions
  • Fixed 27752 - iOS debug should connect without requiring the device's IP to be provided by the user
  • Added support for the Microsoft 2017 stats and achievements system
  • Added xboxlive_matchmaking_join_session to join a specific session handle
  • Fixed 28400 - Fullscreen switching on Alt+Enter now works
  • Fixed 28398 - Disable cursor on windows now works
  • Fixed 28742 - Windows UWP splashscreen background colour only shows blue on build
  • Fixed 26092 - Remote Worker: Unable to use UWP as a target since no target for UWP can be provided
  • Fixed 28613 - Games crash upon being restored after the OnSuspended event has been fired

GameDev News

2. April 2018


LÖVE 11.0 was released yesterday… yes, on April Fools day.  You may notice that goes silent every April 1st I take a holiday from the internet to avoid the “humour”.  Turns out this was actually a real release and yes, they did in fact rebrand their versioning, by going from 0.11.x style numbering to 11.0 to represent that maturity of the product.  I personally agree with this change (although not the date of the announcement) as the low version numbers really hid just how mature a library love was. 

As to this release, there is actually quite a bit going on here.  Quite a few upgrades in the audio department, a move to normalized numbers for colour data as well as >8bit colour support.  The actual full list of changes is pretty massive, here however are the highlights from the forum:

  • Loads of audio additions:
    • Queueable audio sources
    • Recording support
    • Support for audio effects and filters
    • A simplified Source API
  • Added a module, containing functions for encoding, hashing and compression
  • Added Transform objects to love.math
  • Added more ImageData formats, Image formats, and new texture types
  • Added support for depth buffers
  • Added a deprecation mechanism
  • Added automatic batching
  • Deprecated love.filesystem.exists / isFile / isDirectory / isSymlink / getLastModified / getSize in favour of getInfo
  • Changed colour values to be in the range 0-1, rather than 0-255
  • Changed, to support co-operative multitasking environments


If you are interested in learning more about Love, be sure to check out our complete tutorial series available here.

GameDev News

GFS On YouTube

See More Tutorials on!

Month List