Alice is an innovative block-based programming environment that makes it easy to create animations, build interactive narratives, or program simple games in 3D.
Download and install the following build tools
- Java 17
- Set $JAVA_HOME accordingly, and add $JAVA_HOME/bin to your PATH
- Apache Maven 3.6.3 or later
- git
- git-lfs
- Install4J 10 (Only required to build the installers)
Clone the Alice 3 repository into a local directory, ${alice3}
cd ${alice3}
git clone --recurse-submodules https://github.com/TheAliceProject/alice3.git
Alice 3 uses a submodule for the Tweedle language, the internal representation of Alice code.
If you do not use the --recurse-submodules
flag above it can be pulled in explicitly.
git submodule init
git submodule update
To ensure the lfs files are available locally:
git lfs pull
Compile the code, build the jars, and install them in the local mvn repository.
mvn -Dinstall4j.skip compile install
The install step will also build the NetBeans plugin in {alice3}/netbeans/target/
If you want to use Install4J to build the installers drop the skip flag:
mvn install
After successfully compiling and installing the Alice jars into the mvn repository, you can launch the Alice IDE
cd alice-ide
mvn exec:java -Dalice-ide
Run unit tests
cd ${alice3}
mvn test
IntelliJ IDEA is suggested for coding/building Alice 3. There is a free community edition or JetBrains offers a product pack for students using an edu email address here.
Alice 3 builds with Java 17 which should be installed and selected in place of IntelliJ's bundled JDK.
IntelliJ IDEA has a bundled maven.
- The location is set in:
- File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven
- To build with maven using build project in the IDE first check the "Delegate IDE build/run actions to Maven" option in
- File -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven -> Runner
After the project is built successfully. You can create a Run/Debug Configuration and run the project.
In the Run/Debug Configurations window, create a new Application configuration and enter lines as bellow.
The working directory should be the root directory where you checked the Alice 3 project out, ${alice3}
.
The VM options are:
-ea
-splash:"./installer/installerFiles/SplashScreen.png"
-Xmx1024m
-Dswing.aatext=true
-Dorg.alice.ide.rootDirectory="./core/resources/target/distribution"
-Dcom.apple.mrj.application.apple.menu.about.name=Alice3
-Dedu.cmu.cs.dennisc.java.util.logging.Logger.Level=WARNING
-Dorg.alice.ide.internalTesting=true
-Dorg.lgna.croquet.Element.isIdCheckDesired=true
-Djogamp.gluegen.UseTempJarCache=false
-Dorg.alice.stageide.isCrashDetectionDesired=false
-Dsun.java2d.cmm=sun.java2d.cmm.kcms.KcmsServiceProvider
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.desktop/sun.awt=ALL-UNNAMED
--add-opens=java.base/java.time=ALL-UNNAMED
Then the project should be ready to run.
Final note: If you were delegating IDE build/run actions to Maven in the previous step, please uncheck that option. Or you might run into some graphics errors running Alice.
The compile, package, and install phases can all be limited to not include the Sims assets.
To do that disable the includeSims
maven profile.
It is a good idea to clean
if you have previously made a full build.
This may prevent leftover Sims artifacts getting bundled in.
cd ${alice3}
mvn -DincludeSims=false -Dinstall4j.skip clean package
Or:
cd ${alice3}
mvn -DincludeSims=false clean install
*This is still experimental, so there may be errors.
We appreciate contributions from the Alice community.
To make it easier to merge in new work, when submitting PRs please:
- Keep each one small and focused
- Make individual commits of smaller chunks with clear descriptions
- Follow the established coding style
This repository previously included a number of projects that were experiments, test beds, and development aids.
They have been relocated to the Alice 3 Tools repo. (NB If you are looking for historic versions of any of those projects, the richer git history is in this repo. The history did not migrate due to the way filter-branch was applied.)