Eva - basic Defold module, designed for mobile games with meta-game. It provides a lot of additional API and systems for easier game development. It contains a lot of different modules, which can be used separately.
DISCLAIMER: Eva is not documented well, some functions can be broken. Eva is in development, so API can be changed in future versions.
It is public in educational purposes, so you can see how I do different things and use it in your own projects. I will be glad if you will use it in your projects, but I can't guarantee that it will work well.
Eva provides the foundation for your game.
- Use protobuf for data and user profile validation, default values and marshaling
- Rich utility API for different actions
- Quests, festivals, offers, daily bonus, etc system embedded
- General event system, with already defined 50+ events
- Tiled support with 3 different grids support + pathfinding (grid, isogrid, hexgrid)
- Single input module to manage all input (in go space)
- Data management with google docs and sheets-exporter
- Customize eva modules with single settings file
- Game time protection: use local, uptime or server time
- Tokens memory protection: protect from memory scanning (cheat engine)
- Monetization (iaps and ads) rich support
- Eva log system and errors caching for analytics
- Customizable modules with your own code (window, quests, trucks, etc)
- User profile migrations
- Eva render with customizable post-effects
- Invoices support: send delayed rewards, mails or time-restricted stuff to the player
- Push support with snooze hours, push count restrictions per day
- Included luax module with extended functions
- Debug functional for easier development included (save slots, reset profiles, game restart, etc)
Social and server integrations(not implemented)
Eva setup and initial configuration is quite massive, please read install instruction here
For some modules there are defined specific basic structure.
Proto Eva data description can be found here.
Google document with data example can be found here.
Rules for export can be found here (using sheets-exporter).
Otherwise, all data can be filled manually with designed structure.
Eva have defined workflow with Tiled. There is a special module for that:
What it can do?
- Generate standalone Tiled tilesets from Defold assets folder
- Generate collection files with gameobjects, collections and tilemaps from created Tiled maps
- Generate Defold factory and collectionfactory for all tilesets used in generation. This is allow you create DLC folder assets for liveupdate for example
- Generate mapping file - list of all usable entities with a lot of additional info (size, properties, urls and other)
- Generate objects into Defold collections directly, without any code to spawn it (can be disabled via layer property)
Eva allows your to define new modules or rewrite existing one
currently not implemented
Module | Description | Status |
---|---|---|
ads | Interstitial and rewarded ads integration | ✅ |
cache | Provides any external resources cache | ❌ |
callbacks | Wrap callbacks to call it via id. Pass callbacks in messages | ✅ |
camera | In-game camera with drag, pinch and zoom | ✅ |
daily | Provides game daily bonus system | ✅ |
db | Contains all game configs, can verify it via protobuf | ✅ |
debug | Provides general debug options for eva systems | ✅ |
device | Provides utilitary device functions | ✅ |
errors | Provides lua errors handler | ❌ |
events | Eva event system | ✅ |
feature | Game system management, turn on/off and conditions for any features | ❌ |
festivals | Provides single or repeatable festivals system (halloween, weekend, etc) | ✅ |
game | Provides utilitary game functions | ✅ |
gdpr | Provides GDPR API functions | ✅ |
generator | Utilitary generator functons | ❌ |
grid | API to work with matrix field | ✅ |
hexgrid | API to work with hexagon field | ✅ |
iaps | Provides rich API above defold-iap module | ✅ |
input | Eva input system in go system | ✅ |
invoices | Eva invoices system. Delayed rewards, in-game mail, restricted time reward | ✅ |
isogrid | API to work with isometric matrix field | ✅ |
labels | Add labels to player for easier clusterization | ✅ |
lang | Eva localization module | ✅ |
migrations | Provides migrations on player's profile between game versions | ✅ |
offers | Provides game offers system | ✅ |
pathfinder | Pathfinding on any type of field (grid, isogrid, hexgrid) | ✅ |
promocode | Apply tokens and bonuses by promocode. Promocodes can be time restricted | ✅ |
proto | Protobuf module, load and provide API to work with | ✅ |
push | Notifications module | ✅ |
quests | Eva rich quests system | ✅ |
queue | Utilitary queue functions to work with sequence stuff | ❌ |
random | Utilitary random function | ❌ |
rate | "Rate us" in-game logic | ✅ |
rating | Rating utilitary functions (elo rating) | ✅ |
render | Provides different render effects and other render relative stuff | ❌ |
resources | Utilitary bundle resources function | ❌ |
saver | Provides API for save/load parts of data | ✅ |
server | Provide API to work with server | ❌ |
status | Status effects like passive or temporary bonuses | ❌ |
skill | Abilities with cast time, stacks and cooldown support | ❌ |
social | Provide API to work with social networks (facebook, google play, app center) | ❌ |
sound | Eva sound system | ✅ |
storage | Simple eva key-value persistent storage | ✅ |
tiled | Module to load map from tiled and provide API to it | ✅ |
timers | Eva timers/delayed results module | ✅ |
token | Eva general token module (any items in game) | ✅ |
trucks | Eva trucks system. It is periodic events with timers (foodtrack, traders, etc) | ✅ |
vibrate | Android/iOS vibrate module | ✅ |
utils | System utilitary functions | ✅ |
wallet | Wrap on token module, with player wallet token container | ✅ |
window | Eva windows API | ✅ |
- Eva setup
- Core concepts / Glossary
- Exporter usage -
eva.db
module - Tiled exporter usage -
eva.tiled
module - Writing protobuf for user profile
- Window setup
- Quests setup
MIT License, Insality
If you have any issues, questions or suggestions please create an issue or contact me: [email protected]
Please support me if you like this project! It will help me keep engaged to update Defold libraries and make more useful content!