Jump to content
  • Advertisement
  • You can syndicate your blog to the GameDev.net community.
    Learn how here.


The Terrain is improved...

While I still have a LONG way to go, the Terrain is looking FAR better than it was.  With the new perlin noise to help at lower altitutes finally working correctly, and the newer shader pipeline to allow multiple texture overlays, it looks FAR better than before.  Lots of bugs in it to work out, as always.  However, this is good progress.  Original post blogged on Rank: Warmaster Dev Blog.   View the full article  



This snake can move

Here's our snake, zipping around the field waiting for an apple to appear. 🐍 Keeping track of the snake's body as it moves and turns was the trickier part of this, so I think I'm over the hump as far as the basic game goes.  Now I just need to add apples, and keeping track of the snake length on the screen.  Then I can get to adding some of the nicer features like music, sound effects, and game options.  I feel like I have a decent shot at getting the basic game done before the weekend is out. 😀 Some of the things I wanted to take note of: I feel like it's sometimes not responding to all key press events when the player presses two keys in quick succession.  I think the cause is that I'm gathering all events in one "update" call, and going with only the last one.  If the player presses two keys quickly enough, it only uses the last one to determine the input for the next frame.  I'm going to want to look into creating a queue of inputs, where each "update" call uses up the next input from the queue. Right now, the grass texture is part of the same tile-set texture as all the other game elements.  I think this should be split out, so that I can render all of the grass in a single call; rather than width * height calls with the same sprite (there are 1250 total tiles on the playing field).  It's not slowing the game down anywhere near the 60fps range, but I do prefer to be more efficient than less efficient...  I'll be curious to see if this improves rendering performance at all. For drawing the snake, I created the SFML "sf::Sprite" objects on-the-fly.  This doesn't appear to be a performance issue.   Very much looking forward to getting the basic game done so that I can start working on "phase 2"! 🐍



Two IGN interviews (and footage) of The Eternal Cylinder at Gamescom with Carlos Bordeu

Here are two IGN interviews (and footage) of The Eternal Cylinder at Gamescom with Carlos Bordeu: 1. Interview on IGN.com. If the video doesn't play, turn off ad block or watch it on YouTube at 1:21:16     2. At 1:51:37   For more information about The Eternal Cylinder, visit the official website, where you can also sign up to join the upcoming Beta. --- Follow ACE Team: ACE Team website Steam group Discord Reddit Twitter Facebook "ACE Team fans" Facebook page YouTube Twitch Player me Tumblr Instagram Minds Gab ВКонтакте

ACE Team

ACE Team

I never claimed to be an artist!

I've worked out the initial artwork for my "Snake" clone, and it doesn't look at all how I imagine it in my head. 🤣  But that's okay for now -- it puts me in a place where I can get to work coding the game play, and seeing how it looks on the screen. I drew the snake body segments in Photoshop while looking at a picture of a garter snake (we have plenty of those in the country-side here in Manitoba).  The "shrub" barrier is just green with a grain filter and emboss border.  The apple is hand-drawn.  The grass comes from a texture website. A good portion of my day yesterday was just going around looking at various sources for music, fonts, and textures.  These are some of my go-to's: For "The Garden of Eating", I'll be using several pieces of music from the "African" genre over on incompetech.com.  Kevin MacLeod has a ton of great music for games, Youtube content, etc. There are lots of great free textures over at goodtextures.com.  Their "Seamless Textures" category is particularly good for tiling. And lots of great free fonts over at fontsquirrel.com.  I used a font named "Flavors" for the title screen, and will probably be using "Source Sans Pro" for the user interface. These three sites in particular avoid loading your browser up with popups and other obscene behaviour that makes you want to throw your computer out the window. 😝 So far, the actual game is just a splash screen with the "At the Shore" music playing.  Time to get to work on the actual game play!




Interview with a Quantum Mechanics Researcher who is Also a #GameDev and is looking for Beta Testers!

