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

Overview

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!
Issues
  • PKG seems to be built in unexpected way

    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.

    opened by secondfry 3
  • Implement Hashlife

    Implement Hashlife

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

    enhancement 
    opened by amiantos 1
  • Optimization

    Optimization

    I could reduce memory usage by sharing the SKTexture between all nodes. πŸ€¦β€β™‚

    bug 
    opened by amiantos 1
  • Optimize Neighbor Generation

    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.

    opened by amiantos 1
  • Added option for XS and XXS square size.

    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 enhancement 
    opened by lordlycastle 1
  • tvOS Version

    tvOS Version

    • Might be cool to expand the tvOS version with a full tvOS UI
    enhancement tvos 
    opened by amiantos 0
  • Color preset picker should detect selected preset

    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

    enhancement 
    opened by amiantos 0
  • Preset randomizer

    Preset randomizer

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

    enhancement 
    opened by amiantos 0
  • Optimization: Shared SKTexture

    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.

    opened by amiantos 0
  • Optimization: Neighbor Pre-fetch

    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.

    opened by amiantos 0
  • Visual glitches / issues

    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.

    bug 
    opened by amiantos 0
  • Hue Integration

    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.

    enhancement tvos 
    opened by amiantos 0
  • Change color presets while running?

    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...

    screensaver 
    opened by amiantos 1
  • Preview doesn't work

    Preview doesn't work

    I'm on macOS Mojave 10.14.5

    Screen Shot 2019-06-06 at 11 16 47

    bug help wanted screensaver 
    opened by agarrharr 7
  • Bloom Effect

    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.

    enhancement 
    opened by amiantos 0
Releases(v1.2)
Owner
Brad Root
πŸ‘¨πŸΌβ€πŸ’» Software Engineer. For fun, I design and build open source software for Apple platforms. For money, I work on Lingo for @TheNounProject.
Brad Root
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

Igor Savelev 253 Nov 28, 2021
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

Victor Peschenkov 128 Dec 23, 2021
Apple TV Aerial Screensaver for Mac

Aerial - Apple TV Aerial Views Screen Saver Aerial is a Mac screensaver based on the new Apple TV screensaver that displays the Aerial movies Apple sh

John Coates 19.7k Jan 11, 2022
🍎 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

Pedro Carrasco 4.9k Jan 5, 2022
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

Benjamin Winterberg 496 Jan 7, 2022
MinimalClock: a MacOS screen saver

MinimalClock MinimalClock is a MacOS screen saver that displays the time. How to install Click here to download Unzip, double-click and choose Install

Mattia Rossini 68 Jan 9, 2022
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

Dennis Oberhoff 175 Dec 26, 2021
Snake implemented in SwiftUI for macOS

Snake implemented in SwiftUI for macOS

Sam Soffes 18 Jun 21, 2021
ZipArchive is a simple utility class for zipping and unzipping files on iOS, macOS and tvOS.

SSZipArchive ZipArchive is a simple utility class for zipping and unzipping files on iOS, macOS and tvOS. Unzip zip files; Unzip password protected zi

ZipArchive 5k Jan 10, 2022
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

GitUp 10.1k Jan 11, 2022
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

GitUp 10k Jan 9, 2022
Mac browser for Mach-O binaries (macOS, iOS, watchOS, and tvOS)

Mach-O Browser Mach-O Browser – A Mac application for browsing the contents of Mach-O (Mach Object) files, including executables, shared libraries, an

David Schweinsberg 102 Dec 27, 2021
zip file I/O library for iOS, macOS and tvOS

ZipZap is a zip file I/O library for iOS, macOS and tvOS. The zip file is an ideal container for compound Objective-C documents. Zip files are widely

Glen Low 1.2k Jan 8, 2022
πŸ•Ή Retro video game emulation for macOS

OpenEmu OpenEmu is an open source project whose purpose is to bring macOS game emulation into the realm of first class citizenship. The project levera

null 13.5k Jan 17, 2022
An open source, turn-based strategy game with a high fantasy theme.

About The Battle for Wesnoth is an Open Source, turn-based tactical strategy game with a high fantasy theme, featuring both singleplayer and online/ho

Battle for Wesnoth 3.7k Jan 17, 2022
The DOS game emulator that's fit for your Mac.

Some notes on building Boxer The Boxer XCode project is designed to be a painless one-click build. Here's a quick rundown of how it's set up: Build re

Alun Bestor 735 Jan 11, 2022
iOS app that detects LaTeX symbols from drawings. Built using PencilKit, SwiftUI, Combine and CoreML for iOS 14 and macOS 11.

DeTeXt Finding the symbol you want to use in LaTeX can be hard since you can't memorize all the possible commands and packages for every symbol you mi

Venkat 41 Jan 3, 2022
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

Igor Savelev 253 Nov 28, 2021
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

Victor Peschenkov 128 Dec 23, 2021
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

Igor Savelev 253 Nov 28, 2021
Controlling iTunes and Spotify volume using volume up and volume down hotkeys.

iTunes-Volume-Control (compatible with Music app in Catalina) Description This app allows you to directly control the volume of Apple Music as well as

Andrea Alberti 243 Dec 29, 2021
Apple TV Aerial Screensaver for Mac

Aerial - Apple TV Aerial Views Screen Saver Aerial is a Mac screensaver based on the new Apple TV screensaver that displays the Aerial movies Apple sh

John Coates 19.7k Jan 11, 2022
🍎 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

Pedro Carrasco 4.9k Jan 5, 2022
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

Benjamin Winterberg 496 Jan 7, 2022
Apple TV Aerial Screensaver for Mac

Aerial - Apple TV Aerial Views Screen Saver Aerial is a Mac screensaver (macOS 10.12 or later) based on the new Apple TV screensaver that displays the

John Coates 19.7k Jan 5, 2022
A simple app made to fix the sound issues that sometimes happen while using an external HDMI monitor on macOS (not tested after Mojave).

?? Mac Sound Re-Enabler ??‍♂️ Simple stupid app used to fix the sound issues (read below) while using an external HDMI monitor on macOS for video only

Nikola 20 Dec 30, 2021
gfxCardStatus is an open-source menu bar application that keeps track of which graphics card your unibody, dual-GPU MacBook Pro is using at any given time, and allows you to switch between them on demand.

gfxCardStatus by Cody Krieger gfxCardStatus is an open-source menu bar application for OS X that allows users of dual GPU MacBook Pros to monitor the

Cody Krieger 1.6k Jan 16, 2022
macOS camera recording using ffmpeg

CAM Dowload the latest version Description The CAM app was made for recording short tasks with research participants for later scoring or analysis. Th

Taylor Hanayik 38 Sep 25, 2021
Application which hosts AudioUnits v3 using AVFoundation API

AUHost.app Standalone application which can load AudioUnits v3 PlugIns registered in the system. Playback engine Graph Playback graph quite simple: Au

Vlad Gorlov 96 Nov 24, 2021