We've often said that DOFUS Touch and DOFUS no longer have much in common in terms of development. Today we're going to explain things in a little more detail!
This article will be a bit more technical than usual, but we're hoping it will provide some answers to your frequently asked questions about DOFUS Touch! That said, we'll do our best to keep it simple so that this is accessible to everyone.
Before we get started, it's important to understand these two aspects, which you may have heard during certain discussions: server development and client development.
The so-called "server" environment allows for information to be received from and sent to the player's device. Among other things, it checks the validity of actions and manages their results. The server is also tasked with saving game data.
The "client" environment deals with everything the player sees or interacts with, such as game menus, monster animations, etc. These two aspects of development are linked, and for DOFUS Touch to work, the two are closely linked. In simple terms, the client sends requests to the server, and the server processes them.
Let's say Roxor casts the Release spell. The client sends this information to the server, and the server verifies that the player has enough AP and is actually in combat, along with many other variables. It then executes the spell, calculates who gets pushed back, who receives pushback damage, etc. It returns the result to be displayed to the client (the fact that the player casts a spell, the damage, new placements, etc.) to the players in combat as well as to spectators.
It's no secret that DOFUS for PC (version 2.14, to be precise) was used as a base to produce the mobile version DOFUS Touch. This wasn't easy; contrary to what you may hear, it takes more than a simple copy-and-paste procedure.
DOFUS was developed in Flash, whereas DOFUS Touch had to be adapted for a mobile format using HTML5/CSS, Javascript, and (the infamous) WebGL. To illustrate this, we're going to describe some precise aspects of the game!
Several steps were required to properly generate the game maps exported from DOFUS.
The development team started out by generating "raw" maps, but without all the visuals, like scenery. This base manages line of sight and movement blocking and forms a "framework" for the final maps. Loading visual elements comes next, but this has to be divided into three more steps: the foreground, the environment in which the player moves around, and the background.
To illustrate these steps, here are the foreground and background for the main floor of Kerub's house, located in Astrub at [6,-16]:
Finally, the components of the scenery are added – "the environment in which the player moves around", as we described it earlier – to achieve the final result:
These various steps were run by an algorithm. To reduce loading times as much as possible, the foreground and background are always generated as a single unit.
All the visual elements had to be reworked so they could be adapted to DOFUS Touch. These elements are adapted for Flash on PC (.swf format), so they had to be switched to .jpg or .png for the mobile version. Incidentally, the same process was used for monsters and items in the game.
The maps are still in 4:3 format, as this worked best with mobile. And 16:9 format wasn't yet available in DOFUS at the time, anyway!
As with maps, the interfaces designed for Flash (ActionScript) in the PC version had to be reworked for DOFUS Touch. So, the development team took the logic of the Flash source code and switched everything to HTML5/CSS and Javascript.
All the interfaces were tweaked, with no exceptions. Which created a whole set of issues, since Javascript and Flash use a different logic.
Also, the way messages are retrieved from the server is different.
These examples account for a tiny fraction of the adapting that had to be done and that, in some cases, still has to be done. To cite one last example, this is the case when we decide to reuse the appearance of an existing set in DOFUS. Our team is required to rework the set in Flash format in order to adapt it to DOFUS Touch.
As you can see, the PC version had to be completely reworked to be adapted to a mobile format and allow DOFUS Touch to come into the world. Even now, development for the two versions varies considerably, and each version has their own constraints.
As for game maps, very few of these are taken directly from DOFUS; our level designer [Maewin] produces these from start to finish.
To get a glimpse of this work, there's a video about creating the map for the Mount Neselite zone you can watch!
In any case, the format of maps has changed between DOFUS and DOFUS Touch, so it would be impossible to reuse the DOFUS maps (or vice versa) without having to convert them. This also applies to many other components of the game.
Although DOFUS Touch started out with the same server foundation as DOFUS 2.14, they've diverged quite a bit since then. One of our server developers, [Bob], explains it by way of a metaphor:
To demonstrate this, let's imagine that for DOFUS Touch, a player is represented as a single unit called "player", but for DOFUS, this unit has been split up into several smaller units, each a different aspect, to make this easier to manage. For instance, you'd have "the player's social information", "the player's characteristics", "the player's bank", etc. As a result of this, in DOFUS Touch, to get information about the player's guild, we would do "player --> function that retrieves the guild", whereas in DOFUS, we'd use "player --> retrieve the player's social info --> retrieve the guild". And these differences keep increasing over time.
To provide a second example, DOFUS could use a new type of database and its new features could be built on that. Players would view this change as completely transparent, and the game would stay the same. But if we wanted to reuse these concepts, we'd need to adapt it for our own database or adopt this new database and change our entire program as a result.
These two topics are just two examples out of dozens that, over the course of months, separate us technically from DOFUS and make potential transfers increasingly tricky.
There are many reasons for all these differences between the two versions, including the format of the game, its technical requirements, its resources, as well as its needs relative to the project.
Game design consists of establishing the rules of the game. For DOFUS Touch, this involves defining:
Once again, although DOFUS and DOFUS Touch were both built on version 2.14, they quickly took different directions for the same reasons as those already described with respect to server development.
As with server development, each game rule has evolved differently over time. So it doesn't always make sense to assume that an idea used in DOFUS will be entirely functional in DOFUS Touch, and vice versa.
A revamp of Incarnam won't be done in the same way in DOFUS Touch as in DOFUS, since the players of each game don't exactly behave in the same way. This is because the players of each platform (mobile versus PC) have different profiles.
Nevertheless, certain ideas may remain essentially the same, since the two projects originate from the same game.
Regarding story differences between DOFUS Touch and DOFUS, you'll find an article on this topic here.
On top of all this, there's a considerable amount of work involving the prerogatives of Google and Apple. They regularly request certain technical changes, which sometimes require several days of full-time work done by one or more developers. We naturally must follow these instructions, or else DOFUS Touch could be removed from the app stores!
Google and Apple constantly release new operating systems (or software development kits (SDKs)), and it's essential that we keep up with them. Whenever some version of their system stops working, we're required to migrate to the new version, which can present a new set of issues. For example, we used to use a certain webview on Android that allowed us to force WebGL on all mobile devices. Following a required update, this webview became incompatible and forced us to use the Android webview, which now prevents us from forcing the use of WebGL.
For longtime readers, the Android webview updates constantly and our HTML5/CSS may no longer be compatible. For example, Apple recently required us to switch to their WK webview; we had to work on this compatibility, or DOFUS Touch would no longer be kept up-to-date.
All of this is just the tip of the iceberg. But now you know more about the technical operation of DOFUS Touch, along with certain differences relative to the PC version of DOFUS. Feel free to share your thoughts in the comments section!
This article will be a bit more technical than usual, but we're hoping it will provide some answers to your frequently asked questions about DOFUS Touch! That said, we'll do our best to keep it simple so that this is accessible to everyone.
Server and Client
Before we get started, it's important to understand these two aspects, which you may have heard during certain discussions: server development and client development.
Server Development
The so-called "server" environment allows for information to be received from and sent to the player's device. Among other things, it checks the validity of actions and manages their results. The server is also tasked with saving game data.
Client Development
The "client" environment deals with everything the player sees or interacts with, such as game menus, monster animations, etc. These two aspects of development are linked, and for DOFUS Touch to work, the two are closely linked. In simple terms, the client sends requests to the server, and the server processes them.
Practical Example
Let's say Roxor casts the Release spell. The client sends this information to the server, and the server verifies that the player has enough AP and is actually in combat, along with many other variables. It then executes the spell, calculates who gets pushed back, who receives pushback damage, etc. It returns the result to be displayed to the client (the fact that the player casts a spell, the damage, new placements, etc.) to the players in combat as well as to spectators.
Porting DOFUS to DOFUS Touch
It's no secret that DOFUS for PC (version 2.14, to be precise) was used as a base to produce the mobile version DOFUS Touch. This wasn't easy; contrary to what you may hear, it takes more than a simple copy-and-paste procedure.
DOFUS was developed in Flash, whereas DOFUS Touch had to be adapted for a mobile format using HTML5/CSS, Javascript, and (the infamous) WebGL. To illustrate this, we're going to describe some precise aspects of the game!
Game Maps
Several steps were required to properly generate the game maps exported from DOFUS.
The development team started out by generating "raw" maps, but without all the visuals, like scenery. This base manages line of sight and movement blocking and forms a "framework" for the final maps. Loading visual elements comes next, but this has to be divided into three more steps: the foreground, the environment in which the player moves around, and the background.
To illustrate these steps, here are the foreground and background for the main floor of Kerub's house, located in Astrub at [6,-16]:
Foreground of the map
Background of the map
All the visual elements had to be reworked so they could be adapted to DOFUS Touch. These elements are adapted for Flash on PC (.swf format), so they had to be switched to .jpg or .png for the mobile version. Incidentally, the same process was used for monsters and items in the game.
The maps are still in 4:3 format, as this worked best with mobile. And 16:9 format wasn't yet available in DOFUS at the time, anyway!
Interfaces
As with maps, the interfaces designed for Flash (ActionScript) in the PC version had to be reworked for DOFUS Touch. So, the development team took the logic of the Flash source code and switched everything to HTML5/CSS and Javascript.
All the interfaces were tweaked, with no exceptions. Which created a whole set of issues, since Javascript and Flash use a different logic.
Also, the way messages are retrieved from the server is different.
But that's not all!
These examples account for a tiny fraction of the adapting that had to be done and that, in some cases, still has to be done. To cite one last example, this is the case when we decide to reuse the appearance of an existing set in DOFUS. Our team is required to rework the set in Flash format in order to adapt it to DOFUS Touch.
How about now?
As you can see, the PC version had to be completely reworked to be adapted to a mobile format and allow DOFUS Touch to come into the world. Even now, development for the two versions varies considerably, and each version has their own constraints.
Maps
As for game maps, very few of these are taken directly from DOFUS; our level designer [Maewin] produces these from start to finish.
To get a glimpse of this work, there's a video about creating the map for the Mount Neselite zone you can watch!
In any case, the format of maps has changed between DOFUS and DOFUS Touch, so it would be impossible to reuse the DOFUS maps (or vice versa) without having to convert them. This also applies to many other components of the game.
Server Development
Although DOFUS Touch started out with the same server foundation as DOFUS 2.14, they've diverged quite a bit since then. One of our server developers, [Bob], explains it by way of a metaphor:
"It's like building two identical one-story houses. Then each architect takes liberties, based on the demands of each client and the technical specifications that derive from those demands, to add a second, then a third floor to each house. At that point you can't just say 'Let's use the roof of one of the two houses for the other one'. You need to make adjustments to avoid leaks and keep the roof from collapsing!"
In slightly more technical terms, there is no way to simply "copy and paste" the things you want to see in the game. The foundations to support new features aren't always available or aren't yet compatible with certain decisions taken for DOFUS Touch. The requirements for certain features diverge in complex ways, especially in terms of the technologies used and the code structure, which may not be visible to players.To demonstrate this, let's imagine that for DOFUS Touch, a player is represented as a single unit called "player", but for DOFUS, this unit has been split up into several smaller units, each a different aspect, to make this easier to manage. For instance, you'd have "the player's social information", "the player's characteristics", "the player's bank", etc. As a result of this, in DOFUS Touch, to get information about the player's guild, we would do "player --> function that retrieves the guild", whereas in DOFUS, we'd use "player --> retrieve the player's social info --> retrieve the guild". And these differences keep increasing over time.
To provide a second example, DOFUS could use a new type of database and its new features could be built on that. Players would view this change as completely transparent, and the game would stay the same. But if we wanted to reuse these concepts, we'd need to adapt it for our own database or adopt this new database and change our entire program as a result.
These two topics are just two examples out of dozens that, over the course of months, separate us technically from DOFUS and make potential transfers increasingly tricky.
There are many reasons for all these differences between the two versions, including the format of the game, its technical requirements, its resources, as well as its needs relative to the project.
Game Design
Game design consists of establishing the rules of the game. For DOFUS Touch, this involves defining:
- how character classes are played (spell creation, stat balancing, etc.)
- what interactions players may have (trading, chat, challenges, friends, guilds, etc.)
- how players can interact with the game (monster combat, professions, etc.)
- how the game will react to the player's interactions
- rules for how the World of Twelve works (using Zaaps, item recipes for the economy, etc.)
- the various game modes and how they work (alliance versus alliance, Kolossium, Ascension Island, etc.)
- how to balance equipment and set their stats
- storylines and writing corresponding quests
Once again, although DOFUS and DOFUS Touch were both built on version 2.14, they quickly took different directions for the same reasons as those already described with respect to server development.
As with server development, each game rule has evolved differently over time. So it doesn't always make sense to assume that an idea used in DOFUS will be entirely functional in DOFUS Touch, and vice versa.
A revamp of Incarnam won't be done in the same way in DOFUS Touch as in DOFUS, since the players of each game don't exactly behave in the same way. This is because the players of each platform (mobile versus PC) have different profiles.
Nevertheless, certain ideas may remain essentially the same, since the two projects originate from the same game.
Regarding story differences between DOFUS Touch and DOFUS, you'll find an article on this topic here.
Mobile Format
On top of all this, there's a considerable amount of work involving the prerogatives of Google and Apple. They regularly request certain technical changes, which sometimes require several days of full-time work done by one or more developers. We naturally must follow these instructions, or else DOFUS Touch could be removed from the app stores!
Google and Apple constantly release new operating systems (or software development kits (SDKs)), and it's essential that we keep up with them. Whenever some version of their system stops working, we're required to migrate to the new version, which can present a new set of issues. For example, we used to use a certain webview on Android that allowed us to force WebGL on all mobile devices. Following a required update, this webview became incompatible and forced us to use the Android webview, which now prevents us from forcing the use of WebGL.
For longtime readers, the Android webview updates constantly and our HTML5/CSS may no longer be compatible. For example, Apple recently required us to switch to their WK webview; we had to work on this compatibility, or DOFUS Touch would no longer be kept up-to-date.
All of this is just the tip of the iceberg. But now you know more about the technical operation of DOFUS Touch, along with certain differences relative to the PC version of DOFUS. Feel free to share your thoughts in the comments section!