Your name: Kristofer Björnson Twitter Handle/ Other Social Media: @SecondTec on twitter and SecondTech on Facebook One interesting and random fact about you that people would not necessarily guess: I once used a Rasperry PI, a battery pack, a webcam, and a little bit of C++/OpenCV programming to build a timelapse camera that I called The Ent. I used it to take time-lapses of, among other things, a plant (https://www.youtube.com/watch?v=LeVlWs3ziBY), a snail (https://www.youtube.com/watch?v=BjzkKCDfxec), and a failed Cavendish experiment (https://www.youtube.com/watch?v=5H1EgVzFMDo). What country you live/work in: Sweden/Denmark The video game company producing the project: Second Tech The name of the project: Polarity Puzzles Estimated release date: Autumn 2019 link to website/blog/steam page/Youtube/other: Website – http://second-tech.com/wordpress/index.php/polarity-puzzles/
Patreon – https://www.patreon.com/dafer45 How did you get into making video games? I played a lot of video games when I was young. As I grew older, this was successively replaced by an interest in programming. In high school, I wrote my first game, which was a simple snake game for the terminal. I liked both physics and programming, and as I entered the university, I went for physics since I thought the programming would be easier to pick up from the internet. For the first two years, I did a fair amount of both. In particular, I had an interest in understanding programming from a perspective that was close to the hardware. I, therefore, followed a group of people online as they reverse-engineered the Nintendo DS. Once they succeeded to get custom code to run on the Nintendo DS, I took the opportunity to port my snake game so that it could run on the console. It was a very interesting experience to me at that time, since reading off input buttons and writing graphics to the screen was a matter of setting up pointers to the correct memory locations and reading and writing to those addresses. I also took a course in Java at the university in 2005, and this was just around the time that the first Java (J2ME) enabled mobile phones came out. As I got hold of my first such phone that Christmas, I immediately began working on Polarity Puzzles. I had an almost complete game already then. The engine, levels, etc. were all there. But it needed to be polished, and at that time it was not so clear how to get it distributed. Eventually, it proved too difficult to combine this with my physics studies etc., and the game was put aside for a long time. This past Christmas, I decided to finally port it to Unity and push it through. (The game was actually already ported once to Android in 2010 and released on the SlideMe market. But the port was quick and dirty and mainly a way to teach me android development. It was therefore not released on any of the main markets.) What is your background in? I am a researcher in condensed matter physics, specializing in superconductivity. I am also developing a C++ library intended to simplify setting up quantum mechanical calculations. Blurb about game: Magnetic monopoles have for the first time in history been discovered in a scientific experiment. Unfortunately, the particle accelerator used to create them exploded. As a consequence, the monopoles, as well as the quadrupole traps intended to store them, got scattered across the world. Your task is to navigate a remote-controlled robot to collect all the quadrupole traps and restore order to the natural laws. What inspired this game? One night late 2005 or early 2006, after having experimented with J2Me on my new phone, I had trouble falling asleep. A game I had played about a decade earlier on NES was on my mind. It is known as Salomon’s Key 2 in Europe and Fire ‘n Ice elsewhere. Somehow, in combination with the electromagnetism course I had just begun taking at the university, I suddenly imagined a similar kind of puzzle as those in Solomon’s Key 2. This is now level 2-13 in Polarity Puzzles. All that remained after this evening was to implement the game engine, create 74 more levels, make graphics, port it twice, … What makes it unique? The ability to switch the polarity of things creates unique gameplay where things can fall both upward and downward. This leads to interesting puzzles that sets it apart from other puzzle games out there. What will make it a success? The levels are short enough to be played in the queue, on the commute, etc. It also combines visually pleasing graphics with references to electromagnetic concepts and devices that attract those that are curious about science and technology. In short, it’s the game I would have liked to play when I was young. In fact, the game is partly meant to inspire younger players to get an interest in science and technology. Who do you think it will appeal to? A logically inclined audience that is interested in classic puzzle games with well-defined solutions. Number of people working on the project and skillsets: I have made most of the work myself. Some of the 2D graphics are done by my girlfriend, who has also provided plenty of useful feedback in general. A class-mate from junior high is working on the music. How are you handling art? I have made all the 3D graphics myself. Anna Sinelnikova has drawn the 2D images in the main menu (see more of her work at https://www.artstation.com/annasinelnikova). What tech/stack do you use? Unity, with Blender, Gimp, and Inkscape for graphics. git for version control and visual studio as IDE for C#. Are you full-time? If so how did you make the switch to working full-time in game development? No, I have a full-time job as a researcher. Is this your first game? If not how many and what other sorts of projects have you worked on? This is my first game other than games such as snake etc. that were meant as learning experiences. What’s been the hardest thing about making this game? When I began working on the game, I mainly saw it as a programming task. But successively I realized that I had to think about graphics, level design, and so many other things that I had no previous experience with. I’m still not really sure how I managed to do all these other tasks. But somehow it was possible to learn to do all these things as they became necessary. However, not being proficient in any of these other areas certainly contributed to the long time between the initial idea and the release. I still realize that there are more things I need to learn, and right now I am reading up on how to do marketing. All the things I have learned are invaluable though, so creating a game has definitely been worth it even if it never had been released. Anything else you would like people to know about you or the game? The profit from the game is intended to provide seed funding for a quantum technology project. In parallel with my research, I am working on a library for quantum mechanical simulations (https://github.com/dafer45/TBTK). If the project is successful enough, I hope to be able to use the money to fund further development. If interested in Beta Testing please email kristofer.bjornson@second-tech.com The post Interview with a Quantum Mechanics Researcher who is Also a #GameDev and is looking for Beta Testers! appeared first on Gilded Octopus.
View the full article

Art coming your way

Hello! I'm Kat, an artist working on the game and will be sharing with you the mining facility. First up are some concepts. For the mining facility I wanted to create a structure that could  hold a lot of material and mine at the same time. After narrowing the choices down and combining liked features, the design you see now was decided. Blender was used to create the low poly model and texturing done with 3dcoat.  Looks like this structure, with it's steel detail and plating, is going to give enemy ships a hard time taking it out.  Full story »Original post blogged on Rank: Warmaster Dev Blog.
View the full article




This Week in GameGuru - 08/21/2019

This article represents solely the opinion of the author and does not reflect the opinions or views of r The Game Creators, it's employees, or subordinates.  It likewise does not reflect the views or opinions of www.tgcstore.net and it's staff.  The author receives no compensation for this work and it is done solely as a service for the GameGuru community at large.

Apologies for the late update.  Life has been ... crazy, to say the least.

For those who attempted to purchase copies of the book and use the promo code from last week, my publisher advised you must use this site to purchase it for the code to work:


More details about the book and secondary materials will be found at the bottom of this posting so read it all the way through!

GameGuru News
Teabone has sent over his list of fixes to Lee and we're waiting for inclusion in the main release: https://forum.game-guru.com/thread/220853#msg2619317

Github has seen more work on convex hulls by Preben as well as a major merge into 'PO60' by Lee from the master.

This commit includes a lot of interesting updates you can find here:


So I'd say expect another sizeable update at this rate in the next month or so.  Don't hold me to it though as I haven't heard anything yea or nay - it's purely speculative.

What's Good in The Store
TeaBone put together some great clutter objects for the store in large quantity:

The quality is fairly good as usual so check out his store here: https://www.tgcstore.net/artist/45855

SounDesign also has a pack of clutter objects in the store that could see some use depending on what you are looking for in your projects: https://www.tgcstore.net/pack/11146

Free Stuff
Unfortunately nothing new in the free sector.  Better luck next week!

Third Party Tools and Tutorials.

https://forum.game-guru.com/board/2 also has a ton of great info this week, lots of details on many Lua related functions for the coders among us.

Random Acts of Creativity (WIPs)
This week bod made one of his cars driveable: https://youtu.be/FEiXEwu09Rc

Schneeky put together a goofy spaceship video: https://www.youtube.com/watch?v=8ta78EP6aNE

KitaKazi's project 'Screos' has some new screenshots.  He says his first two levels are complete:

More info here - https://forum.game-guru.com/thread/220691?page=1#msg2619169

Scienceboy's epic "Twin Worlds" has a new tantalizing screenshot with a beholder in it.  I'm still curious if he's using a heightmapping shader or not!

DJPulson's survival game has a screenshot as well as some updates here: https://forum.game-guru.com/thread/220691?page=1#msg2619169

DenZelik came back after nearly a year to talk about his game 'Neir'  and post some screenshots which showed some excellent control of the Lua system for a fantasy-style game.

I'm particularly impressed by the above inventory picture, which looks exceptionally well crafted.

Relative newcomer Trollbae posted this beautiful work using the EBE on discord recently.  It uses several EBE boxes close together to create an excellent indoor environment.    

Honkeyboy's project 'A tall tale' has some excellent updates with new models he's been building.

A project called Dietara popped up with lots of in-progress shots as well as some interesting details on a rather detailed post.

It's nice to see someone trying their hand with pushing the built in lighting system.

In My Own Works
So even though the book is out I've been very busy.  I've gotten numerous questions and the book has created a lot of interest though my publishers have been admittedly not moving as fast as I'd like on certain elements.

I'm fine-tuning one of my artists work before releasing it.  It will be reasonably priced on the store but for purchasers of the book you will receive it for free - simply send me an email, text, discord message is probably best honestly, or private message on the forums.  As soon as I see it and we can verify your purchase I'll send you voucher codes for the products so you can receive them for free.

There are also a number of 'included' free materials such as maps and the like for the book that the publisher hasn't posted on the site yet (despite me having submitted them over a week ago).  As soon as that is available I'll make sure that info is clearly listed and known.


Thanks again to everyone for your well wishes, support, and purchases!

View the full article

DOOM: Challenge accepted!

I have been deciding to participate in Challenges for quite long time, mainly because I personally wanted to. And when DOOM was voted in, I decided I had to participate. Of course I have to start somewhere (I made a road map, which is something I'm trying to hold to - and throughout the challenge I'm going to switch between working on art and working on source code). So let's consider this as first post, and let's see what I will manage to finish in the end. A little sneak peek into how the project is looking at current stage. Some of you may have recognized that this is Sponza Atrium model (it is not easy to recognize it though - as the image is actually showing barycentric coordinates in red/green channel and distance traveled along the ray in blue) which I'm using for testing, as I'm working on using a custom GPU real time ray tracer as renderer (it is DOOM after all, which originally used a ray caster - so for me, it was natural to use a ray tracer).

Vilem Otte

Vilem Otte


My To-Do List

I was feeling a bit overwhelmed this last weekend, which is different. I knew that just getting to it would solve that feeling. And sure enough, here I am! So the player can now run and sprint via double and triple tap on the arrow keys. The spawner spawns the mobs in appropriate tiles, at mob_file set times AND the mobs move randomly, and if they are predators, will attack within eyesight of the player. Right now, collision is an attack on the player, where the player can attack a square in front of him. The intention here was to allow other weapons and what not to affect the reach of the players attack. So what next? A Notification System – so a way to deliver output to the user so they know what is going on as far as combat Jump – got to set the player to be able to jump, which will be great for avoiding fissures, and maybe bad guys, and maybe a different attack? Set Jakes Mobs – Jake has designed a few mobs, that need to be set and replacing the snakes, which was my idea just for testing. Items – mainly jakes designed items. Set Mobs to drop – they already have the vars in the mob_file, just need to implement it. Set Mob to avoid player – which is a feature I thought would make sense for huntable mobs that don’t really want to die. Like a deer. Set Mobs to hunt other mobs – this is a feature I thought would be nice to add a level of strategy for the player, may or may not be used. Set mobs to forage – which is something I thought would be cool for huntables, like a deer attracted to apple trees. Disasters – yes, I am trying to avoid working on inventory…. Want to add lightning to thunderstorms that could strike trees and start a fire, or even the player for instant death. Flash flooding that can remove camps. Earthquakes that can open fissures in the ground and start volcanoes. And I thought fog would be a cool subtle weather thing that could happen that would close up some visibility for the player, and finally a tornado that can displace mobs and the player and destroy camps. Regenerator – for regrowing trees after they are cut, and replacing anything over time ( maybe apples or berries after they are harvested ) Inventory – we need to have drag and drop be a thing. The builds list should give the option to build or not, instead of building on click. Arm items, use items ( like a potion ).
View the full article




Getting Started with SFML

So far, things are looking just fine trying out SFML.  (Though I'm wondering why there isn't a tag for it here...) The Visual Studio setup tutorial over on their website strongly cautions that you need to match the download version to your version of Visual C++.  As of this moment, their latest download version is labeled "Visual C++ 15 (2017)".  So far, I have had no problem getting this to work with Visual Studio 2019.  I chose to use static linking, meaning I won't need to include the SFML DLL's in my release.  The only catch to this is with the audio module, which does require "openal32.dll" (one of SFML's dependencies on an external library). To allow the use of a regular "main" function (instead of "WinMain" or whatever Windows wants these days), there are two steps: You need "sfml-main.lib" (or "sfml-main-d.lib") as a linker input. To ensure that the console doesn't appear, change "SubSystem" to "Windows (/SUBSYSTEM:WINDOWS) under Linker -> System. Once I get all of the project setup done, I was able to do a few simple tests creating windows, drawing graphics, playing sound, and accepting user input.  I'm feeling ready to go for my "Snake" clone! 😀




Release 12: Endless Image Targets, a PlayCanvas Integration, New Launch Controls & More

Hold onto your keyboards, we’re rolling out some new features that are going to improve the way you build with WebAR. Extended Image Target Support Up to 1,000 Image Targets If you’ve ever had a hankering for uploading outrageous amounts of image targets to a single WebAR project, now you can! With 8th Wall’s latest release you can upload trigger images to your heart’s content. Not only that, but your WebAR project can also scan for up to 10 of those images simultaneously. That means that you can build one app with a thousand image targets all while within the same WebAR experience. Go wild. 8th Wall image targets have the ability to work in tandem with our SLAM engine, giving you the flexibility to design experiences that interact with image targets as well as the physical space around you. Front-Facing Camera for Image Target Detection 🤳 You can also now use your front-facing camera to recognize image targets, allowing you to design a WebAR experience that triggers AR activations while in selfie mode. PlayCanvas Integration We’re pleased to announce that we now support an integration with the web-based game engine, PlayCanvas. Build a WebAR experience using the PlayCanvas Editor, add 8th Wall to your project, then publish to the mobile web. Get started with a sample project here. New Self-Serve Launch Controls If you have an Agency or Business account, you can now launch your own WebAR campaign without having to talk to us first! And, you can schedule the end date of that campaign directly in the Console. Here’s how it works: Creating a New Commercial WebAR Project From the Dashboard, click “Create a new project” Name your web app, then select Commercial to purchase a Develop License If you have a custom commercial use agreement with us, that will appear in your account (otherwise, a standard 8th Wall commercial use agreement will display.) Click “Accept” and proceed to checkout. Launching Your Commercial WebAR Project Within your web app in the Dashboard, click on “Promote to” next to Develop (if you’ve already purchased the Develop License.) Promote the project to Launch. Select your desired Launch License and proceed to checkout. Scheduling Your Commercial WebAR Project Within your web app in the Dashboard, under Campaign Duration, select either “Ongoing” or “Schedule an end date and time.” You can always edit the campaign end date if you’d like to extend it or end it sooner. When your campaign ends, it will automatically route to the Redirect URL you’ve provided. Fixes & XRExtras Improved experience for the following Android phones: P20 and P30 Pro Improved visual quality on Android Phones Support for iOS 13 device orientation permissions Better error handling for missing WebAssembly on some older versions of iOS Try It Now These features and fixes will update automatically ✨ View a full list of Release 12 updates here. Is there a new feature that you’d like to see incorporated into our next release? Leave a comment below or post in our Slack channel. Release 12: Endless Image Targets, a PlayCanvas Integration, New Launch Controls & More was originally published in 8th Wall on Medium, where people are continuing the conversation by highlighting and responding to this story.
View the full article



Unity Combat System in place

Hello World! This weekend met the completion of a goal I thought might take a month or so. I used Unity's ECS system to get about 10k enemies march towards the center of my map, and I had buildings created that could fire projectiles at them and kill them, throwing them away from the projectile. It has a lot of room for improvement, but it was really cool nonetheless. The turret I made is actually hybrid ECS. It uses the same Object oriented framework I have for the rest of the buildings, but I discovered I can just make an entity inside my original classes. So while the combat ECS systems are in different files, the Turret Building that I created, that I can easily inherit and put into my code, can create and destroy a single Turret Entity that my other combat systems are waiting for. So if the building goes offline, it can destroy the entity, and if it's online, it resets the Entity. And then it can check the entity to see if it fired, or let it know it can fire. Easy stuff. The Combat System is seamlessly added into my already existing framework, and I haven't seen any bugs. What I do need to do, is configure the FindTarget algorithm so it doesn't have to go through every single enemy...have some kind of quadrant system that it tests to see if there are enemies in range if they're in a nearby quadrant. But it's currently running at 100 frames per second as it is, so we will optimize in a future update. The Green Dots are the entities with a simple green texture mesh. The black hex is my turret building firing projectiles at the enemies. So with this system in place, what I really need to do is just start filling the databases with stuff to do. I need a story, I need dialogue, I need plot devices, and I need research in order to get to those places. The first thing I need is characters. I'm planning on having a "counselor" for each of the systems I have in place, so 4 counselors, with varying personalities. Luckily, if I'm strong in anything, it is writing. I'm going to make a system where I can pause the game and have characters converse...this is actually only important in big events, like the beginning of the game, and when something important is happening that can kill the player. So with this in place, we then need to define what the research tree will look like. My process will be to see what I need, and make a research for it. For the first few researches, it'll only take time, and to fill this time I want to have dialogue with the characters in order to explain what is happening. Why are we here, what is the plan, how are we going to accomplish our goals. This will all change as the game goes on and all the events start to take place, but I want to get a sense of immersion. We do this by letting the player explore. So that's next up on the agenda...begin to piece together these systems I've built.




Managing UI between scenes in Unity

Coming up with a solution for managing UI elements across different scenes wasn't as trivial as I first expected. It's very easy to attach a canvas to a scene and call it a day. Initially I had all of my canvases attached to the first scene I expected the player to enter and then simply call DontDestroy(gameObject) on all of the canvas scripts. So what's the issue? If you allow the user to save and load from other areas, you have to copy/paste a prefab into each of your other scene. This is a trivially easy solution, but it's too dirty for my liking, instead we should dynamically create and manage the UI elements via a UI manager. The first step would be to create an empty object in our loading screen (the loading screen will always be accessed before gameplay starts). In this case, since we're also going to be appending a bunch of canvases to this empty object, it needs a canvas or stuff just doesn't render properly. Also make sure to add a reference to your UI element prefabs: And the start script for the UiManager script: void Start() { if (allCanvases == null) { DontDestroyOnLoad(gameObject); foreach (GameObject prefab in prefabsToInst) { GameObject toAdd = Instantiate(prefab); toAdd.name = prefab.name; toAdd.transform.SetParent(transform); uiCanvases.Add(toAdd); } } else { Destroy(gameObject); } } Each canvas appends itself to the UIManager and therefore does not get destroyed on scene change. All specific behavior for each individual canvas can be handled in the individual UI component's scripts. Blamo! That's it! Crisis averted, we can now navigate between scenes and know that our UI manager is now empowered to show canvases, hide them, etc.

Two Monts Later - The End of Daily Gamedev

It's been two months now since I started to do daily game development streams. I've been trying my best, but it is time for this to come to a close. In this article I'll talk about the various things that happened, why I'm stopping, and the future of the Leaf game. Strap in! It's actually been slightly longer than two months, but since I missed some days due to being sick, and some others because I didn't feel like streaming – more on that later – I'll just count it as two months. In any case, in this time I've done 56 streams, almost all of them two hours long. That's a lot of hours, and I'm truly impressed that some people stuck around for almost all of them. Thank you very much! A lot happened in that time too, and I think it would be interesting to go over some of the major features and talk about them briefly. New Features in Leaf Slopes and Collision Collision detection was heavily revised from the previous version. The general procedure is to scan the current chunk for hits until there are no more hits to be found. If we have more than ten hits we assume that the player is in a wall somehow and just die. The number ten is obviously arbitrary, but somehow it seems sufficient and I haven't had any accidental deaths yet. When a hit is detected, it dispatches on the type of tile or entity that was collided with. It does so in two steps, the first is a test whether the collision will happen at all, to allow sub-tile precision, and the second is the actual collision resolution, should a full hit have been detected. The first test can be used to elide collisions with jump-through platforms or slopes if the player moves above the actual slope surface. The actual collision resolution is typically comprised of moving the player to the collision point, updating velocity along the hit normal, and finally zipping out of the ground if necessary to avoid floating point precision issues. The collision detection of the slopes itself is surprisingly simple and works on the same principle as swept AABB tests: we can enlarge the slope triangle by simply moving the line towards the player by the player's half-size. Once this shift is done we only need to do a ray-line collision test. During resolution there's some slight physics cheating going on to make the player stick to the ground when going down a slope, rather than flying off, but that's it. Packets and File Formats Leaf defines a multitude of file formats. These formats are typically all defined around the idea of a packet – a collection of files in a directory hierarchy. The idea of a packet allows me to define these formats as both directly on disk, in-memory as some data structure, or encapsulated within an archive. The packet protocol isn't that complicated and I intend on either at least putting it into Trial, or putting it into its own library altogether. Either way, it allows the transparent implementation of these formats regardless of backing storage. The actual formats themselves also follow a very similar file structure: a meta.lisp file for a brief metadata header, which identifies the format, the version, and some authoring metadata fields. This file is in typical s-expression form and can be used to create a version object, which controls the loading and writing process of the rest of the format. In the current v0, this usually means an extra data.lisp payload file, and a number of other associated payload files like texture images. The beauty of using generic functions with methods that specialise both on the version and object at the same time is that it allows me to define new versions in terms of select overrides, so that I can specify new behaviour for select classes, rather than having to redo the entire de/serialisation process, or breaking compatibility altogether. Dialogue and Quests The dialogue and quests are implemented as very generic systems that should have the flexibility (I hope) to deal with all the story needs I might have in the future. Dialogue is written in an extended dialect of Markless. For instance, the following is a valid dialogue snippet: ~ Fi | (:happy) Well isn't this a sight for sore eyes! | Finally a bit of sunshine! - I don't like rain   ~ Player   | I don't mind the rain, actually.   | Makes it easier to think. - Yeah!   ~ Player   | Yeah, it's been too long! Hopefully this isn't announcing the coming of a sandstorm.   ! incf (favour 'fi) - ...   ! decf (favour 'fi) ~ Fi | ? (< 3 (favour 'fi)) | | So, what's our next move? | |? | | Alright, good luck out there!   The list is translated into a choice for the player to make, which can impact the dialogue later. The way this is implemented is through a syntax extension in the cl-markless parser, followed by a compiler from the Markless AST to an assembly language, and a virtual machine to execute the assembly. The user of the dialogue system only needs to implement the evaluation of commands, the display of text, and the presentation of choices. The quest system on the other hand is based on node graphs. Each quest is represented as a directed graph of task nodes, each describing a task the player must fulfil through an invariant and a success condition. On success, one or more successor tasks can be unlocked. Tasks can also spawn dialogue pieces to become available as interactions with NPCs or items. The system is smart enough to allow different, competing branches, as well as parallel branches to complete a quest. I intend on building a graph editor UI for this once Alloy is further along. Both of these systems are, again, detached enough that I'll either put them into Trial, or put them into a completely separate library altogether. I'm sure I'll need to adjust things once I actually have some written story on hand to use these systems with. Platforming AI The platforming AI allows characters to move along the terrain just like the player would. This is extremely useful for story reasons, so that characters can naturally move to select points, or idle around places rather than just standing still. The way this is implemented is through a node graph that describes the possible movement options from one valid position to the next. This graph is built through a number of scanline passes over the tile map that either add new nodes or connect existing nodes together in new ways. The result is a graph with nodes that can connect through walk, crawl, fall, or jump edges. A character can be moved along this graph by first running A* to find a shortest path to the target node, and then performing a real-time movement through the calculated path. Generally the idea is to always move the player in the direction of the next target node until that node has been reached, in which case it's popped off the path. The jump edges already encode the necessary jump parameters to use, so when reaching a jump node the character just needs to assume the initial velocity and let standard physics do the rest. The implementation includes a simple visualiser so that you can see how characters would move across the chunk terrain. When the chunk terrain changes, the node graph is currently just recomputed from scratch which isn't fast, but then again during gameplay the chunk isn't going to change anyway so it's only really annoying during editing. I'll think about whether I want to implement incremental updates. Lighting Leaf has gone through two lighting systems. The old one worked through signed distance fields that were implicitly computed through a light description. New light types required new shader code to evaluate the SDF, and each light required many operations in the fragment stage, which is costly. The new system uses two passes, in the first lights are rendered to a separate buffer. The lights are rendered like regular geometry, so we can use discrete polygons to define light areas, and use other fancy tricks like textured lights. In the second pass the fragment shader simply looks up the current fragment position in the light texture and mixes the colours together. In effect this new system is easier to implement, more expressive, and much faster to run. Overall it's a massive win in almost every way I can imagine. There's further improvements I want to make still, such as shadow casting, dynamic daylights, and light absorption mapping to allow the light to dissipate into the ground gradually. Alloy Alloy is a new user interface toolkit that I've been working on as part of Leaf's development. I've been in need for a good UI toolkit that I can use within GL (and otherwise) for a while, and a lot of Leaf's features had to be stalled because I didn't have one yet. However, a lot of Alloy's development is also only very distantly related to game development itself, and hardly at all related to the game itself. Thus I think I'll talk more about Alloy in other articles sometime. Why I'm Stopping I initially started this daily stuff to get myself out of a rut. At the time I wasn't doing much at all, and that bothered me a lot, so committing to a daily endeavour seemed like a good way to kick myself out of it. And it was! For a long time it worked really well. I enjoyed the streams and made good progress with the game. Unfortunately I have the tendency to turn things like this into enormous burdens for myself. The stream turned from something I wanted to do into something I felt I had to do, and then ultimately into something I dreaded doing. This has happened before with all of my projects, especially streaming ones. With streams I quickly feel a lot of pressure because I get the idea that people aren't enjoying the content, that it's just a boring waste of time. Maybe it is, or maybe it isn't, I don't know. Either way, having to worry about the viewers and not just the project I'm working on, especially trying to constrain tasks to interesting little features that can fit into two hours turns into a big constraint that I can't keep up anymore. There's a lot of interesting work left to be done, sure, but I just can't bear things anymore at the moment. Dreading the stream poisoned a lot of the rest of my days and ultimately started to hurt my productivity and well-being over the past two weeks. Maybe I'll do more streams again at some point in the future, but for now I need a break for an indeterminate amount of time. The Future of Leaf Leaf isn't dead, though. I intend to keep working on it on my own, and I really do want to see it finished one day, however far away that day may be. Currently I feel like I need to focus on writing, which is a big challenge for me. I'm a very, very inexperienced writer, especially when it comes to long-form stories and world-building. There I have practically no idea on how to do anything. If you are a writer, or are interested in talking shop about stories, please contact me. Other than writing I'm probably going to mostly work on Alloy in the immediate future. I hope to have a better idea of the writing once I'm done, and that should give rise to more features to implement in Leaf directly. I'll try to keep posting updates on the blog here as things progress in any case, and there's a few systems I'd like to elaborate on in technical articles as well. Thanks to everyone who read my summaries, watched the streams or recordings, and chatted live during this time. It means a lot to me to see people genuinely interested in what I do.




Godot Wild Jam 12

Between the 9th and 16th August 2019 I took part in the Godot Wild Jam #12. Let’s go through what it was like, and the things I learned this time. My game, MatchUp is a fairly simple match-the-coloured-blocks game. It’s not a match-3, because the game doesn’t care how you match the tiles, and each level has a different number of tiles that need matching. Think of it as a mix between those “Same Game” block games and ZooKeeper on the DS.
View the full article

Interview with the Developers behind Healing Bullet Games!

Your name: (Simon Bernard, Maria Efthymiadou, Thomas Rizzolli)   Twitter Handle/ Other Social Media:  @healingbullet The art One interesting and random fact about you that people would not necessarily guess: in our game is mostly done by our programmer, not our artist  What country you live/work in: Currently we all live in Austria for our Game Studies and Engineering Masters Degree (originally from Italy & Germany)  The video game company producing the project:  Healing Bullet Games The name of the project: Project : Override Estimated release date: late 2020 website/blog/steam page/Youtube/other: currently none existent, but will come up link to one soon  How did you get into making video games All three of us have loved video games from a very young age. Maria then decided to start studying video games as her Bachelor degree to use her art skills to design games. Simon & Thomas started creating video games after finishing their Bachelors in Computer Science to combine their hobbies with their knowledge and their passion.  What is your background in? Maria – Bachelor of Science in Game Development, Simon & Thomas -Bachelor of Computer Science and Engineering. We are all currently studying to get our Masters Degree in Game Studies and Engineering.  Blurb about game: Fight your way through dangerous creatures and explore the mysteries of an unknown world. As a robot without memories you try to figure out what happened in this strange place you woke up in. Make sacrifices, face difficult choices and discover tragic stories in this post-apocalyptic metroidvania game.  What inspired this game? This game is combination of various inspirations. Be it the colorful world of Splatoon, the atmospheric and environmental story telling of Bloodborne or the playstyle of Hollow Knight or metroidvania games. We all have different gaming background and thus let different ideas and concepts flow into this game.  What makes it unique? The games uniqueness lays in its colorful yet mysterious looks. It has a psychedelic vibe going on which not even we can describe… ( ). Also, the story behind the game, which we cannot share yet, has a lot of work put into it and is going to take our players on a journey of ethical choices and emotional rollercoasters. Also, we do not use typical game music or sounds. We try to challenge the classic video game soundtracks and try to create something new! The theory put into this. We are creating a polished game What will make it a success? experience that has a lot of thought put into every single detail to give the players the best feeling possible when experiencing it. As game dev students we learn new things every day that we can use to improve our game in various ways.  Who do you think it will appeal to? We have a little bit for everyone. Be it button-smashers, explorers, completionists or storyseekers. Everyone will find something in this world we are creating.  Number of people working on the project and skillsets:  – Simon Bernard – Lead Programmer, artist, music producer, manager, level designer – Maria Efthymiadou – Art director, concept artist. – Thomas Rizzolli – Gameplay programmer. – Mirko Illic – Audio Engineer  How are you handling art? Good question. Maria provides Simon with concept art and artistic knowledge which then he transforms into the game’s art style. The game was initially started as a Gamejam entry where Simon was supposed to do the art and this particular minimalistic art style was adapted to the game as it is right now.  What tech/stack do you use?  The game is created in Unity with C#. Are you full-time? If so how did you make the switch to working full-time in game We are working on this project in our free time right now but since we are development? students you could say that we almost work full-time on it. After our studies in a year are planning to go full-time with our studio.  Is this your first game? If not how many and what other sorts of projects have you worked No it is not. It is our first commercial game. We have done countless of gamejam games on? together before deciding to create Project : Override. During those jams we learned a lot that is helping us right now.  What’s been the hardest thing about making this game? Endurance and faith. Before we started posting our game online we had a lot of doubts about whether this is a good idea or not. Eventually we followed our heart and go for it. So far it is going pretty good. After the first big milestone it was difficult to stay motivated because always having the big picture in mind can be intimidating. We overcame it by motivating each other and taking one step at a time.  Anything else you would like people to know about you or the game? Since we are game dev students we really love seeing other games on Twitter and to give and take feedback. It is very motivating seeing other succeed! We might be new in the gamedev community but we are amazed by how amazing it is and we hope to meet a lot more people on our journey!  Our game will firstly be playable at the Game Dev Days in Graz (Austria) from September 6th to 8th. We will be posting information about it on Twitter. 
The post Interview with the Developers behind Healing Bullet Games! appeared first on Gilded Octopus.
View the full article

Before DOOM

The August 2019 Challenge on GameDev.net has been announced and it is about recreating DOOM with current technology. I missed the original DOOM craze in the 1990s although I had developed some computer games in the decade before that. So I first had to look at the Wikipedia entry on DOOM to see what it was all about. What a coincidence that the story, created in 1993, begins in 2019! Mars is supposed to be colonised by now with experiments being done on teleportation between Mars and its two tiny moons, Phobos and Deimos. One interpretation of the plot is that the teleportation machines are subverted so that they spew out horrible creatures from some unknown origin - hell? The creatures are determined to attack us and they must therefore be exterminated, which forms the action of the game. As I have not seen the original DOOM I am not qualified to respond directly to GameDev.net's challenge but it set me thinking tangentially. What about a prequel to DOOM, where the teleporters are being tested before being installed on Mars and its moons? Let us imagine that the testing was not thorough enough, leaving vulnerabilities to be exploited by hackers. Pre-DOOM is thus about the laboratory in which 3 teleporters are to be tested before being set up in their intended locations. The player will try each machine out and complete a test report. If all seems satisfactory we then have to consider what could still be wrong. Perhaps there is something outside the testing lab? My little game is written in JavaScript with an HTML5 front page. It is entirely client-based. It uses the HTML5 2D graphics context but no other libraries or frameworks. I have adapted it from another HTML5 game of mine, The Forest, an explanation of which can be found here. Pages after that describe the history (from 1982) and programming details. Pre-DOOM uses my own photographs for some of the graphics, just like The Forest. The game is basically complete and available completely free here: https://www.grelf.net/predoom There are just a few untidinesses to be addressed. www.grelf.net
August 2019



Dev Diary #033 - When Mistakes Cost You Time

Hello and welcome to this weeks Dev Diary! Today I'll explain some of my last weeks ups and downs and explain the importance of setting up your tools properly for your work style, before doing major changes to your graphical works.   The Mistake On an earlier dev diary, I mentioned about the importance of learning a habit of saving the different versions of your graphical work. For those, who has years of experience, this is a given and those that often have a habit of regimenting things, this comes more or less naturally. As such, because I have a tad different starting point and despite I like to be organized, at first I forgot to do this. Time wen't by and I learned to save different versions of my graphical works more frequently, which made life much easier. How ever - and here comes the importance of shuffling through your image editing software's settings before doing any larger works. Of course, I didn't do this, as I had no prior need to change any settings on editing software to fit my working style, which I considered mostly to be nitpicking of the pro's. I didn't underestimate it's importance to the workflow, but I didn't see it as important to my self. Well, how wrong was I, yet again and learned it the hard way. As I had no need to change the default settings in Photoshop, I also missed a rather important thing - the autosave function. Basics of the Basics, yet I overlooked that It if I like to fidle with the earlier versions just to see if I find some new way to branch out from that earlier point, the autosave function will overwrite periodically over the old file, effectively erasing the "bookmark" all together. This is why, it seems, that most of my earlier versions of some graphical designs are gone and in cases where you don't like the direction you took at all and just close the file without saving, it's already too late. Lesson to be learned from this - always make a copy of the original backup, when ever you want to try branching out in a different direction from a certain version of your work. The autosave functionality is important to be left enabled, in case the software or computer crashes for any reason.   The Re-Design Which leads to, yet again, the Re-Designs of several assets. Here is an example of several different versions of the Sapphire star; The version history goes from left to right, oldest to newest. I'm still not satisfied of the direction that the re-designs wen't, as the first one might have been the best one overall, but would have required a tad more work on the details. As an example, the outlines should have been colored as sapphire blue to hide the outlines and made it look more gem-like, and a little bit of transparency to the bottom layer, to be able to make more caustic effects to it. The colors used in the first iteration were just white and light teal for the slight lighting effects and Sapphire Blue and Persian Blue, as the base colors. From the second to fourth versions, only 7 different shades of Sapphire Blue were used in all the effects and base colors. EDIT; Backgrounds matter - go take a look at the Reddit page how these stars look against the black background, compared to white. The Editing Process The editing of the Patreon page is coming along fine, although it does take time to re-think my approach, in order to write something that makes more people to want to invest in the project. No marketing text is perfect and it is impossible to write something, that appeals to anyone, which should be always remembered, when designing your Patreon page, or homepage for your project. The first image you give to people about you and the project is important, but I would dare to argue, that it is much more important to be honest about your self and your need to learn and develop your skills in various areas - be true to what you really know and don't know how to do. Be open about the fact, that this is a learning experience to you and just be who you are, that is a much more important factor in marketing. I'd like to call this "Natural Marketing", a way of being honest and straightforward to others, show trustworthiness by your actions and being honest about your own mishaps and successes. No human, alive or long since past, is or has been without any faults. Everyone is a beginner at some point and we all advance in different pace. Accept your self, flaws and all, and do your best to overcome those difficulties. Only you can decide for your self, if this is something you really wan't to achieve. And, you can always change your marketing text later. Good enough, is often just fine for the first publication. This concludes the pep talk for other starting game developers, artists and entrepreneurs, who would like to earn their living as a CEO of their own life.   The Conclusion I'll be honest with you, I have been suffering from sleep deprivation lately, which has been slowing down my work progress and influences my rate of mistakes in my work. Last weeks short notice was partly because of this and the fact, that I had been too enticed in a game that I originally played to study it's mechanics more closely. The game in question is Total War: Three Kingdoms. The Total War series is one of those, that has inspired me to attempt creating a RTS game with similar elements. The TW: Three Kingdoms is the closest strategy game to my own visions thus far, but does not contain even nearly everything that I will try to implement in to the RTS Project. I just hope that the ideas work  as well together in practice, as they work together in theory. Thank you for tuning in, and I'll see you on the next one! You can check out every possible mid week announcements about the project on these official channels; • YouTube • Facebook • Twitter • Discord • Reddit • Pinterest • SoundCloud • LinkedIn •



A Game A Month #4 – Tapmoji Mobile – Releasing a game on Google Play

Wow! To release an App on Google Play is not a matter of a few hours, as I experienced the last weeks! But finally Tapmoji is released! I want to share some experiences releasing the app. For the last couple of months I worked on a game called Tapmoji using the Defold engine. Initially I wanted this project to be a small and simple one, but during the development I decided to make a polished mobile game. So it became my biggest project so far. You can get it on Google Play (as Early Access). Please take a look at it and let me know what you like/dislike or what issues you had! I’ll appreciate every feedback! For the interested ones, read on to get an insight into the releasing process!
For everyone else, thanks for playing, and come back for more news and games! Devlog Here are some screenshots of the current release: The last couple of weeks I had three big challanges: Finalize the App (Gameplay, Sounds, Menu, Backgrounds, Particle effects) Find a way to insert AdMob Mediation Upload the App to Google Play Finalizing the App A month ago I released a web version of the game. Since this release I improved a couple of things (and updated the web version as well!). Gameplay: Global countdown: player has to master as many level as possible in 60 seconds. After each level 5 bonus seconds are added Stars: the currency the player collects Ability to restart game from the last level after paying a certain amount of stars Spawning some particles when the right emoticon or an item was touched At game over: showing random sad emoticon at the top At level-complete screen: showing random happy emoticon at the top Showing random background image at each level Spawning and moving emoticons more bouncy Saving highscore and amount of stars in a save file Ads: Possibility to get 100 Stars as reward for wathing an ad; Showing an interstitial ad after every 3rd game. Sounds: As usual, all sounds are from opengameart.org Background music, sounds for tapping on the right/wrong emoticon, tapping on a button, at collecting items, at counting up stars at game over Possibility to toggle sound at the menu Graphics: Created 5 different backgrounds with Incskape   Showing Ads (Using AdMob) To insert Ads into a Defold app was not an easy challenge. The Defold forums led me to Enhance, after I saw many posts regarding issues adding the Defold AdMob extension into a Defold project. For me it didn’t work as well. Using Enhace you just have to paste the enhance-extension library into the Defold project and write a few lines of code to show ads. After creating an account on Enhance.co, you have to upload the apk (which contains the enhance-extension), choose which type of ads you want to show (banner, interstitial, rewarded-ad) and which Ad mediation network you want to connect to (e.g. Google AdMob). Enhance adds some SDKs and finally lets you download the “enhanced” apk. I wanted to use AdMob as mediation network, so I needed to set up an AdMob account and put the needed IDs in the associated fields at the Enhance-process. Keep in mind that Enhance will add some new permissions into the AndroidManifest.xml, depending on the SDKs that are added (E.g the permission to track the location of the user). You can uncheck this option at the enhancing-process to keep the power over the permissions. I checked the enhanced apk using the apktool. This tool let’s you reverse-engineer the apk, which allows you to take a look into the AndroidManifest.xml to check which permissions were added. Using Google AdMob showing interstitial and rewarded ads, Enhance made my apk something about 10 MB bigger (~20 MB in total). Using Enhance I faced a problem. Enhance doesn’t provide a 64bit library for Defold. But since August 2019 every app has to support 64 bit architecture. Enhance defold-connector – 64 bit workaround To make this work with Defold, you need Enhance to work with the arm64 architecure. Since August 2019 Google Play allows you only to upload apks, which support 64bit architectures. Unfortunately the defold enhance-extension has no android-arm64 library. I tried to copy the android-armv7 library and rename it to android-arm64 and it worked fine! Officially enhance doesn’t support 64 bit by now, but this workaround seems to work (for me). Using the Defold AdMob extension Using Enhance, the release process become longer. I had to sign my app afterwards and “zipalign” it on my own, to upload it to the Google Play Console. Also, this potentially unstable 64bit issue and my app becoming twice as big, made me looking for an alternative. I decided to try the Defold AdMob extension from “Lerg”. It is well documented and easy to implement, as I experienced. Using this extension my app became just about 1 MB bigger. You can let Defold sign your app and upload the exported apk to the Google Play Console without any further steps. But in comparison to Enhance, where you don’t have to pay anything for using their service, the AdMob extension will serve 1% of all impressions to it’s creators benefit.   Upload to Google Play There are a few things to keep in mind, when uploading an app to Google Play. Export in 64 bit Since August 2019 it is nessecery to provide an 64bit apk. In Defold you can just check the 64bit option before building the apk. It is important to check also the 32bit checkbox. This makes the app compatible with twice as much devices. Check Android Permissions needed The AndroidManifest.xml provided by Defold includes some permissions, which you don’t need perhaps (they are explained here). For example keeping the BILLING permission, you define that you app uses in-app purchases. Using in-app purchases you have to provide your adress in the Google Play Console which will be shown public in the Play Store after releasing the app. Being a single developer working from home, you perhaps don’t want to let everybody know where you live. Also, when you don’t use push notifications, you can delete the GET_ACCOUNTS, RECEIVE and C2D_MESSAGE permissions. In Defold you have to create a new AndroidManifest file and set the path in the game.project file. You can copy and paste the content of the built-in AndroidManifest and remove the unnecessary permissions. Creating a Google Play Developer account To create a developer account to gain access to the Google Play Console, you have to pay 25$ by credit card first. Also, you have to provide your phone number to get an google verification code. Be prepared for inserting a name which represents your company. This took me one hour, because I didn’t have an official name for my one-man-studio this far. At this point “Rocking Coffee” was born! Uploading, publishing and updating the app To upload an app, there are some required fields you have to fill in. This includes a title (50 characters), a short description (80 characters) , a long description (4000 characters), an icon (512×512 pixel), at least two screenshots (min. 320 px., max 3.840 px) , a feature-graphic (1024×500) and a link to a website with a privacy-policy for the app, which will be shown in the play store page of the app. After providing all these requirements, you are able to publish your store entry for review by Google. Especially the feature graphic took me some time (you can see it at the top of this post). The best thing is, that it is not beeing shown in the Play Store as long as you don’t have any trailer video. And I don’t have a trailer… For creating a privacy-policy page there is a tool which helps a lot: App Privacy Policy Generator. After uploading the game and creating the store entry, I waited 5 days until it was reviewed and published by Google. This includes an age rating, as well. If your app is rated as appropriate for kids, you have to ensure that the ads shown by AdMob are also appropriate for kids. You can manage this in your Google AdMob account. My app was rejected first, because I simply forgot to set these settings. I uploaded the app as a beta-release. I knew there would be some troubles and bugs, because it was the first time I released an app. In the end it was a good choice. I forgot to handle different screen resolutions and my app was displayed differently on different screen sizes. Especially on tablets. It took me some time to fix this. Defold provides some good solutions for this (creating display profiles). Updating the app, it is important to increment the version code of the app and sign it with the same key as the previous one. The version code can be set in the game.project file in Defold. After updating the apk file in the Google Play Console, it takes about one day for google to check and publish it. Summarizing, it took me about a week to prepare the release and get it online!   That’s all! This were my experiences with publishing an Android app made by Defold on Google Play. Hopefully I can help someone with these informations! I’m still working on updates and will release Tapmoji officially, soon! There are far more things to come. Daily challanges, Booster items, Google Play Services etc. For now, don’t hesitate to check out the early access version at the Play Store and to give me some feedback what you like or dislike, or what ideas you have! Cheers!   View original post at AGameAMonth.net  



In-Game Purchases, Storefront Design

According to this GDC video, selling new levels is not a good idea because only a small fraction of the users ever finish the free linear content. Average paying player makes their first purchase on the 22nd play session, and it's best to keep reminding the player often about the possibility of in-game purchases. In other words, the whole game is a store of sorts where reward/annoyance is carefully managed. My original plan was to sell episodes, but now it's clear that it's best to sell weapons and upgrades, so I started on my in-game purchase experience design. According to this website, red, orange and yellow are the best colors for a storefront. Fateless world is largely orange and yellow as it is, so this made it only more convenient to make the storefronts orange and yellow. They will sell weapons, other upgrades and possibly, even tanks. Tanks are huge. I wonder what that would even look like. Maybe I should look into car dealership design? Fateless on the App Store Fateless on Google Play




Reduce Google App Engine Flex Costs with Cloud Scheduler, Cloud Functions and the GAE Admin API

Google App Engine Flex can run most docker workloads, for instance, it is able to run headless Unity linux builds unlike Google Cloud Functions or Cloud Run which are on the gVisor runtime. However, you cannot scale-to-zero, which usually implies a GAE flex application will cost you around $50 a month. This is too expensive if I only need it running occasionally but over a long time period. In Corepox’s case we evaluate a ship’s strength by battling against other ships. We regularly get new ships, but we don’t need to run battles 24/7. Instead, running benchmarking battles twice a day for one hour is enough. This is potentially a 12x cost reduction to less than $5 per month! To do this I use a Google Cloud Scheduler job firing once every hour, notifying a Cloud Pub/Sub topic, that triggers a Google Cloud Function. The Cloud function, using ambient authentication (no keys to manage!), calls the Google App Engine Admin API to: List all the versions of a GAE application and find the latest one Depending on the hour of the day, either sets the servingStatus field to STOPPED or SERVING via a PATCH request Voila, my GAE usage graphs. Money saved!
Read the full article at corepox.net
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!