8-bit Hubble is a desktop application that generates PNG images of galaxies with an 8-bit appearance - also known as Pixel Art. The galaxies are random: number of stars, its color, size, position, shape, as well as other elements like background color (technically, the nebula) are randomly chosen.
Re-implementation in Go already available
8-bit Hubble its a humble tribute to:
- The Hubble Space Telescope, mankind's technological prodigy showing how important and amazing the space exploration is. In fact, the images generated are somewhat similar to the ones at "What is Hubble looking at now?"
- Classic Videogames: technology made entertainment; titles like R-Type DX, Super Mario World, Metroid, and TMNT Turtles in Time serve as inspiration for the sprites of the application.
- Bob Ross, the legendary painter. The "wet-on-wet" technique, used by Ross, serve as model to the application algorithms (a kind of Painter's Algorithm. A comparison between Ross famous catchphrases and the algorithm can be seen here.
For technical details and more info, visit the Wiki of the project
8-bit Hubble is also a proof of concept project, whose goal is to test the compatibility between Safety-Critical System Software goals and "Clean Code" principles, like Test Driven Development, Extreme Programming, and Continuous Integration.
Also, the project is a sandbox for "homebrew principles", like a 5s Philosophy Directory Structure.
8-bit Hubble is a single executable. No installation is needed. Click here to go to the downloads page, select your version, and click on "Download" button (at the right side of the screen). Once downloaded, usage is straightforward: double click on the exe and
- Choose the image's name
- Optional, choose a seed for the image (it will control the random generation process)
- Click "Generate". Any errors will appear in the messages windows. Otherwise... enjoy!
- Clone the repository:
$> git clone https://github.com/amcajal/8_bit_hubble.git
-
Modify the <root_dir>/project/dev/test/high_level_test/python_uat.py (instructions in the very file) with the proper information. Otherwise, several errors will appear during the build.
-
Run "setup.sh" script. It performs a full build process. Use bash, not sh! (dependency checking, executable build, tests running, coverage and performance reports, etc).
$> cd <project root dir>
$> bash setup.sh
A "setup_log.txt" is generated with the results of the build process. If everything is correct, then the GUI can be launched (as explained in the previous section), or the CLI version.
$> 8_bit_Hubble_cli.exe --help
- To run tests:
$> cd <root_dir>/project/dev/integration
$> make clean
$> make all
$> make tests
Then, under /test/ dir, the executable can be launch
- For windows, things are a little more complicated. Open the Makefile (under <root_dir>/project/dev/integration) for more information, but in summary, launch the following command:
$> make all TARGET=windows
Finally, to jump right into the code, its recommended to start reading the "big_bang_core" module implementation, located at <root_dir>/project/dev/src/big_bang_core/
About 8-bit Hubble:
Alberto Martin Cajal is the original author of 8-bit Hubble. 8-bit Hubble is released under GNU GPL version 3.0 license. Check LICENSE file for a full version of it, or visit the official GNU web page
About libpng and GTK:
These libraries are third-party libraries and are NOT owned by 8-bit Hubble author.
libpng is released under the libpng license. Check the official webpage.
GTK+ is released under GNU LGPL license. Check the official webpage
8-bit Hubble is open to contributions! Check the related page at the Wiki of the project
Alberto Martin Cajal at:
- Gmail: [email protected] (amartin DOT glimpse23 AT gmail DOT com)
- Blogspot
- Twitter: @amartin_g23
This project has been created trying to make it useful. This project has been created in order to learn new things. But over all, this project has been created because it is fun. As Isaac Asimov said:
The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka' but 'That's funny...'