defold-eva icon indicating copy to clipboard operation
defold-eva copied to clipboard

Basic Defold module for mobile games

GitHub Workflow Status codecov GitHub release (latest by date)

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.


Features

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)

Setup

Eva setup and initial configuration is quite massive, please read install instruction here

Evadata format and export

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.

Tiled exporter

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)

Custom modules

Eva allows your to define new modules or rewrite existing one

currently not implemented

Modules

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

Learn Eva

  • 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

License

MIT License, Insality

Issues and suggestions

If you have any issues, questions or suggestions please create an issue or contact me: [email protected]

❤️ Support project ❤️

Please support me if you like this project! It will help me keep engaged to update Defold libraries and make more useful content!

Github-sponsors Ko-Fi BuyMeACoffee