Hollywood (programming language)

Hollywood is a commercially distributed programming language developed by Andreas Falkenhahn (Airsoft Softwair) which mainly focuses on the creation of multimedia-oriented applications. Hollywood is available for AmigaOS, MorphOS, WarpOS, AROS, Windows, macOS, Linux, Android, and iOS. Hollywood has an inbuilt cross compiler that can automatically save executables for all platforms supported by the software. The generated executables are completely stand-alone and do not have any external dependencies, so they can also be started from a USB flash drive. An optional add-on also allows users to compile projects into APK files.

The Hollywood Designer is an add-on for Hollywood with which it is possible to use Hollywood also as a presentation software and an authoring system.

History
Hollywood has its roots on the Amiga computer. Inspired by Amiga programming languages like AMOS, Blitz BASIC, and Amiga E, Hollywood author Andreas Falkenhahn began development of Hollywood in Spring 2002 after finishing his A-levels. Version 1.0 of the software was released in November 2002, but only for 68000-based Amiga systems. A month later, a native version for the PowerPC-based MorphOS followed. Support for WarpOS was introduced with Hollywood 1.9 which appeared in Spring 2004 together with the first release of the Hollywood Designer, a tool which can be used to create presentations with Hollywood. AmigaOS 4 is supported since March 2005. Starting with version 2.0 (released in January 2006), Hollywood is using the Lua programming language as its virtual machine, but with significant modifications in syntax and functionality. Starting with version 3.0 (January 2008), Hollywood for the first time also runs on two non Amiga inspired operating systems: Microsoft Windows and macOS. Since version 4.5 (January 2010) Hollywood is also available with an integrated development environment on Windows. Since version 4.8 (April 2011) Hollywood can also compile executables for Linux. Hollywood 5.0 was released in February 2012 and introduces support for video playback and vector image formats like SVG. Starting with version 5.2 Hollywood also supports Android. Hollywood 6.0 was released in February 2015 and introduces support for OpenGL programming via a dedicated plugin as well as support for the Raspberry Pi. Hollywood 7.0 was released in March 2017 and introduces Unicode support and support for 64-bit architectures.

General information
Hollywood's focus is on ease of use and platform independence. It was mainly designed for the creation of games and multimedia applications. The language set comprises roughly 900 different commands from the following fields of application: 2D graphics, sound, file system operations, text output, animations, sprites, layers, transition effects, image manipulation, saving of images and video files, time and date functions, input functions (keyboard, joystick, mouse) as well as mathematical operations and string functions. Programming in Hollywood is done via so called Hollywood scripts (using the file extension *.hws). These scripts are compiled dynamically and can be converted into stand-alone executables. All Hollywood programs run inside a sandbox, which makes it impossible for them to crash.

Platform independence
Hollywood was designed to be a completely platform independent programming language. Thus, scripts cannot call any API functions of the host operating system directly and are limited to the inbuilt command set. Text rendering is also implemented via a platform independent font backend that ensures that TrueType text looks exactly the same on every platform. Furthermore, all versions of Hollywood support Amiga specific file formats like IFF ILBM images, IFF 8SVX sounds, or IFF ANIM files, to be fully compatible with scripts written on an Amiga system.

GUI development
There are several GUI toolkits for Hollywood. RapaGUI is a cross-platform GUI plugin for Hollywood which supports Windows, macOS, Linux, and AmigaOS. RapaGUI uses native GUI controls provided by the respective host operating system giving all RapaGUI applications a native look and feel. MUI Royale is a GUI toolkit for Hollywood which can be used to create GUIs using the Magic User Interface. Another GUI toolkit for Hollywood is HGui. In contrast to RapaGUI and MUI Royale, HGui draws its GUI controls itself which makes its graphical user interfaces look exactly the same on every platform.

Compiler
A special feature of the cross-platform compiler that comes with Hollywood is the ability to link all external files (including fonts) into the executable to be built automatically. This makes it possible to create programs which consist only of a single file and can thus be easily transported and distributed. Additionally, the Hollywood compiler can compile scripts into Hollywood applets (using the file extension *.hwa). These applets are smaller than regular Hollywood programs, but they can only be started on systems that have Hollywood installed. Finally, it is also possible to export Hollywood scripts as AVI videos.

Development environment
There is no integrated development environment for the Amiga-compatible version of Hollywood. On these systems, Cubic IDE and Codebench can be used to develop with Hollywood as these have support for the Hollywood language through plugins. On Windows, Hollywood comes with an integrated development environment that can be used to create Hollywood scripts. The macOS and Linux versions of Hollywood do not come with an IDE either and can be controlled from the console or else integrated into other IDEs.

Hello World program
A Hello World program in Hollywood could look like this:

Print("Hello World!") WaitLeftMouse End

The code above opens a new window on the desktop, prints the text "Hello World!" in white letters and waits for the left mouse button before quitting. The opening of the window is automatically done by Hollywood. If not otherwise requested, Hollywood will automatically open a new window in the resolution of 640x480 for every script.

Hollywood Designer
The Hollywood Designer is an add-on for Hollywood that allows the creation of presentations and kiosk systems with Hollywood. The software uses a WYSIWYG-compliant interface based on slides. Users can create as many slides as desired and fill them with texts, graphics, and sound. Hollywood Designer will then run the slides one after another or in a predefined order. Various transition effects are available. Additionally, it is possible to create applications which require user interaction, like kiosk systems.

All projects created in Hollywood Designer are displayed using Hollywood and can thus also be compiled into stand-alone executables or video files. Advanced users can also embed custom code inside their projects. Through custom code it is possible to access the complete command set of Hollywood.

Technically speaking, Hollywood Designer does nothing else but automatically generate scripts for Hollywood according to the layout defined by the user in the GUI. The process of generating scripts and running them using Hollywood is entirely hidden from the user so that programming skills are not necessary for using Hollywood Designer. However, because Hollywood Designer merely generates scripts for Hollywood, the latter is a mandatory requirement for Hollywood Designer.

The first version of Hollywood Designer was released in April 2004. Currently, the software is only available for Amiga compatible operating systems. However, thanks to the Hollywood cross-compiler, it can also save stand-alone executables for Windows, macOS and Linux from the Amiga platform.