Conway's Game of Life implemented as an artistic, abstract macOS screensaver and tvOS app using SpriteKit

Last update: Mar 17, 2022

Life Saver

Life Saver is an abstract, artistic implementation of Conway's Game of Life built with SpriteKit. With a variety of settings and color schemes, Life Saver should satisfy designers and geeks alike. Comes in two flavors: a macOS screensaver, and an Apple TV app.

πŸ–₯   Screensaver

πŸ“Ό Watch a YouTube video to see it in action.

Life Saver Screensaver

πŸ‘‰ Download Life Saver v1.1 Installer for macOS

πŸ“Ί   Apple TV

There's also an Apple TV version, with additional features over the free screensaver version.

Get Life Saver TV on the App Store

Life Saver tvOS Main menu Life Saver tvOS Preset menu

To Install from Source

  1. git clone https://github.com/amiantos/lifesaver.git
  2. Open Life Saver.xcworkspace
  3. Pick a target and run!

GitHub

https://github.com/amiantos/lifesaver
Comments
  • 1. PKG seems to be built in unexpected way

    While trying to unpack lifesaver-1.1.pkg I'm getting following error:

    % pkgutil --expand lifesaver-1.1.pkg ./lifesaver
    pkgutil(37305,0x11926a5c0) malloc: can't allocate region
    *** mach_vm_map(size=255086697644032) failed (error code=3)
    pkgutil(37305,0x11926a5c0) malloc: *** set a breakpoint in malloc_error_break to debug
    [1]    37305 abort      pkgutil --expand lifesaver-1.1.pkg ./lifesaver
    

    Sometime you run in environment there you can't provide administrator user and password. For such environments you would use screensaver name.saver file to install it only for local user. This is I'm trying to unpack your wallpaper.

    Reviewed by secondfry at 2021-07-02 17:37
  • 2. Implement Hashlife

    It might be fun to try to learn how hashlife works and implement it for even more optimization

    Reviewed by amiantos at 2019-05-24 19:39
  • 3. Optimization

    I could reduce memory usage by sharing the SKTexture between all nodes. ?‍♂

    Reviewed by amiantos at 2019-06-07 22:13
  • 4. Optimize Neighbor Generation

    With the optimization from #8, Life Saver could support even greater quantities of nodes, however the CPU bottleneck on launch for neighbor generation is huge. If I use the looping matrix from Ant Saver, it may greatly speed up neighbor generation.

    Reviewed by amiantos at 2019-06-08 17:42
  • 5. Added option for XS and XXS square size.

    I added option to change square size to very and super small.

    Don't know why this wasn't included in preferences.

    SS 2020-07-10 at 22 51 45
    Reviewed by lordlycastle at 2020-07-10 20:51
  • 6. tvOS Version

    • Might be cool to expand the tvOS version with a full tvOS UI
    Reviewed by amiantos at 2019-05-31 21:32
  • 7. Color preset picker should detect selected preset

    Unlike the settings preset picker, the color preset picker seems unaware of which preset you're using on subsequent openings of the config sheet

    Reviewed by amiantos at 2019-06-07 17:36
  • 8. Preset randomizer

    Might be cool to have a setting that randomizes between color presets and/or setting presets

    Reviewed by amiantos at 2019-06-07 21:04
  • 9. Optimization: Shared SKTexture

    Learned a new thing this week, that you can significantly reduce memory usage and draw performance in SpriteKit by sharing an SKTexture between all similar nodes.

    In the case of Life Saver, this means there's only one texture stored in memory. On launch, this results in a 50%+ reduction in memory usage... with the small square setting starting memory usage is ~94 MB. After this optimization, starting memory usage is ~44 MB.

    Additionally, per-frame draw count goes from 576 down to 1. This is pretty amazing.

    In this PR I also remove the debug label from nodes, it was using unneeded memory. I could have set a flag to toggle its generation but really it's not needed at this point.

    Reviewed by amiantos at 2019-06-08 17:38
  • 10. Optimization: Neighbor Pre-fetch

    Fixes #9

    Uses toroidal matrix for neighbor generation. This results in an extremely significant speed increase in pre-fetching neighbors. On larger grids, neighbor generation could take nearly a minute, but with this change the same size grid it takes miliseconds. The code to actually grab the neighbors isn't the prettiest, but it works great!

    This PR also adds the ability to create even smaller squares (for larger fields) which is now possible with decent performance thanks to #8 and this PR. Kind of a hidden feature for now.

    Reviewed by amiantos at 2019-06-08 19:06
  • 11. Config Sheet Detects Selected Color Preset

    Fixes #5

    Reviewed by amiantos at 2019-06-08 20:00
  • 12. Add Random Color Preset Option

    • Adds #6
    • Adds swiftlint and makes it happy
    • Runs swiftformat
    • When "extra death" occurs fade color back to original bg color
    • Fix bug with "extra death" animation on fast speed presets
    • Add missing license blurbs
    • Refactors how presets and settings interact through the manager
    • adds version number to config sheet
    Reviewed by amiantos at 2019-06-22 18:49
  • 13. Life Saver TV v1.0

    • First version of Life Saver for tvOS
    • Too many changes and additions to try to list
    Reviewed by amiantos at 2019-06-29 15:35
  • 14. tvOS VC Refactoring

    • Refactors logic in tvOS view controller to be a bit cleaner.
    • Sets up animations to be cancelled and replaced better.
    Reviewed by amiantos at 2019-07-04 13:40
  • 15. Lower required tvOS version to 11.0

    • Lowers the target tvOS version to 11.0 to support more users
    • Built with Xcode 11 so I suppose it's "tvOS 13 ready"
    • Some files for the tvOS build were in the wrong place somehow, they've been wrangled back into the right position
    Reviewed by amiantos at 2019-09-13 23:28
  • 16. Visual glitches / issues

    I think due to general bugginess with SpriteKit, there's some wonkiness with certain color combos or just in general. I see blocks switching their colors without fading in, stuff like that.

    Reviewed by amiantos at 2021-05-09 15:58
  • 17. Hue Integration

    It might be cool if Life Saver TV integrated with Hue lights, changing hue lights around the TV to match the dominant colors on the television.

    Reviewed by amiantos at 2019-06-29 14:32
  • 18. Change color presets while running?

    Might be cool if the random color preset option also changes the color preset every time a tank dies out...

    Reviewed by amiantos at 2019-06-23 02:34
  • 19. Preview doesn't work

    I'm on macOS Mojave 10.14.5

    Screen Shot 2019-06-06 at 11 16 47

    Reviewed by agarrharr at 2019-06-06 17:17
  • 20. Bloom Effect

    It would be cool if a bloom effect could be added to living cells. If you use the "Noun Project" preset and squint from a distance it looks a bit like the effect in LIMBO, looks really cool. I tried a quick implementation using an SKEffectNode but handling all the fading and animations seems trickier than expected.

    Reviewed by amiantos at 2019-05-25 15:49
