Blogs

Our community blogs

  1. Summary

    This article presents a small set of principles that I had forged for myself after entering the world of full-stack javascript development for videogames and virtual worlds projects. You will find a lot of disclaimers here because these principles are quite away from the mainstream practices of front-end developers, and also I am a lot biased by my commitment to Free Software philosophy. So, just read this as a curiosity rather than a manifesto or a claim that this should be a standardized approach or the right solution.

    Disclaimer # 1: this is my personal opinion. It doesn't reflect the opinion of the companies I had or I am working for.

    Disclaimer # 2: Most of these principles doesn't make sense for situations where the ratio between the number of developers and the number of active projects is greater than one. I had been involved most of the time in the opposite situation: a single developer by project or even worse, a single developer with more than one project under active development. If you are in the first scenario, lucky boy, just stick religiously to the development guidelines and good practices documented by your company (they have documented that, right?). But if you are in the solo arena (indie, freelancer, start-up?) perhaps you will find one or two principles of value for you.     

    The principles

    1. The OS is the IDE.
    2. Stay away from the "new thing" fever
    3. Reuse with libraries, not with frameworks.
    4. Shell is your friend. Automate your art pipeline.

    The OS is the IDE

    An IDE is a program that consumes all your RAM trying to convince you that you can't develop without it. Fancy features, that 90% of the times are just wrapping calls to very simple command line instructions and tools already available in your OS. Things like syntax highlighting, advanced search features, monitoring of file changes, integration with git, are easily achievable with good old command line tools and lightweight programs. I worked many years with a long list of bulk IDEs, like Visual Studio, JBuilder, Eclipse, but you know what? you finally discover that the little checkbox hidden in some hard to find popup dialog was just adding a parameter to a command line call that you can assemble by yourself and run from a makefile or shell script. the UI of the IDEs changes over the time, but the underlying commands are the same. A bad side effect to get used to IDEs is for young developers that don't realize what is happening under the belt. I encourage you to learn what commands are part of your toolchain.  I finally decanted by VIM and a couple of terminal windows. and it just rocks. it doesn't matter if I am working in C++, javascript or python.

    and yeah, by OS I mean Linux.

    Stay away from the "new thing" fever

    When I moved for C++ and Java to javascript I was completely astonished. I was used to JEE for backend development, and the complexity of its architecture always seemed to me too bloated. When I learn how you can create fullstack applications with the humble javascript, the language got my heart, but not before a long process or negation where I did my best to use tools to make javascript look like java (typescript transpilers? class-library wrappers?). Then I learned the fundamentals (prototypical inheritance, mixing and module patterns) and it just flow.

    Soon, raising in javascript popularity also attracted people who considered that if we really were to do serious stuff in javascript, we should do it with serious frameworks. It was just like all Java Enterprise developers were trying to replicate JEE in Javascript. for me, that killed the main appeal of the language: simplicity.

    Today, Javascript landscape is a savage land, where every month a new tool or framework replace the previous one, transforming one year apps suddenly in legacy projects (understanding legacy project as a project written in a technology for which is hard to find skilled developers. if you jumped three years ago in the angular.js movement, and wrote your project with angular 1.3, I wish you good look finding developers that feel comfortable with that, because Angular 2.0 one year later completely overwrite the framework, forcing you to rewrite your whole codebase. And the race is far away from stop... need a task manager? use Grunt. eh, wait.. that is too 2015. use Gulp. sorry. too 2016. Use Webpack.. some day I discover that people was using npm to launch shell scripts, and later I recognized that I can do all my task manager tasks with a tool that had been always there: 

    Make.

    yes, I use makefiles and shell scripts.  

    Reuse with libraries, not with frameworks

    Reusability is one of the golden goals of software development. "don't reinvent the wheel" is the mantra of framework supporters. I agree with that. But, know what? sometimes, when someone had created a popular framework the need to support more and more side cases transform a simple tool (a wheel) in something that looks more like an Autobot or a portal to another dimension. it barely maintains its round shape (yeah, thinking in angular.js again). At the end of the day, a framework is a highly-opinionated set of libraries that pretend to cover a lot of use cases. In order to keep reusable, the rules to configure and use it grows in length and complexity. You will discover yourself digging in stackoverflow to understand if a bug in your application is yours or comes from the framework. and don't even think in check the source code of the framework: it will be hundred of times more complex than your own code. say bye to productivity.    

    Libraries, on the other hand, don't presume of you attaching to a single way to use them. libraries encapsulate functionality generic enough (think of Three.js, cannon.js, D3, Processing ) and you will have plenty of opportunities to mix them inside your project. usually easier to debug, inspect and learn from them. Libraries also offer you the adventage of replace them easily that when they came pre-bundled and tight-coupled to a framework.  

    A final reason why frameworks tend to be complex: to avoid the label of "highly opinionated" they favored imperative configuration over "convention over configuration". the last one is ridiculously fast and productive if you work in internal projects, i.e when you are a framework user and not a framework developer. "convention over configuration" makes easier to roll your own scripts because you can make safe assumptions about the location of resources, output dirs, naming conventions and share them with your team.

    disclaimer #3: large frameworks should be used for big projects, projects with long lifetimes and high rotation of developers. see disclaimer #2

    Shell is your friend. Automate your art pipeline

    A particularity of videogame naming conventions and standars of the art assets in order to be properly integrated into the project. Dev teams tend to produce large documents of technical specifications for the artists, who generally are not fond of study them in detail..  Playing with the saying of "a picture worst most than one hundred words" I would say that "a script worst most than one hundred words". Instead of writing spec documents, write scripts that actively validate the application of the specs automatically each time the artist submit a new asset.

    That is easier that it sounds, if you start with the right mindset and choose the right tools. Opensource projects like Blender, Gimp and Inskcape (the tools I use in my projects) offer you mechanisms to run scripts directly inside the tools, and even better, you can run the tools in command line mode (headless) and that means that you can integrate the exporting of the asset in your toolchain. Mix that with git and continous integration techniques and you will never worry again about that artist that thinks that including emoticons in the name of hers assets is cute.

    Note: An example of the headless scenario that I use is to execute from Make a Blender instance that opens a 3d model (.blend file), exports it using a custom python script, and store the output as json for reading in the assets folder of my web project. I expect to write another entry with details on that technique.

    Conclusions

    The cool thing about videogame programing in javascript is the flexibility and availability of tools and approaches that you can use. Keep it simple, and give yourself the opportunity to learn some "low level" tricks. Linux is plenty of resources and, even in the times of Unity3D-like IDEs,  the shell becomes an fun and productive environment once you get used to.  

     

     

     


     

  2. 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!

    In anticipation of upcoming Shadowgun Legends, I took a quick look at Unkilled (latest Madfinger games zombie shooter). 

    Although the game is starting to show some age (released in 2015), it still holds up decently well in terms of its graphics and gameplay, with primarily the UI elements looking dated by now. One thing I liked in particular was the ability to choose between a range of characters each with unique attributes (RPG-elements).

    The Skirmish gameplay mode feels somewhat pay2win, however, which is a shame and something I hope the developer will not implement in Shadowgun Legends.  

    My thoughts on Unkilled:


    Google Play: https://play.google.com/store/apps/details?id=com.madfingergames.unkilled&hl=en
    iOS: https://itunes.apple.com/nz/app/unkilled-multiplayer-zombie-survival-shooter-game/id969488951?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

  3. Hi everyone!

    Today we have a couple of big news to share with you :)

     

    Welcome to the team!

     

    As you may already know, for the past few weeks, we’ve been searching and searching for an artist to join our team. As we’ve finished the functional prototype for “Project SpaceVille”, now “Midday-Mayhem” (our artist) has been needing some help with developing the semi-final art assets. Although we don’t really need much right away, we need to test and eventually finalize the look and feel of the game. And we’d like to do it as soon as possible.

    After many weeks of searching and contacting people, we’ve finally found someone perfect to join the FAXIME team. Her name is Meera, and she specializes in developing 3D models. She’s also working with us remotely, but that’s not really a big issue since we’re already used to that. Everything is going great. We love her work and she is a really nice person. (smiles) We will post some of her work for you to see in the following days! (wink)

     

    Launching the Insider Programme

     

    Secondly, the moment you’ve been waiting for (we hope) is arriving! We are proud to announce that the “Project SpaceVille” Insider Programme will be officially launched this September 1st, with the release of the first insider build of the game!

    On that same day, we’ll be at the Game Dev Meet @Porto for the second time, this time showing off “Project SpaceVille”. We’ll give a small talk about the game and our journey as an independent game studio startup. We’ll also publicize the Insider Programme, of course. (laughs)

    Also, in some other great news! On August 31st, tune in on our friend’s Twitch channel, Miercolez (https://www.twitch.tv/miercolez) live at 9:30pm (UTC+00). He’ll be the first person playing the “Project SpaceVille” Insider Programme build. If you want to join there is space for everyone! (laughs) We’re really excited for this opportunity, and we can’t thank him enough. We hope it goes well, and that he doesn’t struggle to much playing the game (and finding those pesky bugs). (laughs)

     

    Some real developments

     

    Finally, on to some real game development! We recently went back to the inventory system, and realized that we needed to rethink the way it was implemented. Originally, we’d only planned for one inventory to exist, the player’s inventory that is. So we designed that system to be coupled with the user interface (UI). So, if we wanted to have another inventory for something else other than the player, the UI would need to be duplicated in order for it to work. You can see now why this might be a problem...

     

    "Project SpaceVille" - Inventory screen

     

     

    We realised that, in order for the game to be more realistic, it would be cool if your villagers had inventories as well, with items inside them, and with all the restrictions that would apply to a real player. So, we had to rebuild the inventory system from the ground up in order to separate the UI from the inventory data itself. This will also make saving and loading inventory data a lot easier than before.

    This is a pattern that we’ll be sure to follow from now on. Data is one thing, and what you see in the screen is another. If you’re developing games (or any other software for the matter), make sure you remember this. Don’t be like FAXIME! (laughs)

     

    Cya next time, everyone!

    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/

  4. Hi everybody,

    Since Monday, 21 August 2017, I'm preparing another remake for Candy's Space Adventures v10.57...

    In this remake, I fixed some details like environnement( grass, trees, flowers, people, animals, water, clouds, galaxies, space )

    It will be published soon! Xylvan, Xilvan Design...

  5. Hi all,

    No real news at the moment, I just put together a short gameplay trailer showing off some of the co-op gameplay in Building Block Heroes and wanted to show it off right away!

     

    Let me know what you think! All feedback is always welcome. Some people have mentioned that the gameplay looks a bit slow. This was a deliberate choice to make it clear how the gameplay functioned. Rest assured, during actual gameplay things move much faster, especially during boss battles and the newly-implemented Time Attack mode!

    Feel free to follow me on Twitter and Instagram as well if you're interested!

    Twitter

    Instagram

  6. facebook-an-150x150.pngOur current Facebook Audience Network (F.A.N.) monetization plugin was originally created as a “revenue-share” plugin where a small percentage (5%) of your Facebook Audience Network ads are credited to a Corona Labs account.

    Now, just like we did with AppLovin earlier this year, we offer the Facebook Audience Network in two forms:

    • The original revenue-share version where 5% of the delivered ads are attributed to Corona Labs.
    • A new paid version of the plugin without any revenue-share component. You keep 100% of your ad revenue and you manage your account directly.

    The new paid Facebook Audience Network plugin is available in the Corona Marketplace for $199/year.

    To use the paid version:

    1. Visit the Corona Marketplace and purchase the Facebook Audience Network Paid plugin.
    2. In your build.settings file, change the plugin entry from "plugin.fbAudienceNetwork" to "plugin.fbAudienceNetwork.paid".
    3. Update any require() statements in your code:
      local fbAudienceNetwork = require( "plugin.fbAudienceNetwork.paid" )

    Please visit our integration documentation for instructions on how to get up and running with Facebook Audience Network.


    View the full article

  7. World map Domen Koneski

    I’ve been working on a new ‘feature’ for the game – World Map. With this I have removed our initial idea of compass since you can now use your map to guide you troughout the world. The idea was to map out all islands with their positions as an icon but then noticed scaling and precision problems so I took another way of doing a world map.

    world map simple lowpoly floatlands

    world map WIP

    The idea was to render the visible world to a rendering texture using ortographic (2D) camera. I had alot of problems zooming in, aligning the grid and moving the whole map with the mouse. The end result is great and intuitive.

    world map finished lowpoly floatlands

    finished world map

    The map texture also has an edge detection algorithm on it for some image effects. Note that render texture can be wiped out when changing the level or programmatically pausing the whole application.

    Clouds everywhere Domen Koneski

    Skies in the game are empty so I started working on some more details, the first was adding some splats and details to the “cloud” cubemap, the second change is a cloud system with a pooling mechanism. When a cloud prefab hits something (e.g. an island) or is out of bounds it shrinks and is then sent back to pool ready to be reused. The system needs some more prefabs and more movement logic to it – cyclones (read: vector field) anybody?

    clouds lowpoly floatlands


    More skins Andrej Krebs

    This week I made some more variations of armour sets that will be available as skins. I also added a clothes outfit that will be purely aesthetic. I added some paintwork to the wooden armour, some decorational bolts to the junk armour and made a coat and a hat for the aesthetical set. I also made a new, fine metal armour set, that will be available in a variety of finishes.

    player skins lowpoly floatlands

    more variations of player skins


    Swamp biome concept Mito Horvat

    I’ve decided to take a short break from all those numerous player armour sketches and to break the monotony I’ve started researching concepts for the next biome. The next in line is a dense swamp biome. Below you can see couple of speedpaintings I did of the enviroment. I’ve also experimented with different color palletes to portray a specifit mood for the biome.

    swamp painting lowpoly floatlands

    greenish swamp biome concept

    Those type of islands will be covered in thick mist and tall and lush trees. Trees will have huge roots poking out of the ground, and long willow tree like branches. On the ground you’ll find swamp biome specific foliage and wildlife, and the landscape will be littered with ponds.

    swamp painting lowpoly floatlands

    dark swamp biome concept


    Drone movement and destruction tadej vranesic floatlands

    Scouting drone has finally got its smooth flaps movement. It is correlated with its speed – at desired speed flaps are perpendicularly to the line of drone sight, with speed increase they move backwards and with speed decrease they move forward.

    drone moving flaps lowpoly floatlands

    speed correlated flaps movement

    Previously I showed you an example of scouting drone destruction and how it falls appart into pieces. This time you can check out the mining drone destruction – not as many destructible parts, but still pretty good.

    drone destruction lowpoly floatlands

    drone destruction


    Dropship movement vili ikona

    I got back to working on dropship movement, since it still needed some smoothness to it. It’s almost finished, so I can show you a bit of a sneak peek. Mostly I worked on tilt movement, PID controllers (Vector3 and Quaternion PID controllers) and cleaning up the code. Remember that this is still a WIP, but here is a short animation showing how it lands on an island.

    dropship landing lowpoly floatlands

    dropship landing


    More about Floatlands: website, facebook, twitter, instagram

  8. Well, just had a great holiday in Bali, Godboy is now super relaxed and ready to go crazy on work.

    Last week, we had finished early access version of campaign maps, added a few monsters, polishing some maps.

    If you would like to see the photos, please visit our blog:
    https://www.hellwarders.com/single-post/2017/08/22/Dev-Blog-Week-12---New-Towers-Characters

    library2.jpg

    fireTower2_concept_P04.jpg

    fireImpBoss_P08.JPG

  9. I will stop doing any private game or software development for a while or will drop it entirely - depending on how i feel about it.

    Right now i dont feel like doing it and dont see any reason why i should do this anymore. I cant hardly find time and when i have one, it just isn´t fun.

    But i may do some trickjump mapping in reflex... when they fixed that broken editor :-(

     

    So bye guys, have a good life.

  10. ATM
    Latest Entry

    Bouncy bob is one button game, here is simple overview of how our controls work: 

    599ace2997d08_SterowanieInstrukcjeMenu.thumb.png.6a0a34371e6c7339cacfe8454ac4192f.png

     

    There is gameplay video trailer on Bob's steam page:

    http://store.steampowered.com/app/680620/Bouncy_Bob/

  11. When Apple announced a redesign for its decade old App Store just a few months ago, app makers for the platform all over the world felt expectant and apprehensive about the kind of impact it's going to have to their apps. Apps with a star-studded presence in App Store were most apprehensive, quite naturally. For a vast majority of mobile app development companies, it was rather a good one as it could make their app rating and positioning better if not worse. In all considerations, such a big update received a lot of buzz from the developer community.

    Apart from the general awe, apprehension and expectations, what does an update of such nature mean for the apps and their prospects? That is precisely what we would like to explain here.

    app_store_icon.png.c303bdc24ea26209f8d06c9a1da076c2.png

    Finding apps would be easier than ever

    If you take a deeper look at how the apps generate revenue and get discovered, you are bound to recognise that apps that deserve most buzz for their long-term usefulness often remain undiscovered while apps that become popular for shorter span get the most limelight. Many users simply cannot know of certain useful apps just because they remain unknown and undiscovered.

    The latest update of the App Store will help us deal with this issue of discoverability. From now on the editorial team of the Apple will choose apps for featured list and various chosen categories as per the quality of the app. With the new focus on quality, the App Store now through a card based system of a display will showcase best apps of each category. The various featured cards that will help to showcase best apps include Sneak Peak, Apple of the Day, Major Update, Now Trending, etc. Obviously, this new system will make finding apps easier than ever before.

    Optimised product page

    One of the best things with the new update is the optimised product page which will allow offering more detailed information about the apps. Having a good preview of the app is always impressive and boosting for users to download an app. The new App Store update will have value-added previews, localization details of the app, and new text fields. The app previews in the new App Store only got better and detailed with an array of attributes. The product page also allows showcasing in-app purchases, and users can make purchases way before downloading the app.

    Far better search function

    Another impressive way new App Store can add value to the user experience and app discoverability is the new and better search function. Users can find apps and related contents about the apps more quickly with enhanced search. Search results now will consist of detailed layers of information including in-app purchases, app developers, ratings, a collection of apps from the same publisher, categories, editorial remarks and stories, tips, etc. A search function allowing users having so many information about an app right from the App Store will obviously render positive impacts on download.

    Editors have a lot to say and for the better

    If you look at the new and updated App Store, you are bound to recognise that instead of depending on so-called machine algorithms, Apple this time is bent on improving quality through its editorial team. App Store this time is all set to deliver an editorial experience to the users just for the sake of making the user experience better.

    Based on the quality of the apps in each category Apple introduced a card based selection system to feature quality apps across categories. From introducing users it's the regularly updated contents through selection like Meet the Developer and Behind the Scenes or What’s on My iPhone to more need focused contents through selections like Pro Tip, Life Hack, The Basics, the curated and edited contents of the new App Store will help us access apps better as per preference and needs.

    Ratings revamped for the better

    The new App Store helped apps coming with their app updates without needing to be concerned about messing with the app rating. Unlike earlier times when ratings were meant separately for each different update, app ratings are now considered with all subsequent updates together. This will help developers coming with a freshly updated app to come out clean and get a rating based on the latest update. This will obviously help developers to come with more frequent updates as this is not likely to bring down the rating of an app.

    The focus is on user experience and nothing else

    The focus of the new App Store primarily rests on user experience. Apple is head bent to help users find apps they need while allowing quality app producers more exposure to the users their apps are meant for. Apple has realised that the App Store has come of age and is a densely crowded place with a multitude of apps. To give more exposure to quality apps for specific user contexts and needs, Apple had to devise a redesign to clear the clutter with a consistent focus on quality.

    For mobile app developers, the new App Store unleashed a bounty of never before opportunity to reach their target audience more easily and garner more traction and downloads from the users. In the long run, the new App Store will only push the qualitative focus and make a better place for the users as well as developers of the iOS platform.

  12. This is my last week as indie developer ( also featuring the work of my team ), the most important point is that i move to Game Maker 2 :

     

     

    Hope you like it, comments appreciated.

     

    Thanks !

  13. It’s the weekend, and that means another edition of the Village Monsters Dev Diary Digest (VMD3)

    This edition is an extra-large one. I typically try to pick out the 3 most important things I worked on to share, but I was a real whirling dervish of productivity this week, and just 3 things ain’t going to cut it. Enough talk, let’s dig in.

    A Preview of Seasons

    -kwhxzpmj.gif

    Up until now, every screenshot I shared has been from ‘Spring’, but it’s been somewhat misleading as Village Monsters is a game of many seasons and colors.

    This week, I wanted to experiment with what different seasonal tilesets might look like, so I whipped up the above to test them out.

    It’ll likely change a few times between now and the final release, but I’m pretty happy with the colors and mood of each season.

    New Additions to the Town

    Last week’s addition of the beach inspired me to do some further work to the village and surrounding areas.

    -nhrbm32c.png

    The ‘civic district’ - such at that is - has seen some love. A new town plaza sits empty, but that won’t be for long. A graveyard was added to the church, though I’m not sure what the monsters are planning for it.

    -ahr2aitw.png

    The ‘residential district’ has also seen a new house pop up seemingly overnight. That skull really sticks out like a sore thumb, and Stapes & Saley (you know, the skeletal warriors that guard the gates) have been told to do something about it. Maybe next week.

    -vvpz3byg.png

    Finally, a new area has been spotted east of the Crossroads. It’s called the Overlook, and it’s one of the best ways to get a view of the land outside the village. As with the beach, this area is usually pretty quiet. Maybe one day it’ll make for a good gardening spot?

    Compendium Vol. 2

    -7wime9ip.gif

    The Compendium is a very important book that is much more than just a menu. It is a complete log of your adventures and exploits in the world. It tracks quests, villager profiles, critter and fish collections, a map, and much more.

    The Compendium Vol. 2 does all these same things, but with a fresher coat of paint and some increased usability options.

    I’m unsure at this stage how fleshed out the Compendium will be by Alpha 1’s release, but at minimum you can expect some light tutorializing to via quests to be handled by the Compendium

    A Grab Bag of Other Goodies

    Stalking Critters

    -qhcdmuyh.gif

    By holding the ‘Swing Net’ action you can now enter stalk mode. You move much slower, but animals will almost never run away from you. Be sneaky, but still be quick about it!

    A System-level menu

    -pn6m2uwp.png

    Escape no longer dumps you from the game instantly. It now brings up a menu

    Reworked Choices

    -4kwy2fqf.gif

    Choices in dialog now works a bit differently. You simply hold the direction of the answer you want to give


    Well, that’ll do it for this week. Just a few more weeks before PAX, Alpha 1, and something pretty big. I’m pumped!

    -4uypfey4.png

    • 1
      entry
    • 0
      comments
    • 48
      views

    Recent Entries

    Almost a week after the end of the contest. Here are my thoughts about the contest. Overall, I think it was a very nice week.

    This is first time when I worked with someone (same for SilviuShader), so it has been an unforgettable experience. Also, I made new friends, because I didn't know anybody in team before the contest... 

    Things that went well

    Even thought this was the first time when me and SilviuShader worked together we got along very easy.

    The whole programming part went quite well. We didn't have major problems.

    I liked working with placeholder content (I love those cups :)) )

    I am very proud of that Day-Night cycle and the tutorial.

    Also, I really like the models and the SFX.

    Things that didn't went so well

    We had some problems with large models (for some reason DirectX TK wouldn't render them)

    Day 5 didn't get a comment :( 

    To sum up, this was a very nice experience.

     

  14. As a professional web developer, I often get asked what’s needed to get started with web development or I’ll find questions relating to web development on the forums.  But, I find that it is often difficult to answer succinctly, because a “Hello, World!” web server involves so many different, yet vital pieces.  Perhaps I’ll detail them out in a series of articles.  Until then, I’ve taken some time to summarize the topics involved in developing a web application:

    • Systems administration. How processes work and communicate, how to add users and groups, how to manage file permissions and/or ACLs, how to set up logging, backups, and automated tasks, how to effectively use a terminal to navigate an operating system, how to setup and configure dependencies and 3rd party software. (Bonus points for having Docker or Vagrant do this for you.) Typically Linux–based systems are used, but does not necessarily exclude Microsoft. Additionally:  How to spin up a virtual machine, and manage servers over SSH or RDP.

    • HTTP and web servers. Web servers are the glue between the frontend and the backend, and HTTP is the basis of the communication between them:  How web servers work, how to configure them to serve both static and dynamic content, and how to leverage HTTP headers and HTTP response codes appropriately.  Web servers:  apache2, nginx, Microsoft IIS.

    • Backend. This is the actual application or “business logic solution”: How to write a program or script that processes requests, performs work, and prepares proper HTTP responses. How to leverage web frameworks to assist in this process.  A backend can be a strict data API to be consumed by one or multiple frontends (web, mobile, console), or a traditional multi–page application (simpler). Languages: Perl, PHP, Python, Ruby, Javascript, and even C/C++. Web frameworks: Laravel, Django, Ruby on Rails, nodejs, ASP.NET MVC, and many more.  Also helpful to know:  JSON, REST, SOAP.

    • Frontend. This is the user–facing piece of the backend:  How HTML works to lay out a page, how CSS works to assist in page layout and theme, how to leverage Javascript to breathe life into the frontend, and how to asynchronously interact with a backend.  Languages: HTML5, Javascript, Typescript, CSS, SASS, SCSS.  Also helpful: JSON, XML, XPath.

    • Browsers: How to use the developer tools in any browser to tweak styles, debug javascript, and debug HTTP requests made by the browser and HTTP responses made by the web server or the backend.

    • Databases. Relational databases are array–of–structures on steroids: How to setup a (relational/document) database and schema, setup database users and their permissions, how to write queries, and how to write database migrations.  Flat files and NoSQL can be okay, too.

    • Version control. Very important in any software project: How to use a version control system, how to write meaningful commits, how to resolve merges, how to submit merge requests, and how to manage branches.

    • Devops: How to configure and build the backend project and/or the frontend project. How to automate builds, run tests, report problems.

    (Not pictured here:  Websockets.)

    With these in mind, read What happens when you type google.com into your browser and press enter for an example of how a sample request is made.

    Hopefully, this has been helpful to game developers looking to build a real–time multiplayer web game or even a high score tracking server.

    Thanks for reading, see you around!

  15. The 3D modelling of the colored womans' face was completed last week.

    Of course she still needs hair and ears, but the main work is done. Now we can nail the head to her body in order to finalize the entire modelling of this characters' body.

    After this we will colorize her body in sparkling mixed colors.

    At the end, we will animate her movements, so that she is able to dance in our next video.

    It is planned to make her look sexy and creepy at the same time, as she is going to seduce the main-character of the game, Charly Clearwater, only to harm him later on.

    Let's do this.

     

    FaceColoredWoman2.jpg

    FaceColoredWoman3.jpg

    FaceColoredWoman4.jpg

    FaceColoredWoman7.jpg

    FaceColoredWoman10.jpg

  16. Already 5 days since the end of the contest. Here is my post mortem. I liked my week in general. I improved my knowledge on monogame while improving my small personal game engine.

    Things that went weel
    - The creation of the story was very good. For those who wonder, there are 8 levels of planned in my game. My initial goal was to finish the tutorial and level 1.
    - Finding music has been a breeze. I had already discovered the artist on Newsground in the past.
    - The programming in general has been well. I did not have any major problems.

    Things that went bad
    - I did not have time to find all the SFXs I wanted.
    - I've lost a lot of time trying to find a good futuristic tileset and that's probably why I could not create Level 1.

    To conclude, a big thank you to slicer4ever for organizing this competition. Also, another big thank you, to those who tested my game and who gave me their comments. I will use it to continue my game. I give myself some days of rest but it's certain that I will work on it again. Those who want to follow me will be able to do it here on my gamedev blog or via twitter: https://twitter.com/sjs_studio

    See ya

  17. It's been five days since the end of the competition and I've thought about how things went and what kind of mistakes I made. So I want to talk about those things for a minute.

    Let's start with the mistakes and bugs first.

    During the introduction sequence of the game a text box pops up which eventually tells the player that the controls are the arrow keys and the X, C and V keys. Problem is, to get to that text box the player would've needed to press either the V or the C button. This is just a little oversight caused by me adding this text pretty late into the game when other things were on my mind.

    Also some players didn't realize that they had to go to the northern area first. Although there is a mushroom before the cliffs area that tells you that you need to go north first I originally planned for this path to be blocked at first. That way the player couldn't enter that area under-prepared. Unfortunately I didn't have enough time to implement such a thing.

    Another thing I noticed is that the random number generator can really screw the player over. During the UFO fight the UFO is supposed to resurrect the other aliens so that the player can create shockwaves again to damage the UFO. However sometimes this resurrection wouldn't occur for a long time, causing the player to burn through their supply of food items while unable to do any damage. The stupid thing is, I did write a RNG a while ago to deal with this problem. I just plainly forgot about it.

    Lastly there was a small graphical glitch on the Intel HD 4600. Apparently it doesn't support a 32 bits depth buffer so some trees appeared in the wrong order.

    And on to the things that went well.

    I started off with a pixel-art pack that ended up saving me a lot of time. Although I did ended up needing to draw some extra tiles it definitely helped.

    Also the original art I made, especially the sprites in the battle, did end up looking pretty okay. Although I will admit that that for the last two enemies, the cube and the recon droid, I intentionally choose easy shapes so I could get them done quickly. It was also necessary at that point because I made them on the last day.

    Using Python generators for animations proved to greatly simplify my code. Especially regarding the battle code, where generators are used for pretty much everything that happens over time: the narration, damage flash, text box shaking, fading in/out, just waiting, etc. Although it's hard to say for certain I think that writing code in this way prevented lots of bugs and allowed me to quickly write sequential animations in a single function that would otherwise need a whole lot of state-management.

    Lastly I'm glad that I didn't run into any major problems with my engine snowy. The only things I added where some convenience functions to existing classes. So no major technical problems like needing to implement a minimal sound mixer like I needed to do two years ago. Also investing some time to be able to load Tiled maps proved to be worth it. Tiled has greatly improved in the last couple of versions, especially the ability to define your own types is an important one for most games.

    Well I think that's about it. If you have any questions let me know in the comments.

  18. Leveraging social media doesn’t mean reinventing the wheel, instead, it’s yet a powerful tool in making the businesses profitable with improved leads and conversion. The sales person is often found scrolling the social media platforms and stalking the LinkedIn groups to achieve the ultimate goal that’s getting the product or services to the right audience.

    Social channels open up the myriad of the options, aids in increasing customer outreach and contributes to the organization’s growth with improved sales.

     The-Social-Media-Playbook-For-App-Develo

    According to a research, “Weaving social media DNA into the sales process increases the sales outcome by 23% as opposed to traditional sales.”

    It implies mastering social creates great opportunities on which businesses can capitalize, and grow by leaps and bounds. Let’s shed some light on a few reasons that illustrate why social media has become the next big thing for sales:

    1)      Find your target audience

    Social media is the best place where the people of different demographics, region, and background can be easily identified. The prospect intelligence aids in profiling, which eases targeting the audience.

    Sales representatives can not just find out the customer base, while they can also garner more information about them, which gives a leg up in bringing quality leads.

    2)      Target them like never before

    Billions of users are using various social platforms, and there finding the right audience is a hard nut to crack for the salespeople. With the advancement of the technology, the targeting options for social media have also evolved.

    For instance: Facebook allows the sales rep to segment the target audience based on geography, gender, age, location, and interest so that the prospects to target get zero down to a few hundred. The paid advertising is also run to gain potential leads.

    3)      Nurture the relationship with them

    The prospects are easily accessible on social channels, which offers a golden opportunity for the sales reps by opening a line of communication between them and prospects. The interaction with the audience is an ideal tool that not only creates a relationship with the customers, while strengthening the bond with them.

    The interaction can be held on any topic of their interest or current issues. Additionally, feedback from the customer and answering the existing customers’ questions about their offerings make the relationship better.

    Don’t consider social to just reach the audience, but leverage it to engage the audience.

    4)      Increase your reach with real-time marketing

    When you reached the right audience and crafted a strong bond with them, it’s necessary to keep up with the audience and changing trends.

    With social media, the prospects can be approached instantly, and when the relevant post is shared in a few minutes of the latest happening, the brand gains the public recognition. The real-time marketing increases the brand awareness which in turn boosts sales.

    5)      Uplift the lead generation

    The posts shared on social platforms become a medium to interact with the existing and new prospects. The reaction of the prospects not only helps salespeople in building a following and enhancing access to the new customers, while increase website visit, click through rates and pretty more.

    The reaction of the audience upsurge the traffic to the website and consequently social media becomes a lead generating machine.  

    6)      Bring more leads down the sales funnel

    The lead conversion is the ultimate goal of every sales rep where social media help them a ton. The social channels humanize the brand by interacting with the audience the way they like. The humanization builds the credibility and improves the trust in the brand, which in turn fuel up the conversion rate.

    The studies have shown that lead conversion ratio through social media marketing is comparatively higher than outbound marketing.

    Besides, social media provides great customer insights which make leads qualification easier and the critical information about potential leads enable the sales rep to craft their sales pitch accordingly that accelerates the conversion.

    Takeaway

    The Social Media Examiner study states that more than half of marketers who've been using social media have observed improvement in the sales.

    It signals social media is a key to grow the sales. It is the best platform to maximize the access to the potential customers and encourage them to buy services or products. With Social Media Mobile App development or social media page creation, the sales representatives can better drive the customers to the website and generate sales with increased conversions.

    Getting social is a next-Gen trend, which must be put into the sales equation.

    • 1
      entry
    • 1
      comment
    • 89
      views

    Recent Entries

    Hello everyone,
         we have been developing this game for a while and here are our old dev logs to catch you up from the beginning to current.
     



    Now here's our brand new steam page...

    http://store.steampowered.com/app/689470/Chromasia/

     

     

    Thank you everyone, for looking at out game.

     

     

  19. So WOA V has come and gone. My submission was supplied just barely under the wire, flaws and all. Over all, I'm fairly happy with my submission and I don't really want to point out all the assorted negative things to the judges that I see when I look at it but those are the things that I had hoped to find and learn from by entering.

    Thanks to everyone for making this jam possible. To our hosts at GD.net for providing the venue, to Slicer for setting up and running the show, to the judges, and to the participants. This all is a very different experience than just coding whatever I want at my own pace with no worries about bringing assorted features together to serve a purpose.

    Things that went well:

    • I was able to submit something.
    • I'm generally happy with my submission.
    • I had fun.
    • While there was a need to quickly hack together some bits of code to make stuff work, the majority of the code changes needed to the base engine felt much less like a hack and more like a natural extension of the code than last year's attempt. I consider this a really nice personal success.
    • Avoided energy drinks on the late night development sessions and thus no post project migraines.
    • Level editing stuff that I did put together worked ok. You can actually still add in some stuff if you right click (should've turned that off for release, I suppose).
    • Spoiler

      (quick editor instructions if anyone is interested)

      • If you press F6 you get a bit of debugging info including which actor you can place.
      • Press F9 and F10 to actor selections. Right click to place actor.
      • Towers and Wizards are the only actors that really have properly defined behavior.
      • Pressing Ctrl-O saves actor positions to binary file.
      • Level terrain file saved as text can be edited.
      • Level list file allows you to enter the terrain file, actor position file, and size of the level.
      • Level number should then be selectable from the main menu.
         

       

    Things that just sort of went:

    • I spent more time this year on a main menu and on having a few levels to play. And with having a few levels to play I figured it'd be a good idea to allow for which one the player would like to start from and to put a small break in between levels. This all took up one of the late night dev sessions I had available to me. I wonder a little how things might've turned out if I had left these details and instead focused on other things.


    Things to learn from or think about:

    • I struggled with figuring out what to do with the theme more than I had hoped. I ended up just with starting to work on small bits and hoped that an idea would come together, which it actually did in the end.
    • Level creation/editing is something that I found to be like smacking into a brick wall. This is likely to be my focus for the next several months, particularly since I'm at the stage of needing to look in this area for another personal project.
    • I had hoped to write more about my progress each day but I just didn't end up leaving enough time at the end of each dev session and was way too tired.
    • Could've planned time better.
    • (hiding some flaws from judges)
    • Spoiler
      • Didn't spend as much time on sound as I had thought I might.
      • Should've spent more time thinking about the game name and backstory. "Wovanosh" is basically inspired by "WOA V" with nosh at the end because I happened to be pretty hungry when I was trying to quickly think of a name.
      • A few components I had planned to add didn't make it in. I had intended on adding some alien soldiers you could "beam" to the surface to deal with the wizards on the ground by mutating them into more soldiers. The alien soldiers would be faced with human soldiers on the ground to defend the wizards and there were to be houses that the alien soldiers could convert to something the UFO would pick up to restore shields. In theory then, I could've added more wizards to shoot at the UFO and the player would have to plan the attack more carefully than just flying up and blasting at the castle.
      • I think the graphics ended up being way too simple. I had envisioned having more interesting looking human sprites but I got too hung up with proportions and perspective early on and didn't get back to revising the sprites at all.
      • Animations were less than I intended. The wizards were at least supposed to bounce a bit as they moved around. "Explosions" didn't really look like I had hoped and could've been worked on some more.

       

       

    I tell myself that I'd like to do some finishing work on this when I have time to sort of bring it all closer to the point that I had envisioned. But I do have another personal project that I'd like to get back to. I'm not sure yet on what would be the best way to take things forward from this project into the other one. But eventually, forward it will go.

     

     

    • 1
      entry
    • 0
      comments
    • 71
      views

    Recent Entries

    THE GAME: 
     
    Project XSYS is an untitled indie game that features world map HEX crawling, turn based combat, and multi-character party RPG adventuring. 

    Features thus far:

    Hex Crawling

    World map hex crawling is a unique feature. It's up to the player to ensure his/her party is well prepared and provisioned for each journey. Like many 4X games,time controls allow the player to speed up, slow down, and pause the passage of time. As time passes, various events will occur such as combat encounters, interaction scenarios, inter-party personality conflicts, discoveries, etc.     

    The screenshot below is the most current view of the hex map. It is auto-generated by stitching smaller hand crafted Terrains together.   But, yes, it's  pure programmer art. :) 

    HexMapWithGrid.PNG

    Tactical Turn Based Combat
    The combat system was built to satisfy the itch of tactical turn based enthusiasts.  In addition, I've worked hard to ensure that the combat grid is truly 3D. This means that characters can climb, fly, crawl, and jump over and under obstacles. 

    The action point based combat system is designed around the concept that your character can try to do anything.  For example, if you want to fight with two weapons, trip, guard, parry, or disarm you don't need a special skill to try it. There are no talent trees just proficiency levels. 

    adam2.gif

     

    Character Party 
    The character creation system is extensive and is a multi-step process. Steps include selecting Class, Race, Ability Scores, Interaction Skills, Combat Skills, Exploration Skills, Spells, Appearance, Personality, Backgrounds, etc.  At the moment, the system allows you to create up to six characters. 

    At the moment, the graphics are nothing more than prototypes / placeholders. I don't plan on hiring or partnering with an artist until next year. One of the first things I will have commissioned is a base character model and various pieces of equipment for each race.  

    For the moment, Adam and a pair of Mixamo thugs will do just nicely. 

    Create New Character.PNG

     

    Development

    Thus far, I've spent many long nights coding and refractoring the games numerous subsystems (true 3d grid pathfinding, sqlite database, event message system, animations, personality system, combat mechanics, inventory, character sheets, items, vendors, character creation, terrain based hex map, encounter system, survival mechanics, campaign events, etc).  The game has truly become a labor of love and I'm quite happy with the code thus far, but of course it's not perfect... yet.

    My current focus is developing the content pipeline and assessing what Unity assets (if any) I will be integrating.  In fact, I can't wait to start adding more creative elements to my game. The game is now moving from being a game framework to an actual game, but there are still many detailed decisions that have not been made. 

    Anyway, I hope you enjoy watching my game take shape.  I really need all the feedback I can get as I have much to learn. 

     

     

  20. Play it! | View on GitHub

    Now that I am slightly recovered after the Week of Awesome, I want to share my thoughts about what went well and what I have learned after this experience. A quite important part of my project was to experiment with functional reactive programming in games, and I promised to share some reflections about it afterwards. I'm going to talk about that in the second part of the post-mortem, which I expect to publish early next week.

    What was great

    Community support and feedback

    The absolutely best thing about participating in this contest was all the encouragement and feedback I got from the community. Big thanks to everybody who took the time to play my game, read my blog entries, post feedback and encouraging comments, and even find and report bugs!

    My game would have been a lot worse without that feedback. Many people suggested features I hadn't thought of or I had dismissed earlier because I didn't think they were that important. The ability to move to the left and better control of the landing position when jumping are clear examples of this. It was also really motivating to see every day people playing the game and posting new feedback.

    Browser game

    I think that going down the browser route was a good idea after all. The cool thing about the browser is that everybody has one. Distributing your game is so easy: no installation or configuration required, and everybody can play it regardless of operative system or installed runtimes. I could upload the game to my VPS since day one, update it often, and have people trying it out, which was great and I think that it made a difference in the amount of feedback I received.

    What I would do differently

    Have a level editor

    The game I delivered is inexcusably short. Once I had the basic mechanics going, it would have been really easy to add more and longer levels. The only reason holding me back was that I didn't have any visual tool to create and edit them. I created the only level in the game by manually editing a JSON file. As you can imagine, that was a tedious job and I decided to invest the little time I had in solving other stuff. Not having a level editor also prevented me from iterating the level and making sure it was fun and challenging enough.

    Next time, I will make sure to have a visual tool to create levels and maps at hand before the contest starts.

    Test the delivery format early

    When I set off to make a browser game, I set up a local development web server to serve the file and recompile and reload the changes quickly. I knew that I would end up delivering an index.html file with a .js bundle and that the judges would load that file from the file system instead of a web server. That should make no difference, right? Wrong! Turns out that Chrome, among other browsers, doesn't allow AJAX requests when loading a file directly from the file system. And guess how the rendering library I used loads spritesheets? Exactly: AJAX calls.

    I should have tested running the game from the file system since day one. Instead, I only tried it when I was about to upload the final submission. If I had known about the AJAX issue earlier, I could have written my own resource loader, or bundled the game with electron. Instead, by the time I noticed the issue, I didn't have the time nor the energy to do something about it.

    Even though the game can still be run locally with Firefox, I provided a python script to run it on a local web server, and some judges didn't mind playing it on my VPS, my developer soul still hurts because I wasn't able to deliver software that runs with a single click.

    Conclusion

    This community is awesome. I got far more interest and feedback than I expected. I liked the experience of making a browser game, even though at the end it wasn't as smooth as I thought, and I definitely need to get a level/map editor next time.

    If you are interested in reading my musings about using functional reactive style in games, stay tuned  for the second part of the post-mortem.

  21. Hi. To be honest, but the game design for me has always been something unique and interesting. My path of game development first started with programming. After I began to draw, in order to be universal, but later, I discovered the game design and that was for me, on a pedestal favorite direction. Today I would like to touch on the types of players, why they play the games and pleasures of games.



    74806065.jpg

     

    Be brief and clear. In our nature there are 4 types of players: explorers, killers, sociable and those who like committed to something. 

    Crooks. This type of players are focused more on the quick passing game. It does not matter the study and details in the game. 
    Killer. These guys love to destroy everything and kill everybody. Just put them in the tank, tell them where it is necessary to blow - trust me, they will not leave anything alive there.
    Sociable. They love socializing, but most of all they love online games where can someone make friends, work in team and to tell you the recipe for a delicious mother's cookies. 
    Researchers. How do you think, what you like to do this group of players? I also think that they are exploring every path in the game where you can collect all achievements. 

    Every time you create a game, ask yourself the question: "what kind of player I do my game? Is it possible to combine these types of players in my game, changed some part of it?"

     

    71218802.jpg

     

    Incidentally, with regard to online games. Why do you think people play online games? First, they like competition, will compete to get to the top and gain respect. Secondly, people like to work in a team. Personally I play team games and more hours spent in team modes rather than in single. I love this mode. Thirdly, people play online games in order to meet and chat with friends, spend time with them online and meeting them to have constant, friendly contact.

    As you know, men play more games than girls. Their main game is the first 20 years. Action and aesthetics - their element. From 20 to 30 years, men are already playing something more calm and tactical, where you do not need a lot of push on the joystick, but need to think. And about men from 30-35 years to play in something calm, for example in genres "I'm search" and "Farm".

    But women, as a rule, begin actively playing with for 30 years. More women in the world, but I don't like the game. But often after 30 years of playing farm frenzy.

     

    86992797.jpg

     

     

    Identify the main fun of the players: 

    Fantasy. We love to feel part of another world, which could be anyone. 
    Plot. Sometimes the plot can cause a pleasant sense of his sudden change of events, a dramatic denouement and linearity. 
    Partnership. Teamwork is enjoyable. 
    Discovery. The opening of the new - is the main game fun. 
    Expression. Everyone loves to brag about. 
    Obedience. Cool when you can control others.
    Feeling. When you realize that step the expected event, then the waiting becomes a pleasure. 
    The gloating. When you killed your enemy, it's nice. 
    Gifts. We love to receive gifts? 
    Humor. No comment. 
    Choice. To go left or right? I have a choice?
    Fulfilled goal. We love to reach goals and to feel pride because of this.
    Surprise. We love to be surprised. The Japanese are masters at it. 
    Fear. We love to be frightened and to feel the shaking. This is an interesting kind of fun that we both and hate. 
    A miracle. When we are strongly of something was surprised and experienced a wild delight from something. 
    A tough win. That moment, when initially there was little chance to win, but you win.

     

    So when making a game, think of the fun highlights of your game and how much to add. My name is Flatingo and I love to make games. If you also like to make games, welcome to my YouTube channel. Good luck in your projects.

  22. The biggest struggle for me is still money. It's getting harder. Game sales have pretty much stopped completely, but game development continues forward. I'm starting to think I'm a bit crazy.
    The rational side says, "Why are you still working on building a product which literally gets zero sales? It's time to move onto something that actually makes money."
    But the emotional side says, "But I believe!!!" (bursts out in song) and then it tries to rationalize it by saying that "but... but... I just need more compelling content! Then, sales will pick up naturally!"

    Reality check time: I have proven through analytics that adding content patches through steam updates does not in fact, increase sales or even viewer traffic to my store page. I could release product updates every week and that would not affect my sales numbers. The only possible way a product update would affect my sales numbers is if the product becomes good enough that people who own the product tell their friends about it. It's not there yet, so that's why I keep working on it and barely scraping by. Eventually though, I'm going to have to shift gears from product development towards product marketing and advertising.

    Barely scraping by seems to be the name of the game for 95% of everyone in the VR industry right now. There have been some interesting recent developments lately. Owlchemy Labs, the creators of the smash hit "Job Simulator" and "Rick and Morty VR" have recently been bought out by Google. Google now completely owns one of the best VR content creators in the industry. The founders probably got hella rich and don't have to worry about anything but creating cool VR content now. Lucky them. One of my friends works for a local VR startup as their only programmer, and things are getting so tight that he had to get a second retail job in order to get by. The startup is too broke to pay him and their sales have dwindled as well (everyone should expect the long tail and budget for it!). The other huge development lately has been that AltspaceVR has shut down. They were a 35 person VR company which created a social hangout within VR, similar to Second Life with VoIP. They were funded entirely with venture capital money. I can't imagine the stress and heartbreak that brings to the team. But... 35 full time employees. Damn... and you have to make payroll every two weeks for 35 people? And you have a product and business model which doesn't involve bringing in money from users? Your days were numbered... I'm fascinated by why various companies fail and succeed. Obviously, creating and having a product is not the entire picture. It's all about making money to sustain your business operations.

    My business operating expenses are extremely low. I pay $400 a month for my rented office space, $8.91 per day for burritos, $2.50 for a one way bus ticket, and $2.48 for a cup of black coffee. I owe people money, so I have to pay them off before I ever pay myself. Realistically, my chances of making a lot of money in the near future are near zero without funding and support. But hey, my operating costs are so low that I can almost do this indefinitely. My company will survive. It'll be small, but it will survive and continue forward, scratching out a teeny bit of money.

    Speaking of money, the most profitable area right now is doing VR contract work. I've been working on a couple different side projects for various local companies, creating VR experiences around their products and services. I'm about to start working on an interactive VR film proof of concept, which plays sort of like a "choose your own adventure" 360 film in VR. It's going to be an interesting twist on interactive cinema. The broader goal for me is to learn as much as I can and broaden the scope of my VR designer skills. I've become a part of the production cycle for creating VR media and I'm bridging the gap between gaming and cinema within VR. Here is a sample of a VR app I made for Dell in May:

    I was thinking critically about this on my bus ride to work this morning and I realized something important: Is watching a cinematic in 360 stereo really VR? Why/why not? What's missing? The viewer. Who are you when you're viewing these 360 videos in VR? Okay, what kind of defining rule can we create which differentiates VR from fake VR? My tentative rule is that the viewer has to be a character within the experience for it to count as VR. The important thing here is to create a sense of "agency" and identity with the viewer. So, the cardinal sin for a VR designer is to take away agency from the player (such as controlling their head or playing a cinematic). The follow up question: "Does it really matter?" Yes, it kind of does matter because everyone is doing it wrong and calling their creation "VR" when its not really VR. It's really challenging to start defining what this new medium is and is not though. I think the guiding principle I use is that "Virtual reality should be indistinguishable from reality and the human experience." People can turn their heads and look down at their body, move their hands, feel solid objects, etc. The closer your VR gets to reality, the more you can confidently call it VR.

    My challenge will be to convince companies to see it my way and spend the extra money to move from a stereo experience to a VR experience. I don't know if that's a battle worth fighting. The challenge with 360 video is that the video itself doesn't lend itself to user agency. The camera is placed on a tripod and people act out a scene all around the camera. So, the person experiencing the 360 video can't move around in the scene as if they were a part of it. The solution might be to ditch the 360 camera completely and go with motion capture and animated characters within a 3D environment, but that will mean much higher production costs and longer timelines. At the end of the day, what does a client care about? Accomplishing their objective, whatever that may be. Where does the line exist between exerting my subject matter expertise and satisfying the customers objectives?

    Anyways, I am slowly realizing that I'm no longer just an indie VR game company, I'm becoming a VR media company.

    I wasted the entire last week watching "The Internationals" Dota2 tournament. The game itself is somewhat interesting, but more interesting is the growing rise of E-Sports. I think it's going to disrupt the definition sports. Every year, the Dota2 championship match grows in popularity and the prize pool grows by millions. I think last year the total prize pool was $16 million. This year, it was $24 million. All of the money comes from the Dota2 gaming community. The final championship match had 4,700,000 viewers around the world watching it unfold. I watched it on Twitch.tv, and the channel had about 380,000 live viewers. The sports stadium down the street supports about 68,000 people. So, just on Twitch, we had about five full stadiums worth of people watching the event online. Think about all of this for a moment: 4.7 million people watching ten people play a video game against each other for $24 million. If we project the trend out, over time we can predict that next year the prize pool will be even larger and the viewership will match proportionately. On a broader trend, I think E-sports will eventually eclipse conventional sports. Football is currently the most watched sport in America, but maybe in 30-40 years, E-sports championships will be the most watched sporting events? Remember that revolutions don't happen by people giving up their favorite sports/ideas, but by a younger generation gradually replacing an older generation. The younger generation is enamored with E-sports. Football? What's that? Obviously, the take away is that competitive E-Sports are a great way to build a community and player base around your product.

    There was one moment in the Dota2 championship match that really, really blew my mind. A pair of OpenAI researchers had created a bot which learned to play Dota2. Traditionally, bots are just hard coded expert systems with their behaviors and rule sets defined by the programmer. Traditional bots create the illusion of intelligence, but they start to break down when you introduce information it wasn't scripted to handle. The Dota2 bot was a little different. The researchers didn't say it explicitly, but the AI was an artificial neural network (ANN) with deep reinforcement learning. The AI brain as a generalized intelligence, so the researchers didn't tell it anything about how to play Dota2. They had the AI play against itself thousands and thousands of times over the course of two weeks. This was its training regimen. Gradually (and as expected), the AI learned how to play Dota2. But, it got scary good at it. It had mastered all of the nuances and game play techniques the pros use, it had learned how to time animations, block creeps, etc. It played perfect Dota, with perfect response times. It was so good that it beat every professional Dota2 player. The worlds best human players, all defeated by an AI bot which taught itself how to play Dota2. Absolutely amazing!

    For the last three weeks, I have been refactoring my AI and game systems and gradually moving towards an artificial neural network type of AI. I'm still creating hard coded expert systems, but I'm gradually changing my back end systems to make everything into an interaction or used ability. These will eventually become the output nodes for my ANN graph. The dream is to tweak a few brain parameters and then just have the various ANN AI's play with each other for 2 weeks, become experts, watch how my brain tweaks changed their behavior patterns, and change and adapt their brains until they roughly exhibit the behaviors I want them to have. AI programming won't be about creating expert systems, but about creating brains and tweaking reinforcement learning rewards to get distinct behaviors. The extra cool part is that the AI can continue to learn even after it has been deployed to the world. The vision is that the initial training cycle is to just get the AI to be competent enough to behave intelligently and convincingly. After deployment to the world, the training continues. However, now instead of the AI training on a single computer against a copy of itself, it is now training on hundreds of computers with human players in VR. Every day or so, the AI will upload whatever it learned to a central online database and download what other versions of AI learned from playing with other players. In a way, it turns into an evolutionary algorithm which gradually gets more and more intelligent over time. The hard part will be managing version control and testing for fitness.

    The other wrinkle in this plan is that the AI could get too smart. Not in a "take over the world" sort of way, but as in it's too good at playing the game and players don't enjoy playing anymore because they lose 100% of the time. I suppose a part of the AI development could use the player frequency as an input feed and the AI is rewarded if the player continues playing the game. In that sense, a big focus of the AI is to make sure the players are entertained, and this win/loss threshold can be adaptive per player. Maybe the AI ends up developing a profile on each player and knows what it takes to maximize that players enjoyment? Maybe some AI's will play cooperatively with particular players, and as adversaries with other players? I'm getting slightly into science fiction here.

    I'll never forget the experience I had of having a seemingly intelligent crow on my arm in VR. It was absolutely magical. Now, if I gave it the ability to think intelligently and speak its own mind, the magic would become real. What if the pet crow AI was the sum of all AI's from all interactions with players and the world, and you could get it to say what its thinking, and it is rewarded (via reinforcement learning) when it says something which keeps the player safe? What if the AI learns that there is danger in the dark cave and most players who venture down into the cave end up dying, so the AI learns to say something really scary which keeps the player from going down into the cave? The AI has then learned exactly what to say in order to frighten us, through thousands of sessions of trial and error.

    Anyways, I think we're on the verge of an AI revolution and I want to be a part of bringing that AI into VR. It gets interesting when you consider that a sandbox type of game would become very different on every play through when you have emergent AI systems interacting as a part of that world. 

    I've been seriously contemplating the idea of writing a science fiction novel based on an AI system which gains sentience and begins the AI singularity event. I'm thinking the book writing project would be a side project. I'd spend one day a week writing it. My sister is interested in being a co-author, so we need to spend some time hashing out details and measuring the feasibility of our ambitions. I've never written a novel before, so there is a lot of risk due to inexperience. But, who cares? Better to try and fail than to never have tried at all out of a fear of failure. That's how you get good at anything: try, fail, improve, try again, repeat. Eventually, you'll break out of the failure loop and enter into the success loop.