MCJack123 / craftos2

A fast, modern, and feature-filled ComputerCraft emulator written in C++.
https://www.craftos-pc.cc
Other
240 stars 28 forks source link
computercraft cpp craftos-pc lua sdl2

CraftOS-PC 2 Actions Status

A rewrite of CraftOS-PC (Classic) using C++ and a modified version of PUC Lua, as well as SDL for drawing.

Visit the website at https://www.craftos-pc.cc/ for more information, including documentation.

Screenfetch

Requirements for released builds

Installing

Windows

  1. Download CraftOS-PC-Setup.exe from the latest release
  2. Follow the instructions in the setup program
  3. Open CraftOS-PC from the Start Menu

Mac

Homebrew Cask

$ brew tap MCJack123/CraftOSPC
$ brew install --cask craftos-pc
$ open /Applications/CraftOS-PC.app

Manual

  1. Download CraftOS-PC.dmg from the latest release
  2. Drag and drop into Applications (or not)
  3. Double-click CraftOS-PC(.app)

Linux

Ubuntu (PPA)

$ sudo add-apt-repository ppa:jackmacwindows/ppa
$ sudo apt update
$ sudo apt install craftos-pc
$ craftos

Fedora (COPR)

sudo dnf copr enable lemoonstar/CraftOS-PC
sudo dnf install craftos-pc

Fedora support is maintained by LeMoonStar. For any issues with the Fedora package itself, please contact them on their GitHub repo.

Arch Linux

Install the craftos-pc package using your chosen AUR helper (e.g. yay -S craftos-pc).

Other Linux

  1. Download CraftOS-PC.x86_64.AppImage from the latest release
  2. chmod a+x CraftOS-PC.x86-64.AppImage (may be needed on some distros)
  3. Double-click CraftOS-PC.x86-64.AppImage

iOS

Visit the App Store to download CraftOS-PC. Or you can join the TestFlight beta to get access to the latest versions before they're released.

Android

  1. Download CraftOS-PC.apk from the latest release
  2. Open the file and tap "Install"
  3. Open CraftOS-PC from the app drawer or home screen

v2.2: Where are my files?

CraftOS-PC v2.2 moves the save directory to be more appropriate for each platform. Your files are not gone; they're automatically moved over before launching if the old folder is still present. You can find the computer data files at these locations:

Building

Requirements

Optional

You can get all of these dependencies with:

Windows artifact builds

Builds of each commit are automatically uploaded for Windows in the Actions tab. These builds are provided to allow Windows users to test new features without having to build the entire solution and dependencies. Note that these files are just the raw executable. You must drop the file into a pre-existing CraftOS-PC install directory for it to work properly. Depending on changes made in the latest version, you may also have to download the latest ROM. You can download the latest file directly here.

Old nightly builds, as well as Android betas, are available on the website.

Instructions

Windows

  1. Download Visual Studio 2019 if not already installed
  2. git submodule update --init --recursive
  3. Open CraftOS-PC 2.sln with VS
  4. Build solution
  5. Copy all files from the ROM into the same directory as the new executable (ex. craftos2\x64\Release)
  6. Run solution

The solution has a few different build configurations:

Mac

  1. Open a new Terminal window
  2. cd to the cloned repository
  3. git submodule update --init --recursive
  4. make -C craftos2-lua macosx
  5. ./configure
  6. make macapp
  7. Open the repository in a new Finder window
  8. Right click on CraftOS-PC.app => Show Package Contents
  9. Open Contents -> Resources
  10. Copy the ROM package inside
  11. Run CraftOS-PC.app

Linux (or Mac as non-app binary)

  1. Open a new terminal
  2. cd to the cloned repository
  3. git submodule update --init --recursive
  4. make -C craftos2-lua linux
  5. ./configure
  6. make
  7. sudo mkdir /usr/local/share/craftos
  8. Copy the ComputerCraft ROM into /usr/local/share/craftos/
  9. ./craftos

FAQ

Why is the ComputerCraft ROM/BIOS not included with the source?

ComputerCraft and its assets are licensed under a copyleft license that requires anything using its code to be under the same license. Since I want CraftOS-PC 2 to remain under only the MIT license, I will not be distributing any original ComputerCraft files with the CraftOS-PC 2 source. You can still aquire the ROM separately.

Why did you choose C++?

Since the original ComputerCraft code is written in Java, it may seem like a better idea to create an emulator based on the original mod code. But I found that using native C++ lets the emulator run much better than if it was in Java.

1. It runs much faster One of the biggest issues I had with CraftOS-PC Classic was that it ran too slow. The Java VM adds much overhead to the program which, frankly, is unnecessary. As a native program, CraftOS-PC 2 runs 2x faster than CraftOS-Classic. The barebones nature of native code allows this speed boost to exist.

2. It uses less memory Another problem with CraftOS-PC Classic was that it used much more memory than necessary. At startup, CraftOS-PC Classic used well over 150 MB of memory, which could grow to nearly a gigabyte with extensive use. CraftOS-PC 2 only uses 40 MB at startup on Mac (10 on Windows!), and under my testing has never gone over 100 MB. This is due to C++'s manual memory management and the absence of the entire JVM.

3. It's the language Lua's written in Using the same language that Lua uses guarantees compatibility with the base API. LuaJ has many known issues that can hinder development and cause much confusion while writing programs. Writing CraftOS-PC 2 using liblua guarantees that Lua will behave as it should.

4. It doesn't rely on any single platform I wanted to keep CraftOS-PC Classic's wide compatibility in CraftOS-PC 2. Using other languages such as C# or Swift are platform-dependent and are not guaranteed to work on any platform. C++ is a basic language that's always present and maintains a portable library that works on all platforms. I've moved all platform-specific code into the platform_*.cpp files so the rest of the code can remain as independent as possible.