The secret has started leaking from discord into the forum, so might as well spill the beans:
FemtoIDE is an IDE I’ve been working on for Pokitto game development.
—> Get it here! <—
It is still in beta, so expect some rough edges. If you find bugs or have suggestions, please file an issue. Pull-requests are welcome too: it is opensource, released under the MIT license.
Features
- Fully offline. Doesn’t use the internet at all.
- Zero installation. Just extract the zip and you’re ready.
- Batteries included. Comes with GCC, PokittoEmu and the PokittoLib.
- Debugger integration. Supports both PokittoEmu and Segger J-Link hardware debuggers.
- Fully customizable keyboard shortcuts
- Built-in image editor
- Built-in image conversion to code as a build step.
- Support for C++ and Java projects (Python support pending)
- Windows, MacOS and Linux support
- Built-in git support for quick operations like seeing file status and committing.
Planned features
- Automatic PokittoLib and IDE updates
- GUI for editing project.json
C++ projects
All of a project’s settings are in project.json
. So, if you want to compile with -Os
instead of -O3
, for example, that’s the file you’re going to make that change in.
As another example, if you want to change the palette used by the built-in image converter, you’d do that by changing this file path:
"PNGFlags": {
"ALL": [
"palette=${appPath}/PokittoLib/Pokitto/POKITTO_CORE/PALETTES/palCGA.cpp"
]
},
Java projects
FemtoIDE comes with a FemtoJava compiler that is still in development. This converts Java source code into Pokitto-compatible C++. Since the code is translated, it is fast. It does not have the performance penalty of a VM. It features a mark-sweep garbage collector, so you don’t have to worry about memory management.
The debugger also supports Java projects. You can place breakpoints and step through your Java code.
Since the Pokitto does not have hardware floating-point support, FemtoJava uses @Pharap’s Fixed Points library for the float
type. If this is not precise enough for your needs, use double instead, which is mapped to a 32-bit float.
Also included is FemtoLib, FemtoJava’s equivalent of upygame or the PokittoLib. For further information, see the example project and the documentation wiki.
For Java projects, the converter also supports animations in the form of spritesheets accompanied by their respective jsons. If you have “Dog.png” and “Dog.json”, it will create a class Dog extends Sprite
. Each animation then becomes a method:
import animals.Dog;
Dog pug = new Dog();
pug.run(); // starts the "run" animation
In the file list you can add interface classes to sprites, allowing you to manipulate different sprites:
public interface IAnimal {
void run();
}
Dog odie = new Dog();
Cat garfield = new Cat();
IAnimal[] animals = new IAnimal[]{ odie, garfield };
for( IAnimals animal : animals ){
animal.run();
}
Asset Conversion
Both for C++ and Java projects (and in the future, Python), FemtoIDE aims to automate the process of converting assets for use in games. The idea is to reduce iteration time so that you can edit a sprite and immediately see the result in-game. This also allows you to do things like changing the palette and not having to manually reconvert all of your images.
In Java, you can import either PNG images or JSON spritesheets. Also supported are TXT and XML files.
In C++ you can #include
PNG images, but there is no support for spritesheets.
Support for audio and tilemaps are planned.
Thanks
A big thank-you to those who have been supporting this project by testing and providing feedback and bug reports on Discord: @andrea_i, @bl_ackrain, @Hanski, @torbuntu
In particular a very big thank-you to @HomineLudens who’s written a lot of test cases for me to do TDD on, contributed to the Wiki and reported countless bugs.