Screensaver inspired by Apple’s inbuilt iTunes Screensaver. It can display Artwork by Spotify or last.fm Profile Data.
Screensaver inspired by Apple’s inbuilt iTunes Screensaver. It can display Artwork by Spotify or last.fm Profile Data.

MusaicFM - a iTunes Like Screen Saver for Spotify and Last.fm MusaicFM is a macOS screen saver based on the idea of the iTunes screen saver. It displa

Mar 15, 2022
Yattee - Alternative YouTube frontend for iOS, tvOS and macOS
Yattee - Alternative YouTube frontend for iOS, tvOS and macOS

Yattee Alternative YouTube frontend for iOS, tvOS and macOS built with Invidious and Piped Features Native user interface built with SwiftUI with cust

Mar 20, 2022
Screensaver for macOS
Screensaver for macOS

Irvue Screensaver Screensaver with images from Unsplash. How to install Download Irvue Screensaver.saver Double click it and it will appear in System

Mar 19, 2022
A screensaver for macOS which is based on the predator countdown timer. Don't worry your mac doesn't blow up πŸ˜„
A screensaver for macOS which is based on the predator countdown timer. Don't worry your mac doesn't blow up πŸ˜„

Predator Do you love the science-fiction film Predator, don't you? If it is so, this screensaver will bring you that nostalgic about those years also

Feb 13, 2022
Screensaver for macOS
Screensaver for macOS

Irvue Screensaver Screensaver with images from Unsplash. How to install Download Irvue Screensaver.saver Double click it and it will appear in System

Mar 19, 2022
🍎 Screensaver inspired by Apple's Event on October 30, 2018
🍎 Screensaver inspired by Apple's Event on October 30, 2018

Screen Saver by Pedro Carrasco based on the animations presented during Apple Special Event (October 30, 2018) from the Brooklyn Academy of Music, How

Mar 21, 2022
The GitHub Matrix Screensaver for Mac OSX
The GitHub Matrix Screensaver for Mac OSX

The GitHub Matrix Sceensaver The latest commits from GitHub visualized in a Matrix-style animation. The GitHub Matrix Screensaver for Mac OSX shows a

Mar 19, 2022
Snake implemented in SwiftUI for macOS
Snake implemented in SwiftUI for macOS

Snake implemented in SwiftUI for macOS

Jun 21, 2021
The Git interface you've been missing all your life has finally arrived.
The Git interface you've been missing all your life has finally arrived.

GitUp Work quickly, safely, and without headaches. The Git interface you've been missing all your life has finally arrived. Git recently celebrated it

Mar 22, 2022