VERSION 3.0.0
Read the full release notes and the upgrade instructions.
Unity
- Created new class CombuEncryption to handle RSA/AES/SHA1/MD5 encryption
- Created new class CombuForm to handle all the web services request data (every class and method now uses this instead of WWWForm to encrypt the data sent to the server)
- Removed property CombuManager.secretKey (the new client-server security is automatically handled without any secret key)
- Added new property CombuManager.language (localization for error messages from web services, it must exists the file '/error_messages/error_'+language+'.php', default supported languages: 'en', 'it')
- Added new properties CombuManager.rememberCredentials and CombuManager.rememberPlainPassword to store the credentials in PlayerPrefs after User.Authenticate when using username and password
- Removed method User.AuthenticateSession
- Created new methods User.CanAutoLogin and User.AutoLogin for auto-authenticate localUser from credentials stored in PlayerPrefs
Server
- The server side code has been severaly refactored to use Composer autoloader ( http://getcomposer.org/)
- All the classes and table names have been renamed removing the prefix "CB_" (if you are upgrading from 2.x then you need to set GAME_DB_PREFIX to "CB_" in your config.php) and the classes have been enclosed inside the namespace Combu
- Implemented the generation of RSA certificate for each client connection and AES decryption of request data for web services
- Added the open source library "phpseclib 2.x" to implement encryption/decryption of data: http://phpseclib.sourceforge.net/
- The web services now interpret the data encrypted from client and not directly from $_REQUEST
- Added new constants in /lib/config.php: GAME_DB_USE_PDO (if TRUE then PDO class is used for database functions, else mysqli is used), GAME_DB_TYPE (database engine, currently only 'mysql' is supported), GAME_DB_PORT (database port, default MySql is 3306), RANDOM_CODE_CHARS (alphanumeric characters used to generate a random code), RANDOM_CODE_LENGTH (default length of a random code), RESPONSE_ENCRYPTED (if TRUE then the server response is encrypted before being sent to client), UPLOAD_DELETE_OLD_FILES (if TRUE will delete old file upon upload of new content for the same UserFile)
- The email templates for account registration and reset password have been moved to /email_templates
- Created new folder /error_messages containing the language files for localization of error messages from web services (default files 'errors_'+language+'.php' with support of custom messages and override messages if the file 'errors_'+language+'_custom.php' exists, for example: 'errors_en.php' and optional 'errors_en_custom.php')
- Created folder /_setup inside the root folder of Combu, you can access this URL to create both the SQL statements (to execute on your database to create the tables) and the content of your config.php (it is recommended to not publish this folder on production environment)
DATABASE
Read the instructions to upgrade from 2.x to 3.
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.1
Unity
- Added new item "Unread" to enum eMailList to load unread messages
- Added handler for Leaderboard.userScope (UserScope.Global, UserScope.FriendOnly) in method Leaderboard.LoadScores
- Added new static method CombuPlatform.ResetAllAchievements to reset all achievements of localUser
Server
- Implemented auto-updater for server (may require write permissions to whole Combu folder)
- Added new message type "Unread" to web service "mail/list"
- Added handler for new request parameter "UserScope" in web service "leaderboards/highscore" to filter the user scope (global, friends only)
- Added new action "reset" to web service "achievements" to reset all achievements of $LoggedAccount
- Minor changes and fixes
Database
You must execute the following SQL statements on your database:
ALTER TABLE `ServerSettings` ADD COLUMN `Visible` BIT(1) NOT NULL AFTER `DataValue`; UPDATE `ServerSettings` SET `Visible` = 1;
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.3
Database
- The field Active of table AppId has been changed from type bit(1) to tinyint(1)
SQL to upgrade database
ALTER TABLE `AppId` CHANGE COLUMN `Active` `Active` TINYINT(1) NOT NULL;
--
VERSION 3.0.2
Server
- Improvements in server auto-updater
- Fixed loading visible server settings sent to client
--
VERSION 3.0.1b
Database
- Increased Leaderboard.ValueFloat size to DECIMAL(20,6)
SQL to upgrade database
ALTER TABLE `LeaderBoard_User` CHANGE COLUMN `ValueFloat` `ValueFloat` DECIMAL(20,6) NOT NULL;
--
VERSION 3.0.1a
Server
- Fixed issue in web admin "Client Users" loading achievements
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.5
Unity
- Added new property 'code' to class Leaderboard (you can now use 'code' or 'id' to any method requiring leaderboard's id)
Server
- web services that require leaderboard's id now accepts also the leaderboard's code as 'id' parameter
- You can now specify the Leaderboard Code property in the web admin
Database
Execute the following queries:
ALTER TABLE `LeaderBoard` ADD COLUMN `Code` VARCHAR(45) NOT NULL AFTER `IdApp`;
VERSION 3.0.4
Unity
- Fixed storing credentials upon successful User.CreateGuest()
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.7
Unity
- Bug fix in account registration when an auto-ping interval was set
VERSION 3.0.6
Server
- By now the Newsletters will not be sent to the disabled accounts
- Added new defines to configure SMTP options for sending emails (as alternative to local mail server) available to /lib/config.php: EMAIL_SMTP (if TRUE then SMTP will be used), EMAIL_SMTP_SECURE (can be NULL, 'ssl' or 'tls'), EMAIL_SMTP_HOSTNAME (e.g. smtp.gmail.com), EMAIL_SMTP_PORT (e.g. 465), EMAIL_SMTP_USERNAME, EMAIL_SMTP_PASSWORD
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.8
Server
- /_setup: database.xml for database creation was missing the field "Code" in table "Leaderboard"
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.9
Server
- Fixed function getRequestInput() in the admin web application
- Fixed exception in Achievements admin section
- Updated Combu updater URL
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.10
http://skaredcreations.com/wp/released-combu-3-0-10/
Unity
- Implemented eContact.PendingRequest enum value and User.pendingRequests property to load the pending friendship requests sent from localUser to the other users
Server
- Implemented logic in "contacts" web service and Friend class to load the pending friendship requests sent from LoggedAccount to other users
- Implemented IP Bans in the administration website to allow the administrators to ban client IP addresses (the client requests from banned IPs will be unauthorized)
- Added search filter for IP address in Administration > Session Tokens
- New configuration defines available to be added in config.php: LOG_BANNED (if TRUE then the system will log the requests from banned IP address), LOG_UNAUTHORIZED (if TRUE then the system will log the unauthorized/invalid requests)
- Changed to '644' (read/write) the permissions of files downloaded from Updater tool and small improvements to updater
Database
- Added new table `IpBan`
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.11
Server
- Fixed web services contacts/save and contacts/delete for pending requests sent from localUser
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.12
Unity
- Added overloads of User.AddContact and User.RemoveContact that accept the User's id to add/remove to the contact list of an account
Server
- Optimized code in web service contacts/save
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.13
Server
- Fixed bug in web service mail/list_conv (loading conversations)
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.14
Unity
- Class Combu.Profile: added new property appCustomData as Hashtable to store custom data with scope to the current App (you can still use the property customData to store the custom data visible to all apps)
- Moved all enum types into CombuEnums.cs
- Moved class CombuServerInfo into its own file
Server
- Added new configuration constants in config.php: DENY_UNVERSIONED_CLIENT (to deny the connections from clients who doesn't send their Combu version), MIN_CLIENT_VERSION (set maximum CombuManager.COMBU_VERSION to allow connections), MAX_CLIENT_VERSION (set minimum CombuManager.COMBU_VERSION to allow connections), DENY_OUTRANGE_VERSIONS (deny the connections of out of range versions)
- Added new table and class AppCustomData to store custom data for AppId scope
- Added new table field and class property SessionToken->ClientVersion where the token generator stores the client version
- Fixed bug in applying the SQL queries coming from auto-updater when a GAME_DB_PREFIX was specified in the config.php
- Web: added bootstrap dependency in the web admin panel and revisited the layout to fill the screen
- Web: added search filter by IP in Client Users (doing a LIKE match with SessionToken::IPAddress)
- Web: added new tab App Custom Data in the detail of Client Users
- Web: added possibility to upload a new file in Client Users details page
- Web: implemented page to customize the interface of admin area by adding your CSS code to override the default (in Tools > Utilities > Customize interface)
- Web: implemented page to customize the interaction of admin area by adding your JS code to override the default (in Tools > Utilities > Customize interaction)
Database
- Added new field ClientVersion in the table SessionToken
- Created new table AppCustomData
Queries to upgrade the database
ALTER TABLE `SessionToken` ADD COLUMN `ClientVersion` VARCHAR(20) NULL; CREATE TABLE `AppCustomData` ( `IdApp` bigint(20) NOT NULL, `IdAccount` bigint(20) NOT NULL, `DataKey` varchar(45) NOT NULL, `DataValue` text, PRIMARY KEY (`IdApp`,`IdAccount`,`DataKey`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.0.15
Unity
- Fixed bug in CombuUtils.IsHigherVersion not correctly returning the correct result
- Added method User.GetContact to get the contact information of a user related to localUser
Server
- Fixed bug in total results count from queries with GROUP BY clause (CombuDataClass)
- Registration and username change is now denied if the username starts with the text set for GUEST_PREFIX in config.php
- Added new API action contacts/check to get the contact information of a user related to localUser
- Web: Users who haven't still activated their account (if REGISTER_EMAIL_ACTIVATION is TRUE) are now evident in Client Users
- Web: Fixed minor issues in Tools > Prune where Select/Deselect All were not working
Documentation has been improved with new additions and details.
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.1.0
Unity
- Added overloads to method Leaderboard.LoadScoresByUser to load the score of a user by passing the id or userName
- Added overload to method CombuPlatform.LoadScores to load a page by passing the timeScope of the leaderboard
Server
- Added support to load by Username the leaderboard's scores of a user
- Added a new sample script in /extra folder which deletes the Session Tokens older than 7 days (configurable in a variable), you can use this in a scheduled job on your server OS to be executed once per week for example
- Fixed bug not saving the AppCustomData of a created user
- Fixed bug in Admin > Client Users > User Profile > Save which stored the password in clear instead of encrypted when changing password or creating a new user
- Fixed bug in Admin > Session Tokens which caused the page to not work for changing the date and delete the tokens
- Improved SQL queries for search of client users
- Minor changes to administration UI
FRANCESCO CROCETTI @ SKARED CREATIONS
VERSION 3.1.1
Unity
- Added new method UserFile.Load to load a user file by passing the Id
- Implemented sample script CheckMail that can be attached to the CombuManager game object and be used to notify your scripts upon new in-game messages received from other users ( https://www.skaredcreations.com/wp/community/combu/push-notification-by-onesignal/#post-1049)
Server
- Added new webservice user_files/load to load a user file by passing the Id
- Added new optional constant variable REGISTER_EMAIL_REQUIRED_FOR_GUEST to require email for new guest users (TRUE to require email, FALSE to skip the verification)
- Fixed Utils::GetServerUrl and Utils::GetUploadUrl for links on Windows machine, implemented new method Utils::CombineUrl to get combined paths as URL
- Fixed ServerSettings::GetCurrentSettings to correctly set in $serverClientKeys both names and values of server settings visible to clients
- AppId::Delete now deletes recursively all data related to it (AppCustomData, AccountApp, Leaderboards, etc.)
- Added new event AddonModule::OnUserProcessOutput(&$userData) that is called in Account::ToArrayFiltered to filter or edit the account data output to webservices
- Minor fixes and optimizations
FRANCESCO CROCETTI @ SKARED CREATIONS