• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.


Our community blogs

  1. polls_just_been_dumped_logo_1_1023_424378_answer_1_xlarge.jpg.e4ddbe09f973065cb14dace79d30b0dc.jpg

    I've been developing on Microsoft Windows for a long time, since around 1992/93, when I got my first PC. Various other platforms before that, but I've pretty much stayed with it, not because it is a technical marvel (it's not), but based on the idea that it was the most popular OS so it should be easy to get programs running on other people's machines. Coupled with this (and no doubt because of this) there is also loads of good software for development, which had made it the 'default' choice for me.


    Don't get me wrong, I have certainly admired certain aspects of the various Apple OSes over the years (especially when they embraced BSD), but been put off by having to relearn the 'backwards' way of doing everything, and rightly or wrongly the suspicion of a 'control freak' walled garden approach, where you are not in control of the computer, Apple are. And don't get me started on my experiences of having to use iTunes to do something as simple as transfer a file over usb from a Mac to an i-something. And the obvious bias towards monetizing every aspect of the experience.

    In contrast I sometimes feel that Windows is *overly* open, exposing too much to developers, allowing them to too easily 'hijack' your PC and take over its resources for their own purposes at startup, as well as a series of insecure 'technologies' that seem more appropriate for malware authors than legit developers. It seems to be designed so that the OS will run slower and slower the more apps you install, until you give up and re-install windows.


    Along this line comes the other unpleasant thing I found with windows, that a lot of the software would rely on some other flavour of the month technology being installed as a dependency. Want to use a text editor? No, first you needed to spend half a day installing the latest huge bloated .NET runtime, to find it probably breaks some other app. And for something that is meant to be backward compatible, certain software companies (particularly Microsoft themself) seem to go above and beyond the call of duty in making their software incompatible with anything but the latest builds of the OS.

    And so we come to my personal last straw .. I spent some time last year evaluating different IDEs, and preparing projects, converting code etc, until I finally settled on using Visual Studio 2017, which was in the final release candidate stages at the time. The first version worked great until it expired. Then I tried the updater, which failed miserably at installing the next version, so I had to manually tweak things until it installed. Finally I came back from holiday 3 weeks ago to find that the 'final final' RC candidate had expired, and I was required to install the release version. Unfortunately I found the installer refused to work on my system. During the time between the RC and the release, they managed to screw up the installer (of all things??). So I was left unable to do any work until I had it resolved.

    I spent several days backing up my PC and trying to update it, but even with the windows updates no joy with the installer. I resigned myself that I had a choice of either buying a new hard disk and installing windows 10, or buying a new PC. Given I didn't want to risk losing my old work, I went for a new PC, even though my old one was perfectly adequate.


    £650 or so later I had ordered a fanless kaby lake system. During the order I had the choice of OS to put on it. I had originally planned to put Windows on it, but thought what the hell, I should have another play with Linux, as one of the options was Linux Mint, and I could be sure the hardware would all work, so it should be easy.

    While I waited a few days for the build, I did some research into Windows 10. Unfortunately I became more and more disillusioned the more I read. While I'm sure technically the OS has got better over the years, I've heard only disturbing things (from 'the register' etc) about the roadmap Microsoft is taking with Windows.

    One of the things I hate about Windows is the need for updates, and the way you are left to pray during the process that they don't break some other bit of software. So usually I turn automatic updates off, and carefully manually select any if they are really required. Not so with Windows 10! As (allegedly) the 'last' version of windows, it will now automatically update itself, forever, whether you like it or not. That's nice to know that if you are a business, you have the very real possibility of waking up one morning to find Microsoft have borked your work and there's absolutely nothing you can do about it. This is clearly a showstopper for many people, for instance having a meeting to show clients the next day and finding your PC has been remotely broken by some well meaning folks who I'm sure have your best interests at heart and not theirs.


    But it doesn't end there, no now the operating system is designed to take your personal info, searches, work etc etc and send it (without your permission) to Microsoft central command mothership. Simple, you turn it off, you would think, except that, apparently, it seems you can't turn it off. So you think you will block the MS servers in your firewall etc. No dice, as the OS apparently ignores these rules because slurping your private data is too important. And even if you think you've worked a way round this, you only have to leave the PC till the next morning, for the next AUTOMATIC update to circumvent your attempt to circumvent the data slurping. Honestly, there must be laws against this kind of thing.

    All this made me realise I had to seriously think about moving off windows as a development platform in the longterm, and that time may just be NOW!

    Several of my old dev colleagues had by now moved to other platforms, notably a lot have moved to Apple. I admit I have an irrational phobia of all Apple products, so the only choice for me was to investigate Linux. I only had some *very* basic grounding in unix (having done some pascal on unix machines at Uni), and having played with linux on my Asus EEE netbook many moons ago. So my experiences, in the next blog post, should be useful for anyone who is an absolute beginner like me.

    Suffice to say, it has been a very difficult slog learning the basics and converting my code, but I have *finally* got my libraries and game code working, and I am now a convert. The whole Linux experience seems light years ahead of windows. I may still end up having to install windows in a VirtualBox machine, but I haven't had a need as yet.

    Next blog post will be my migration experience...

  2. 3fSJxA-300x300.pngJust what is #CoronaDefoldJam? GamesJam.org is hosting a game jam to promote Lua as a great language for game development and game jams. For this jam, developers can use either Corona or Defold for their projects.


    • #CoronaDefoldJam starts on July 28, 2017, coinciding with the Ludum Dare 39 jam, and runs until October 1, 2017.
    • At the end of Ludum Dare 39, you can submit your app for that jam and then continue to refine it until the end of #CoronaDefoldJam on October 1st.
    • The project theme will be the same theme announced by Ludum Dare 39.
    • The jam will conclude with announcements of the winners at DevGAMM in October.

    This is a great opportunity for Corona developers to participate in a game jam and show off the awesomeness that is Corona. To learn more, please visit the official game jam page. We look forward to seeing what you can create!

    View the full article

  3. UI: character menu & build mode panel Domen Koneski

    Continuing with the UI, I have decided to implement a brand new character menu that includes all the player stats, player model and item slots for your dressing needs (will be implemented in the future). You can rotate your player model with the script that is provided below.

    New character menu

    I have also changed the looks of the Build mode to make it as simple as possible.


    New build mode outlook


    Generic mouse swipe script Domen Koneski

    It is time to give away some code for those in need of a solution when you want to do something with the mouse gestures, in this case a mouse “swipe” gesture, e.g. you wish to rotate your character model in the character menu with your mouse. The script provided can be used in your projects, free of charge, and can handle multiple things:

    • Unity Event when moving the mouse in X direction only
    • Unity Event when moving the mouse in Y direction only
    • Unity Event when moving the mouse in XY direction
    • Knowing if the mouse is “down” on the selected raycastable panel

    To make things work create a UI panel, hide the image (do not disable the component), select the image as raycastable and add this script. What you have to do now is to populate your Unity events with your custom function calls. Do not forget when calling your function via this script the function getting called must take one (for X or Y only events) or two (XY event) arguments type of float. The last thing is to mark the event as dynamic, see image below.

    mouse swipe script

    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.EventSystems;
    namespace Floatlands.UI
        public class MouseSwiper : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
            public bool isHoldingDown;
            public Vector2 totalDeltaVector;
            public Vector2 deltaVector;
            private Vector2 prevVector;
           private Vector2 startPosition;
            private PointerEventData eventData;
            public SwipeSingleEvent OnSwipeXEvent;
            public SwipeSingleEvent OnSwipeYEvent;
            public SwipeDoubleEvent OnSwipeXYEvent;
           public void OnPointerDown(PointerEventData eventData)
                isHoldingDown = true;
                startPosition = eventData.pressPosition;
                prevVector = startPosition;
                this.eventData = eventData;
           public void OnPointerUp(PointerEventData eventData)
                isHoldingDown = false;
           void Update()
                if (isHoldingDown)
                    Vector2 currentPosition = this.eventData.position;
                    totalDeltaVector = currentPosition - startPosition;
                   deltaVector = currentPosition - prevVector;
                   prevVector = currentPosition;
                   OnSwipe((int)deltaVector.x, (int)deltaVector.y);
                    totalDeltaVector = Vector2.zero;
           void OnSwipe(int deltaX, int deltaY)
                if (OnSwipeXEvent != null)
                if (OnSwipeYEvent != null)
                if (OnSwipeXYEvent != null)
                    OnSwipeXYEvent.Invoke(deltaX, deltaY);
        public class SwipeSingleEvent : UnityEvent<int> { }
        public class SwipeDoubleEvent : UnityEvent<int, int> { }


    Outfits and speakers Andrej Krebs

    Mito created some outfits concepts for “techies” that would distinguish them from the “farmers”. So this week I was occupied with modeling and weight painting the new outfits. They put more metal pieces on themselves as armour is made of junk pieces of sheet metal.

    various “techies” outfits

    After that I modeled propaganda speakers, which will appear in the world. The speakers will emit propaganda messages and other sounds.


    propaganda speakers


    Extra robot concepts Mito Horvat

    Currently there is only one type of enemy robots. Simple humanoid machines that wield various weapon types (from snipers to grenadiers etc), they roam around and attack anything in sight. In the near future we’ll add sturdy, hard to destroy robots that will challenge the player. In addition, we’ll also add small spider like robots that will be quick and unforgiving with their melee attacks. Those enemies will surely test your aim. You can see the first glimpse of concept sketches below.

    a different kind of enemy robots


    Mining drone in action tadej vranesic floatlands

    This week I’ve been playing around with drones, particularly “mining” drone which Andrej beautifully modeled. Mining drone will represent a fine touch to resource collecting. Upon destruction its loot will be dropped and ready for collection, which allows the player to gather resources faster. Tweaking its avoidance system makes it fly smootly regardless of any obstacles on its path. Finishing touches were also made for the drill rotation. More nuts and bolts next week.

    mining drone in action

    NPC battles vili ikona

    Humans are already alive and fighting each other (Farmers vs. Techies). They have 3 different weapons for now: fists, single shot pistol and revolver. They can also melee attack with pistols!

    NPCs fighting

    I also just started working on ‘Hint nodes’, which will have different geometric shapes. Those hint nodes will provide information about the world – safe spots, danger spots, sniper spots and so on.

    basic gizmos

    More about Floatlands: website, facebook, twitter, instagram

  4. I bought this little fella (http://www.wacom.com/en-br/products/pen-tablets/one-wacom-m) a while ago but i never found time to play around with it. This weekend was very hot so i was mostly home and i’ve drawn a background for the game, hope you dig it. Took me a few hours.


    The post Backgrounds work appeared first on Fat Pug Studio.

    View the full article

  5. Hello hello!! It's me again with the week 8 development blog, this week we spent some time relocating our studio and discuss the future changes of the game.

    Firstly, we have tried unit-count system which may not be the best resource management for our game, as unit-count may hinder and difficult to balance during progressing character level. On the other hand, we tried a new method of resource management which is a traditional "Mana Crystal" which you gain over-time and killing monsters.

    This resource system will come with another feature "Light Source building", which players will only be able to build within the Light Source area. Our team thinks this system will increase the depth of gameplay and challenges player to solve it with their solution. These Light Source Building will also generate "mana crystal" and there will be mana crystal boosting upgrades.

    We are building a prototype for this system, and if it is fun, we will implement into our next patch!

  6. I've only had about 15 minute to work on this project the last two days. I've been talking about it to potential teammates and thinking about it quite a bit throughout my day, but life is busy and it can be hard to find time. However, progress is still being made.

    Basics of player control (combat, movement, and resource collection) are completed, now I'm beginning to focus on enemy basic behavior. After I get through that, which might take a while, I'll move to wave control, then building basics, then allies, then UI. I have several people still working on some concept art to figure out what direction I'd like to move in artistically for the game, so hopefully by the end of this first prototype iteration I'll have some sample art to implement.

    After I've gotten through this first iteration, I'm going to spend a bit of time focused on design, as I've recently been struck with a couple ideas which could add more depth to the game. 

    Keep up the grind!

  7. New video of this last week. Featuring progress on two games and also showing another one.

    The video is really cool ( i think ), i'm doing better the videos each week.


    Enjoy it :



    Comments about the video, games or anything will be appreciated.


    If you know some videos about weekly devlogs please tell me about, i know only about the indie called thinmatrix, his videos are great.


    Thanks for your time.

  8. title.thumb.png.a1370bd267540204d2bc4c8e16f72ab0.png


    I've finally hit a new milestone. Farkle Friends is finally ready for some closed alpha testing. I'm finally getting close enough to releasing this game I can now taste it. I haven't posted recently as I have been working feverishly over the last few weeks to get to this point.

    Alpha testing will start in the next day or 2. Unless there is a major issue I plan about 2 weeks of alpha testing to work the kinks out. I'll make sure its working good on all the platforms I plan to support. Android, Windows, Mac OS, and Linux. Once all the initial play testing is done, and I have worked out any bugs found, I will then be moving on to some open beta testing.

    For the beta testing I plan on using GamingBetas and/or AlphaBetaGamer. During the alpa testing I plan to investigate these two sites and will choose one or both to help out with some beta testing. I will have another blog later letting you know my choice and how, if possible, you can join to help with the testing. I'm planning another 2 weeks, baring any major issues, for this step. Then I will start preparing for release.

    So if all the testing goes well, and there are no major issues I'm planning to release in about 4 weeks. For sure I will be releasing to the Google Play store. I have a list of other sites to host the PC/Mac/Linux version of the app as well. Here is a list of release site I'm considering. If anyone has any experience with these I'd love to hear about it. I will be investigating them and deciding over the next few weeks. I plan on releasing to Google Play store plus 2-4 others.

    1. gamejolt.com
    2. itch.io
    3. indiegamestand.com
    4. Steam
    5. indiedb.com
    6. gog.com

    I'm really excited to be at this point and looking forward to releasing this to the world. I already have ideas for more games and for future updates to Farkle Friends.

    Happy Gaming

  9. Liza Shulyayeva
    Latest Entry

    A couple of weeks ago I had the genius idea to rewrite SnailLife in Go. I’ve already looked into doing this once before a couple of years ago, but wasn’t really feeling it and stuck with PHP (mostly for nostaligia reasons). Now though, SnailLife is this bloated PHP app. Most of the core functionality is in. After weeks of battling infrastructure issues, when everything was back up and running again, I took a step back and saw how big the app (or rather the 3 apps now) had become. At the same time I’d been reading in passing about Go and became curious, so I figured - why not look into learning Go by rewriting SnailLife? Not because I think Go itself will necessarily make anything better, but because a rewrite might.

    The features are mostly already designed, reimplementing them in another language would hopefully let me focus more on improving the overall project structure while learning the new language of choice. Of course, the “learning the new language of choice” part also increases the likelihood of my turning my messy PHP app into a messy Go app as I go, but…it’ll be fun, OK?

    Anyway, I’m not yet sure if I’ll stick with the Go port or if I’m just amusing myself for a while before going back to the already largely implemented PHP version. So far I haven’t coded anything snail-specific and have instead been focusing on setting up database-related packages. I’ve made the code public on GitLab for now, though not sure if that’ll change when I go into writing the more snail-specific functionality: https://gitlab.com/drakonka/gosnaillife

    When I started the PHP version of SnailLife, I started by building the website and the main functionality that lets users interact with their snails. As time went on this focus switched almost exclusively to the back-end, and to working on functionality that required no user interaction. I realized that this is what the core of the idea was - simulating the actual snails - the brain, organ function, etc - things that the user could eventually influence indirectly, but things that would tick away on their own even if no user was involved. So for the Go version I am not starting with a web front end but with a simple CLI, and focusing on implementing the core of the snail itself first. Eventually I can build whatever front-end I want, or even multiple front-ends if I feel like it. Heck, I could even expose some sort of API for others to make their own apps on top of the simulation (if anyone wanted to, in theory).

    Go notes to self

    • Open and close DB connections as little as possible - the driver handles connection pooling for you, you should only really need to do it once.
    • Best way of reusing constructors between tests might be to create some test utilities outside of _test files which are imported only by the tests. Example usage in my case is creating a test db and table to run my mysql and repo tests against, which are in different packages.
    • Every directory is a package. There is no way to structure code in subdirectories without each subdirectory being a separate package.
    • Make use of table driven tests. They allow you to run multiple test cases per test.
    • interface{} is an empty interface and can hold values of any type…avoid passing this around too much, better to learn to structure the code so you don’t have to.
    • Go code looks to be very easy to move around and restructure if needed, so it should be fine to experiment with different project structures as I go.

    Current tentative project structure

    ├── cmd
    │   └── snaillifecli
    │       └── main.go
    ├── config
    │   ├── dev
    │   │   └── database.json
    │   └── env.conf
    ├── lib
    │   ├── domain
    │   │   ├── item
    │   │   └── snail
    │   │       ├── snail.go
    │   │       └── snailrepo.go
    │   ├── infrastructure
    │   │   ├── databases
    │   │   │   ├── database.go
    │   │   │   ├── mysql
    │   │   │   │   ├── delete.go
    │   │   │   │   ├── insert.go
    │   │   │   │   ├── mysql.go
    │   │   │   │   ├── retrieve.go
    │   │   │   │   ├── tests
    │   │   │   │   │   └── mysql_test.go
    │   │   │   │   └── update.go
    │   │   │   ├── repo
    │   │   │   │   ├── repo.go
    │   │   │   │   ├── repoutil.go
    │   │   │   │   └── tests
    │   │   │   │       ├── repo_test.go
    │   │   │   │       ├── testmodel_test.go
    │   │   │   │       └── testrepo_test.go
    │   │   │   └── tests
    │   │   │       └── testutil.go
    │   │   ├── env
    │   │   │   └── env.go
    │   │   ├── init.go
    │   │   ├── init_test.go
    │   │   └── util
    │   │       ├── collection.go
    │   │       └── err.go
    │   ├── interfaces
    │   └── usecases


  10. Hey everyone - long time no post. Sorry about that. :) I landed my dream job over a year ago and have been pretty busy since then. I'm working at Harebrained Schemes on the new turn-based Battletech game. The last one was over 20 years ago! :D Come check it out at:

    Today I'm going to talk a little bit about a metadata database (That's really fun to say btw) and how you might use it in your projects.


    What is a metadata database?

    Let's start with a couple of definitions. Metadata is just data about other data. And a database is just a structured way of storing and accessing data. So... a metadata database is a structured way of storing and accessing data about other data... Is your mind blown yet?

    Why use a metadata database?

    I'm going to look at our units for this example. We have a bunch of units with lots of data stored in separate files. Our unit metadata contains things like the filename, the type of unit: mech, vehicle, turret - and tags that describe the kind of unit that it is: medium, sniper, jump_capable. Instead of hard coding our unit spawn points to a specific unit, we configure the spawn point to ask for a unit with the tags "mech" and "medium" to change things up a bit. Without a metadata database, we'd have to load up every single unitdef into memory, and then loop through all of the data to build a list of the units that match, then select a random entry. With a MDDB, we can write a query that returns the list of units that qualify without having to load every single file and load the unit that we need to spawn.

    Also, once you put this type of data in a database, you can start writing sql queries to easily get at information. How many maps implement a particular encounter? How many contracts are written for the Escort contract type. Are there any events that can't be triggered because they rely on tags that are never awarded.

    Some Library Options

    We're using C# and Unity for our project, and these are the main tools we're using for our SQL needs.

    Some TagSet Query Code

    Here's some C# I wrote that builds a dynamic bit of sql based on the number of required tags and excluded tags. It wasn't trivial so I figured I'd share it. One requirement I'm not completely happy with is that the tags you ask for have to be in the database. At the start of the function I insert the ones that weren't present. It made the sql a little bit cleaner to look at and get right.  For our needs it's not a big deal because we'll only be asking for tags that we care about, but if an end user is typing in random stuff you'll want a slightly different approach.

    Also I made one change to the Schema since after the graphic was made. I dropped the TagID and just use Name as the primary key. TagSetTag then drops its TagID column and gets a TagName column to point to Tag. I recommend that datamodel instead of the one shown, but our fans made the graphic for the data model and I didn't have a way of updating it easily. :) The code presented matches the old way.

    public static List<TagSet_MDD> GetTagSetWithRequiredTags(this MetadataDatabase mdd, TagSetType tagSetType, TagSet requiredTags, TagSet excludedTags)
        // Get the tag rows for the specified tags so we can get their database ids.
        List<Tag_MDD> requiredTagRows = GetOrCreateTagsInTagSet(mdd, requiredTags);
        List<Tag_MDD> excludedTagRows = GetOrCreateTagsInTagSet(mdd, excludedTags);
        // Here's what the query will look like for 2 requried tags and 1 excluded tag
        from TagSet as ts
            -- Required Tags
            inner join TagSetTag as tst0
                on ts.TagSetID = rtst0.TagSetID
            inner join TagSetTag as tst1
                on ts.TagSetID = rtst1.TagSetID
            -- Excluded tags
            left join TagSetTag as etst0
                on ts.TagSetID = etst0.TagSetID
                and etst0.TagID='tag id 3'
            rtst0.TagID = 'tag id 1'
            and rtst1.TagID = 'tag id 2'
            and etst0.TagID is null
        string queryText = "SELECT ts.* FROM TagSet ts ";
        string joinText = string.Empty;
        string whereClause = string.Format("WHERE ts.TagSetTypeId = {0} ", (int)tagSetType);
        // Join to one instance of TagSetTag for each required tag.
        for (int i = 0; i < requiredTagRows.Count; ++i)
            joinText += string.Format(GTSWRT_RequiredInnerJoinFormat, i);
            whereClause += string.Format(GTSWRT_RequiredWhereClauseFormat, i, requiredTagRows[i].TagID);
        // Join to one instance of TagSetTag for each excluded tag
        for (int i = 0; i < excludedTagRows.Count; ++i)
            joinText += string.Format(GTSWRT_ExcludedLeftJoinFormat, i, excludedTagRows[i].TagID);
            whereClause += string.Format(GTSWRT_ExcludedWhereClauseFormat, i);
        // Assemble the query text and return the results.
        queryText = queryText + joinText + whereClause;
        List<TagSet_MDD> tagSetList = mdd.Query<TagSet_MDD>(queryText).ToList();
        return tagSetList;


  11. It's the weekend, so that means I get to share all I worked on last week in another edition of the Developer Diary Digest!


    It seems like I've been putting off a holiday / event system for at least the last 6 months. It's one of the systems I've been most anticipating, but it relied on too many other moving pieces to work on...well, until now!

    At the dawn of each day, the game now checks if there's an event scheduled, and if so it fires off any scripts related to it. It's pretty robust, and the scripts can do things like create holiday-specific visitors, add new music or decorations, change dialog, and a lot more.


    As I wrapped it up, I realized that I needed a way to inform the player about upcoming events and what they were all about. This naturally lead into the next thing I worked on...


    You can now receive letters from villagers, visitors, and other friendly monsters in the game. The goal is to integrate the mail system into as many other parts of the game as I can. For example, you'll get a flyer the day before each holiday that explains it:


    Letters you receive from villagers will reflect their personalities as well as their disposition toward you. Most will be helpful or friendly, but others, like Taswell,


    probably won't be at first.

    As I said above, I want mail to be integrated into as many other systems as I can. As I was browsing my list of features I got to "The ability to submit feedback from in-game" when I suddenly had an idea...


    ...wouldn't it be cool if you could write letters to the developer from inside the game itself?


    Now obviously there's a lot of things to consider here - security, spam protection, etc. - but the idea is so cool to me that I'll do whatever it takes to make it work.

    It's hard enough to encourage users to submit feedback, so providing something in-game that's also contextualized via a system they're going to be using every day can only help!


    Finally, I'll end this week sharing a new 'flavor' feature.

    If you've played any of the demos you've likely seen birds flying about every so often. But unlike real life, they've been totally silent.

    Well not anymore! Birds that fly overhead will now chirp and caw and sing. I obviously can't record sounds via gifs, so I tried my best to provide an alternative:


    Well that'll do it for this week. Enjoy your weekend, y'all!

  12. In this daily blog (and video)-series I take a first impressions look at the best mobile games that I come by. Be sure to share your favorite mobile game with the rest of us in the comments below!

    Race Kings is the first racing game I have enjoyed playing in quite a while! It is a racing game based around drifting, in which you bet in-game cash to battle an opponent player (live), and whoever wins, gets the cash. 

    There's plenty of cars, the graphics are awesome, several events and fresh maps, and no stamina system. But! A part of whoever wins a battle depends on who has the most "Edge", which is a speed bonus added whenever you upgrade parts of your car. Edge resets every 30 minutes, meaning that you're forced to keep upgrading your car to keep winning. Upgrading your car, however, costs cash, which you conveniently can buy for real life money. 

    So where does the game land? In my opinion, the game is still worth checking out, as the gameplay is rather unique and had me sitting on the edge of my seat while playing. 

    My thoughts on Race Kings:

    Google Play: https://play.google.com/store/apps/details?id=com.hutchgames.racingnext&hl=en
    iOS: https://itunes.apple.com/nz/app/race-kings/id988762223?mt=8

    Subscribe on YouTube for more commentaries: https://goo.gl/xKhGjh
    Or join me on Facebook: https://www.facebook.com/mobilegamefan/
    Or Instagram: https://www.instagram.com/nimblethoryt/
    Or Twitter: https://twitter.com/nimblethor

  13. ActDesigner.png.0ed775bbe93d10008521b20299c17602.png

    I made a lot of progress in the past week. Waypoints, acts, and Quests – three of the features I wasn’t sure how to implement into Project Peril, resulting in much procrastination. I finally took the time to sit down and think through how these systems will be implemented neatly while keeping it easy to create acts, quests, and waypoints via script or internal tools. I’m quite happy with the result, and it took me just a few minutes to whip up a an act with a few waypoints and a quest that requires new heroes to kill a monster standing at the gate before being granted access to the town of Act 1.

    I’m also rewriting how inventories are managed on the client.  The way the inventory system was previously coded made it really hard to display stashes, trade screens, and NPC screens because it was kinda hard-coded to support only the player’s inventory.  As soon as this feature is complete I will begin working on trading and NPCs who sell items.  Something to look forward to next week, I suppose.



  14. We just started 3D modeling the #ColoredWoman from the book introduction to Game | Book Charly Men's BIZARRE.
    Simultaneously, we create the main-character in 3D, and we are also in the process of furnishing the first game location, Clearwaters appartment, in 3D as well. 

    The colored woman is going to dance in our next video that is planned to be published after summer.

    She is a vision of main-character of the game, Charly Clearwater, who will therefore start to write his novel Exzess. We recreate this book scene as a sequence in the game. 

    Common girl! Dance for me!



  15. We're approaching the time when reputation for all members will be re-indexed.

    As has previously been described, in our previous system reputation had a fuzzy definition. While a member could earn reputation through the usual up/downvotes, a member's activity could also generate reputation. For example, logging in on a daily basis would give you +1 reputation each login. Posting a blog, voting in the screenshot showdown, or posting an article would also generate reputation (at times +100!).

    But activity is not representative of how others in the community gauge your helpfulness, knowledge, or general contribution. In addition, the previous system does not match the new system where your reputation is only representative of your up/downvotes, which means the reputation still is not a representative value.

    To correct this, we will re-index the reputation for all members and remove all reputation points not earned through up/downvotes. Meaning, your reputation value will no longer include your site activity points, but it will include all of the up/downvotes you've received.

    A lot of members have a lot of reputation points, and in most cases the re-index will result in a severe drop in reputation value.

    So what about those reputation points based on activity? They have to be worth something, right?

    They are. All the activity reputation points will be converted into Pixels. We're finalizing how those points will be converted, but the current plan is for the conversion to align the activity with the Pixel awards in the new system. Site note: If you haven't figured it out yet, you earn Pixels through activity on the site. More activity through contributions to the community = more Pixels.

    We'll go into more about Pixels later. For now, I wanted to communicate this upcoming change and give the community an opportunity to provide feedback or ask questions.

  16. Hi everyone! :)


    Today, we'd like to share some wonderful news with you.


    We've recently applied to the Web Summit Alpha Programme, for startups like us to be present at the event. We can happily announce that we're officially going to be Web Summit 2017, in Lisbon, Portugal (our home country)! The event will take place from the 6th to the 9th of November, so we hope that if you'll be at the event too we can meet up!


    As you may already know, Web Summit is one of the biggest technology events worldwide. They're expecting more than 60.000 attendees this year! So it'll be a great opportunity for both FAXIME and our dear "Project SpaceVille".


    We'll have the opportunity to talk to investors and to show “Project SpaceVille” to the world in our booth. And that's just awesome! (laughs)


    Other Events


    We've already been to some small local game events, and we've always brought a prototype of "Project SpaceVille" with us. It's so gratifying to see people's faces enjoying our game. We've honestly been incredibly surprised by people's positive reaction to the game, especially considering that we've only showed a rough prototype so far (that's also why we haven't showed you much of the game here the blog).


    Just a side note: You can try this prototype (and others) out by applying the "Project SpaceVille" Insider Programme. Just send us an email to faximegames@gmail.com with the SPACEVILLE-IP access code. Thanks! :)


    Since we're on the matter of events, we've also applied for Indie Dome at Lisboa Games Week in September. And two days ago the PlayStation Awards Portugal programme was also released, so we will be also applying for that too! :)

    We're looking forward to seeing you in Web Summit!


    Until then,

    The FAXIME Team


    Follow us and keep updated at:

    Facebook: https://www.facebook.com/FaximeGames

    Instagram: https://www.instagram.com/faximegames/

    Twitter: https://twitter.com/FaximeGames

    Pintrest: https://www.pinterest.pt/faximegames/

    Web Summit 2017 - FAXIME.jpg

    Players Testing SpaceVille.jpg

  17. Hey guys and gals!

    It`s been an very busy week, and it will continue to be so for the next months. Alot of thing`s has been taken care of regarding animations, music, models and so forth and its very exciting to get things in order, so production can go smoothly and efficiently. Also, from now on the updates will come monthly (unless there is something extremely important to get out).

    So here is some screens for you to enjoy and dream about for about a month until the next update.


    Concept art of the cook, he has a pretty cool narrative story and it`s going to be cool to get your feedback on that in the full version of the game, he will not show up in the vertical slice.


    Cook Concept art



    Textured fiddel character in some variations. He is looking great, this is actually one of my favorite part for you to experience ingame.


    fiddler unity violin

    fiddler marmoset2fiddler marmoset4

    fiddler unity 3


    Game ready version of the whale, he is a lean mean killing machine. Old Grumpy. He has been hunted before but always managed to escape, he has years of experience. (Unity render)



    whale unity 1

    whale unity 2

    whale unity 3



    So this is it from the art side, can`t show you everything so will be little drops here and there. When we have a trailer ready it will show only in game gameplay. It`s going to be super cool, I can promise you that!


    See you again in august!




    Below is my preliminary draft design for the AI system within Spellbound. I'm slowly migrating away from scripted expert systems towards a more dynamic and fluid AI system based on machine learning and neural networks. I may be crazy to attempt this, but I find this topic fascinating. I ended up having a mild existential crisis as a result of this. Let me know what you think or if I'm missing something.

    Artificial Intelligence:

    Spellbound is going to be a large open world with many different types of characters, each with different motives and behaviors. We want this open world to feel alive, as if the characters within the world are inhabitants. If we went with pre-scripted behavioral patterns, the characters would be unable to learn and adapt to changes in their environment. It would also be very labor intensive to write specific AI routines for each character. Ideally, we just give every character a self-adapting brain and let them loose to figure out the rest for themselves. 

    Core Premise: (very dense, take a minute to soak this in)
    Intelligence is not a fixed intrinsic property of creatures. Intelligence is an emergent property which results directly from the neural topology of a biological brain. True sentience can be created if the neural topology of an intelligent being is replicated with data structures and the correct intelligence model. If intelligence is an emergent property, and emergent properties are simple rule sets working together, then creating intelligence is a matter of discovering the simple rule sets.

    Each character has its own individual Artificial Neural Network (ANN). This is a weighted graph which uses reinforcement learning. Throughout the character's lifespan, the graph will become more weighted towards rewarding actions and away from displeasurable ones. Any time an action causes a displeasure to go away or brings a pleasure, that neural pathway will be reinforced. If a neural pathway has not been used in a long time, we reduce its weight. Over time, the creature will learn.

    A SIMPLE ANN is just a single cluster of connected neurons. Each neuron is a “node” which is connected to nearby neurons. Each neuron receives inputs and generates outputs. The neural outputs always fire and activate a connected neuron. When a neuron receives enough inputs, it itself fires and activates downstream neurons. So, a SIMPLE ANN receives input and generates outputs which are a reaction to the inputs. At the end of neural cycle, we have to give response feedback to the ANN. If the neural response was positive, we strengthen the neural pathway by increasing the neural connection weights. If the response was negative, we decrease the weights of the pathway. With enough trial runs, we will find the neural pathway for the given inputs which creates the most positive outcome.

    The SIMPLE ANN can be considered a single cluster. It can be abstracted into a single node for the purposes of creating a higher layer of connected node networks. When we have multiple source inputs feeding into our neural network cluster and each node is running its most optimal neural pathway depending on the input, we get complex unscripted behavior. A brain is just a very large collection of layered neural nodes connected to each other. We’ll call this our “Artificial Brain” (AB)

    Motivation, motivators (rule sets):
    -All creatures have a “desired state” they want to achieve and maintain. Think about food. When you have eaten and are full, your state is at an optimally desired state. When time passes, you become increasingly hungry. Being just a teensy bit hungry may not be enough to compel you to change your current behavior, but as time goes on and your hunger increases, your motivation to eat increases until it supersedes the motives for all other actions. We can create a few very simple rules to create complex, emergent behavior.
        Rule 1: Every creature has a desired state they are trying to achieve and maintain. Some desired states may be unachievable (ie, infinite wealth)
        Rule 2: States are changed by performing actions. Actions may change one or more states at once (one to many relationship).
        Rule 3: “Motive” is created by a delta between current state (CS) and desired state (DS). The greater the delta between CS and DS, the more powerful the motive is. (Is this a linear graph or an exponential graph?)
        Rule 4: “relief” is the sum of all deltas between CS and DS provided by an action.
        Rule 5: A creature can have multiple competing motives. The creature will choose the action which provides the greatest amount of relief.
        Rule 6: Some actions are a means to an end and can be chained together (action chains). If you’re hungry and the food is 50 feet away from you, you can’t just start eating. You first must move to the food to get within interaction radius, then eat it.

    Q: How do we create an action chain?
    Q: How do we know that the action chain will result in relief?
    A: We generally know what desired result we want, so we work backwards. What action causes desired result (DR)? Action G does (learned from experience). How do we perform Action G? We have to perform Action D, which causes Action G. How do we cause Action D? We perform Action A, which causes Action D. Therefore, G<-D<-A; So we should do A->D->G->DR. Back propagation may be the contemporary approach to changing graph weights, but it's backwards.
    Q: How does long term planning work?
    Q: What is a conceptual idea? How can it be represented?
    A: A conceptual idea is a set of nodes which is abstracted to become a single node?

    Motivators: (Why we do the things we do)
        Body Temperature
        Social Validation
        Pain Relief
        Virtues, Vices & Ethics
    Notice that all of these motivators are actually psychological motivators. That means they happen in the head of the agent rather than being a physical motivator. You can be physically hungry, but psychologically, you can ignore the pains of hunger. The psychological thresholds would be different per agent. Therefore, all of these motivators belong in the “brain” of the character rather than all being attributes of an agents physical body. Hunger and body temperature would be physical attributes, but they would also be “psychological tolerances”.

    Psychological Tolerances:

    {motivator} => 0 [------------|-----------o----|----] 100
                     A            B           C    D    E

    A - This is the lowest possible bound for the motivator.
    B - This is the lower threshold point for the motivator. If the current state falls below this value, the desired state begins to affect actions.
    C - This is the current state of the motivator.
    D - This is the upper threshold point for the motivator. If the current state exceeds this value, the desired state begins to affect actions.
    E - This is the highest bounds for the motivator.

    The A & E bounds values are fixed and universal.
    The B and D threshold values vary by creature. Where you place them can make huge differences in behavior.

    Psychological Profiles:
    We can assign a class of creatures a list of psychological tolerances and assign their current state to some preset values. The behavioral decisions and subsequent actions will be driven by the psychological profile based upon the actions which create the sum of most psychological relief. The psychological profile will be the inputs into an artificial neural network, and the outputs will be the range of actions which can be performed by the agent. Ideally, the psychological profile state will drive the ANN, which drives actions, which changes the state of the psychological profile, which creates a feedback loop of reinforcement learning.


    Final Result:
    We do not program scripted behaviors, we assign psychological profiles and lists of actions. Characters will have psychological states which drive their behavioral patterns. Simply by tweaking the psychological desires of a creature, we can create emergent behavior resembling intelligence. A zombie would always be hungry, feasting on flesh would provide temporary relief. A goblin would have a strong compulsion for wealth, so they'd be very motivated to perform actions which ultimately result in gold. Rather than spending lots of time writing expert systems styled AI, we create a machine learning type of AI. 

    I have never created a working artificial neural network type of AI. 

    Experimental research and development:

    The following notes are crazy talk which may or may not be feasible. They may need more investigation to measure their merit as viable approaches to AI.

    Learning by Observation:
    Our intelligent character doesn’t necessarily have to perform an action themselves to learn about its consequences (reward vs regret). If they watch another character perform an action and receive a reward, the intelligent character creates a connection between an action and consequence. 
    Exploration Learning:
    A very important component to getting an simple ANN to work most efficiently is to get the neurons to find and establish new connections with other neurons. If we have a neural connection topology which always results in a negative response, we’ll want to generate a new connection at random to a nearby neuron. 

    Exploration Scheduling:
    When all other paths are terrible, the new path becomes better and we “try it out” because there’s nothing better. If the new pathway happens to result in a positive outcome, suddenly it gets much stronger. This is how our simple ANN discovers new unscripted behaviors.

    The danger is that we will have a sub-optimal behavior pattern which generates some results, but they’re not the best results. We’d use the same neural pathway over and over again because it is a well travelled path.

    Exploration Rewards:
    In order to encourage exploring different untravelled paths, we gradually increase the “novelty” reward value for taking that pathway. If traveling this pathway results in a large reward, the pathway is highly rewarded and may become the most travelled path.

    Dynamic Deep Learning:
    On occasion, we’ll also want to create new neurons at random and connect them to at least one other nearby downstream neuron. If a neuron is not connected to any other neurons, it becomes an “island” and must die. When we follow a neural pathway, we are looking at two costs: The connection weight and the path weight. We always choose the shortest path with the least weight. Rarely used pathways will have their weight decrease over a long period of time. If a path weight reaches zero, we break the connection and our brain “forgets” the neural connection.
    Evolutionary & Inherited Learning:
    It takes a lot of effort for a neural pathway to become developed. We will want to speed up the development. If a child is born to two parents, those parents will rapidly increase the neural pathways of the child by sharing their own pathways. This is one way to "teach". Thus, children will think very much like their parents do. Other characters will also share their knowledge with other characters. In order for knowledge to spread, it must be interesting enough to be spread. So, a character will generally share the most interesting knowledge they have. 

    Network Training & Evolutionary Inheritance:
    An untrained ANN results in an uninteresting character. So, we have to have at least a trained base preset for a brain. This is consistent with biological brains because our brains have been pre-configured through evolutionary processes and come pre-wired with certain regions of the brain being universally responsible for processing certain input types. The training method will be rudimentary at first, to get something at least passable, and it can be done as a part of the development process.
    When we release the game to the public, the creatures are still going to be training. The creatures which had the most “success” will become a part of the next generation. These brain configurations can be stored on a central database somewhere in the cloud. When a player begins a new game, we download the most recent generation of brain configurations. Each newly instanced character may have a chance to have a random mutation. When the game completes, if there were any particular brains which were more successful than the current strain, we select it for “breeding” with other successful strains so that the next generation is an amalgamation of the most successful previous generations. We’ll probably begin to see some divergence and brain species over time?

    Predisposition towards Behavior Patterns via bias:        
    Characters will also have slight predispositions which are assigned at birth. 50% of their predisposition is innate to their creature class. 25% is genetically passed down by parents. 25% is randomly chosen. A predisposition causes some pleasures and displeasures to be more or less intense. This will skew the weightings of a developing ANN a bit more heavily to favor particular actions. This is what will create a variety in interests between characters, and will ultimately lead to a variety in personalities. We can create very different behavior patterns in our AB’s by tweaking the amount of pleasure and displeasure various outputs generate for our creature. The brain of a goblin could derive much more pleasure from getting gold, so it will have strong neural pathways which result in getting gold.

    AI will be able to interact with interactable objects. An interactable object has a list of ways it can be interacted with. Interactable objects can be used to interact with other interactable objects. Characters are considered to be interactable objects. The AI has a sense of ownership for various objects. When it loses an object, it is a displeasurable feeling. When they gain an object, it is a pleasurable feeling. Stealing from an AI will cause it to be unhappy and it will learn about theft and begin trying to avoid it. Giving a gift to an AI makes it very happy. Trading one object for another will transfer ownership of objects. There is no "intrinsic value" to an object. The value of an object is based on how much the AI wants it compared to how much it wants the other object in question.
    Learning through Socialization:
    AI's will socialize with each other. This is the primary mechanism for knowledge transfer. They will generally tell each other about recent events or interests, choosing to talk about the most interesting events first. If an AI doesn't find a conversation very interesting, they will stop the conversation and leave (terminating condition). If a threat is nearby, the AI will be very interested in it and will share with nearby AI. If a player has hurt or killed a townsfolk, all of the nearby townsfolk will be very upset and may attack the player on sight. If enough players attack the townsfolk, the townsfolk AI will start to associate all players with negative feelings and may attack a player on sight even if they didn't do anything to aggravate the townsfolk AI.

  19. Hero Toon Tower Defense It is a tower game, but it is not the typical tower defense, where buildings are built along a path.

    In this game you have to build a village first, then you have to add your system of defenses like walls, towers of arrows and towers of fire.

    And like any strategy game, you have to build barracks to recruit troops. These units serve to defend the town from the attacks of enemy hordes.

    The game has a level that develops inside the underworld in dungeons, where the mission is to rescue the princesses of the evil elves.

    The game was developed in Unity 5.4 and use purchased characters in unity asstes store.

    You can download the game from google store:


    Hero Toon Tower Defense 10.png


    • 1
    • 0
    • 66

    Recent Entries

    Before we start our development blogs, we want to share our insight about us and the game.


    What is Alchemica?

    Alchemica is a game being worked on by a development team consisting of two people for several years.

    It is a free RPG game for Android with some unique takes. Players take the role as Charlotte, a young alchemist striving to become a successful merchant.

    During the course of the game, she can use materials taken from the world to craft various potions and bombs. These items can then be used for battles. The main idea is that she doesn't use conventional weapons, instead relying on her own expertise in crafting items to defeat monsters and gain loots in the form of more materials from them, thus repeating the cycle.

    Charlotte also owns a store, the one she wants to build reputation on. She can directly sell loots taken from dungeons for gold, or use the time to craft better items as they are worth more. Visitors will come to her store, and she must haggle with them to win her hard-earned gold coins.


    What does Alchemica looks like?

    As a die-hard fans of classic JRPGs, Alchemica is entirely made with hand drawn pixel-art to emulate that retro look that we hold dear. Battles are drawn out in that classic turn-based style, while dungeons are randomly generated.

    Hare are some screenshots of the game for people who are curious.






    Where can I try Alchemica?

    If anyone here is interested to give it a try, here's the Google Play link: https://play.google.com/store/apps/details?id=com.gdi.crunchybit.alchemica

  20. Unlike some of the Hollywood flicks these days, where the mindless comedies are dwindling away at their attempts at getting famous, a mobile application does as good as less the user would have to use their mind on it. Introducing a lot of complexities in a mobile application might not be the best course of action to get your more users.

    Let’s take a look at some of the reasons, why you should work on keeping your application as simple as possible.

    Complex Technology Could Pose a Problem

    Making a mobile application is about creating an impeccable combination of technology and content that works beautifully. At least at the simplest level, a mobile application is just that. The perfect combination is what makes the business end of the deal possible. But when the balance in this combination gets disturbed, it creates problems. While technology makes the idea behind the application possible, it wouldn’t bode well with the end users if they have to deal with the complexity that comes with that technology. As a developer, you have to make your application simple enough for the users to not just understand, but really be interested in using the app. In order to make the app look less confusing, keep it simple.

    Simplicity Gains you More Time

    Or, you lose less time. Too many windows to open, too many tasks to get done - all in one app - it gets confusing, it seems like an eternity before the users see things actually getting done, and it looks messy too. And so, a clean interface always means an effective use of time and energy both, on the part of your end users. Simplicity is what brings efficiency to the whole experience of using any mobile application.
    When You Need to Keep Multiple People on the Same Page

    There are many applications out there which are usually used in groups of users - like the application Splitwise, which allows a group of friends to split money equally, telling each of them how much they owe every other friend, and how much everyone else owes them. These are classic examples of applications which need to be simple, because the chances of confusion here are abundant. The apps that are meant to bring about a level of organization into people’s lives - these are the kinds of apps that should never be complex. These are the apps that especially thrive on simplicity.

    To say that mobile applications have changed the way people operate today in their day-to-day lives, would be just about right. That makes it even more necessary for the developers to work harder on making simplicity on of the top features of every application that they design. Because not just the understanding, but the accessibility and more than a certain amount of usage too comes from how simple and clear the structure of the applications is. The road to success, undoubtedly starts with simplicity.

  21. Finalspace
    Latest Entry

    Well a lot had happened and it seems i have my confidence and motivation back for coding.

    So i decided to finish "unfinished" prototypes and games i have created in the past and then going from there.

    Right now i am working on a breakout prototype i made in UE4 with random generated maps, nice effects and other stuff.
    Looks like a project i may actually finish...

    That said i will focus on that for now only and not get distracted by other projects.

  22. JTippetts
    Latest Entry




    So, I ended up doing the "skirts" method I spoke of in the last post. And in conjunction with the default Urho3D water shader (with a few small tweaks, and more to come to eliminate artifacts on the corners of the water blocks) it actually looks pretty decent. The water animates a noise texture that ripples the ground beneath. It also uses a reflection texture (which I have set to black at the moment) if desired. I might tweak the water shader further, but for now I'm happy with it. I've also got all the small issues sorted out from the change to multi-level water. It wasn't a large change, but I was surprised at how many different parts of the code worked from the assumption that water was determined by elevation < 9. I thought I had contained it better than that, but I did get all the various spellcasting, pathfinding and object spawning oddities worked out.

  23. Businesses are moving at a greater pace than they ever were. The consumer habits are changing in accordance with the constant evolution in technology which has moved from mainframes to our pockets and wrists. To keep up with the changing consumer habits and to be at the bleeding edge, enterprises are trying hard to catch up. They are increasingly moving to a mobile first strategy and are investing more money than ever on enterprise app development.

    Enterprise mobility solutions architects are researching innovative development techniques and empowering

    • faster development cycles,
    • minimum development cost,
    • minimum coding; maximum security.

    App developers are adopting newer development techniques and following modern development practices to fulfil the requirements of their enterprise clients. Some of those technologies, methods, and practices I have listed here:


    1.  Rapid Mobile App Development (RMAD)

    Enterprise apps owing to business value they carry consumes more development cycles than consumer apps do. is based on ‘zero’ coding philosophy to shrink development time and meet mission critical business tasks. Application developed with RMAD are good-enough to distribution inside an enterprise to address an adhoc problem that can’t be addressed with the existing applications in place.

    RMAD is basically Rapid Application Development (RAD) extended to a mobile environment. RMAD, with little coding or by implementing methods like early prototyping and reusing software components, can be used to develop customer facing apps in addition to internal apps.

    RMAD development environment is web based and supports object oriented programming.

    2. Bimodal IT

    Bimodal IT is the recent trend in enterprise app delivery. As the name suggest, in Bimodal IT, there are two parallel modes involved. One mode of app development focusses on stability another on agility. Mode 1 is traditional and sequential, emphasizing safety and accuracy. Mode 2 is exploratory and nonlinear, emphasizing agility and speed. This is expected to bridge the gap between demand and capacity, which is expected to be between five to one currently.

    Best Enterprise app development Practices

    1.     Cross-platform apps are the future of enterprise mobile app development

    Enterprise apps are more of a need than luxury. An employee is unlikely to complain about an app’s UI or theme color distributed by his employer the way he complains about an app developed by Facebook or Microsoft (Google apps are perfect!).

    Absence of native UI/UX support remains the biggest problem with cross-platform frameworks, today. They try to generate a common UI on all platforms which alienates users, who are prone to hamburger menu on Android and bottom menu on iOS. Fortunately, enterprise apps remain immune from this problem.

    There are number of cross-platform frameworks available in the market. The most popular is PhoneGap (owned by Adobe). Xamarin, owned by Microsoft is catching fast though. Objective-C (for iOS) or Java (for Android) can be done in C# with Xamarin, which already offers complete access to 100% of the native APIs for iOS, Android and Windows in C#.

    Appcelerator, Apache Cordova, Ionic and QT are other viable cross-platform tools that support desktop, web development, and mobile application development.






    Cross-platform = Faster development + Less Coding + Lower Cost

    2.     OAuth 2.0 + two-factor authentication for users’ authentication

    A practical tactic is to use OAuth 2.0. Many vendors support OAuth 2.0 with two-factor authentication including Azure AD, Ping, and Okta. Two-factor authentication requests a user to enter user ID and password (something you know) and a second validation, such as an OTP generated on your mobile phone (something you have) or a fingerprint (something you are).

    Android, iOS, Windows, and the latest web browsers all support OAuth 2.0 services. No developer should count on any other method of authentication.

    3.     Context Driven Testing (CDT)

    Context driven testing is the new form of agile testing. This kind of testing is executed when the end-users have dissimilar preference and requirements. CDT works for the mobile app which serve the need of one end-user but not the other. Let us say Microsoft Paint. Paint is an ideal application for casual graphics work

    But for a professional graphic designer who wants to add high-res graphics and different font size and colors may rather prefer Adobe Creative Suite. So context driven testing is built on the fact that ‘no solution is the best solution. But in this case, benefit lies with the consumers, since the final product that is approved is a user-friendly product, nonetheless several users may not agree with that as context driven testing is not a universal testing methodology and works in applications where conditions seldom change and test setups are unidentified.


    Enterprises are always dynamic as they continue to succeed in a modern ecosystem dominated by mobiles and wearables. The accessibility of apps as a way of taking on business competition with agility, rapidity, as well as contemplation and proper attention is the right way ahead.