Hi fellow Ascenderians, last week Ascender get the chance to showcase on Popcon Asia 2016 Event, at Jakarta Convention Center – Indonesia. Our many thank to fellow Indie Game Developer, who has been entrusted Ascender to work together as a team. Some of Indonesia Indie Game Developer joined together to form an Indie Movement called Indiesche Partij. Here our Booth on Popcon Asia 2016. Can you spot Ascender’s booth ? 😀
At this moment, we’re so glad because more than 200 people came to Ascender’s booth. Some of them are Ascender’s big fans. They happily playing with Ascender’s Challenge and also bought Artscender Box that contains many things; like Ascender’s Artbook, Ascender Game beta version (last build), Ascender’s Music, Ascender’s wallpapers and also Steam code to get Ascender Game full version after we release on Steam later. We sell it with promo prize Rp 150.000,- IDR. Here the contents of Artscender Box :
Many people come to our booth to play Ascender, or just say hello asking about Ascender’s story or maybe offer us an ad for Ascender. We are glad to have the opportunity to attend this event. Here some of our documentation at Popcon Asia 2016.
See you to the next event with Ascender The Game..
My goodness, there you are! You see, I’ve been buried in this pile of codes ever since the last devlog post, and I just barely have the chance to write this one!
Umm, where do I start? Oh well, I’m Chalcedony, and here is the 42nd entry for this devlog series. It might as well be my last chance to write, and hence the title. This will be the story of preparations towards the ending of this project.
Let’s start… Or not. Heheheh.
There is an interesting trivia about the number 42 to be the answer of life, universe, and everything. Others view it as death – the end. It’s up to you to interpret it your own way, but hopefully this entry, the 42nd, will provide you with some answers… Or not. Oh right, back to topic! Ending, from a coder’s perspective.
It is the time where every other members from the team flood you with their not-so-final creation. Yeah, nothing can ever be treated as final, as revisions pop out every day, hour, second, even millisecond.
Picted below is one in-game footage, after and before some lovely revisions… Or not.
Little changes are more often than not, jeopardize your code structure, if they are numerous and are done near the end of the development process. The addition of many if-elses is killing you. We have a couple of instances where some objects only appear at a specific time and place (and aren’t used in any other occasions). We have a dedicated folder containing local script object for those things, just to avoid massive lines of ifs.
Events that are tightly tied to time also serve as a genuine hassle when changes occurred. Mistimed jumps, stuck in closing door, you name it.
Ending sequence is constantly changing and therefore is a total time waster :(. The team made me swear not to post any spoilers here, so sorry, no more asking, and no, no screenshot nor gifs for you… Or not.
Now you would think that, after applying all changes, we would just hit the build button, and everything should be okay… or not? Well, we still have to do the testing, assuring this game can run on most computers, et cetera. We have seen cases where people complained about this game crashing after the first screen. Weird, as it runs perfectly on our machines. This is one of the harder case of bugs, and sometimes we decide that sometimes, you just have to use a better computer for games.
Done checking (internally)! The next step is to distribute the executable to some secretly picked testers, for the final input for the game. We just need upload the game, and… Hey, look at the size! At the moment, our build is 2.56 GB, waaay above our expectations of how big this game should be. Zipping could reduce it to 357 MB though.
It is possible to check on what is bloating the size of your project in Unity. The editor log gives you a pointer in it. And in our case, guess what, the textures are totally dominating the build, by a whopping 97.0%!
Not all hope is lost, though. Unity also has the option to compress texture size – crunched texture the name. The upside is, crunching effectively drop the texture size to about 25% of its original size, with almost no noticeable loss of quality! The downside is, crunching takes a huuuge amount of time, and only textures with specific size could be crunched (must be 2^n or 100 * n, to be exact). And the worst part is, it is not even documented! It is recommended to write a script that selectively crunch your assets (you can do it manually, in exchange for your sanity), and let unity do its work while you party on… Or not.
Great! It’s finished and ready to be served! Or not. In reality, we are still struggling with constant changes, and haven’t reached this state yet. Hopefully this madness will soon reach its end! Yeah, that’s it, that’s all, guys! Tune in this channel weekly for more updates! See you around!
Still here? Okay… here’s some statistics as of 18th June.
– Build size: 2.56 GB.
– Project size: 13.8 GB
– script files in project: 400 items
– texture files in project: 5804 items
– audio files in project: 134 items
– script size in build : 1.0 MB (0.0%)
– texture size in build : 2521.6 MB (97.0%)
– audio size in build : 55.1 MB (2.1%)
Note that this will definitely change in the released version… Or not. Heheheh.
Well, right now Ascender almost reach the finish line, but we are still in the pit stop of a few laps to go. Polishing time before the checkered flag waved! So, I have to make my mouth shut to prevent anything spoiled. I want to share my checklist to you at this moment, the big parts before wrapping up:
Simplifying some dialogues
Grammar checks and corrections
Make ups some generic NPC’s Dialogues
Detailing the ending with artists and programmers
There’s more things has been done in past weeks. I feel so lucky that I can attend the Casual Connect event in Singapore from 17 – 19 May 2016. I have a chit chat with some story writers and learn some lessons from the story gurus. I’ve met this guy, Scott Chen, the story writer of OPUS : The Day We Found Earth, story driven telescope simulator-like game. He’s fantastic! He shared that the power of his game is the story and the gameplay authenticity. So, I asked him if he had the same struggle that I had as writer, and he’s not denying it neither agree with it, he is quite confident with his English and story concept. Lesson learned : Proof reading and dialogue fixing is one thing but having a confident in your writing is more important. His work is picked by Google Play Store as Editor’s Choice under the name of Team Signal, studio game based in Taiwan.
Scott Chen, OPUS story writer
OPUS game scene
OPUS : The Day We Found Earth
In addition, I saw another amazing story-based game called Désiré, black and white point and click adventure from France developed by Sylvain Seccia. Best Game Narrative in Indie Prize Showcase! I heard his accent and his speech when receiving the award, his not so fluent in English, I think, but still, he won! So, lesson learned : even English isn’t your first language, but go for it! You still can make the best story! No need to worry so much about it!
It’s been a quite remarkable story writer experience for me attending the Casual Connect Asia 2016. Last week, I also met one guy, Cipto Adiguno, the brain behind story in Celestian Tales: Old North, a classic JRPG from Indonesia who awarded as Best Game Narrative and Game of The Year in Game Developer Gathering Indonesia 2015. He’s so humble and we have quite long chit chat about being story writer and struggle delivering a lot of quests and dialogues. Lesson learned : If you find a publisher from US or UK, surely they will help you with narrative issues, but mostly you can make it in low priority because it takes a lot of effort if the number of narrative texts reach thousands. He said that player will understand what you want to deliver if you have a good basic in English.
Celestian Tales: Old North Awards
Cipto Adiguno, The Man In The Middle
No need to be so worry about that, visualization and gameplay is the most important part, you just have to make sure the story is firmed. I’m quite agree with this as in this article said “Realizing that 95% of people won’t remember a thing you’ve written a week after playing……………. They won’t do any of the sidequests, they won’t read any of the lore, they won’t care about any of the time you spent trying to make sure. And that’s okay.” With all these things connected, my confident is boosting up, as a newbie in game writing world, I feel proud that I can give my idea and writings in Ascender and become part of GameChanger as story writer. When I received the news about we won Best Game Narrative 2016 in Indie Game Festival Indonesia, I feel like “Really? How’s that possible? With all those grammatical errors?”, now I’m assured that I just need to continue polishing Ascender’s narrative parts and never stop learning to write an amazing game story from experienced one. Side Project: Read all those Warcraft’s tales (my book still being captive by Ruby anyway) and start to write Ascender’s book.
Garnet is signing out from GameChanger Team Headquarter!
Can’t believe that it is my turn to write, it has been a challenging weeks toward the next version of our game.
During testing, some players said that the “Boss” Puzzle in Ascender is quite intense. Well, as a designer I never really think that the puzzle that they describe is actually a Boss puzzle. I like to all it Intense Puzzle where player is given a task to complete a puzzle with a pressure (it can be time or annoyance).
I use Intense Puzzle is used for two purpose, first to validate that user know how to use certain skill and the second is truly a challenge for the player to face in order to progress the game.
The first example of Intense Puzzle is B.RO Puzzle in the beginning of the game. I use the puzzle to validate the skill that is newly acquired skill (Double Jump and Hook) and let B.RO chase them down in order to heighten the intensity of play. We even test the player to use the skill accordingly in order to get away from B.RO
After this player are tasked to finish not so obvious puzzle, and I call it hidden puzzle. This type of puzzle is where player probably saw an item but can not get into it. Some puzzle can not be directly solved since some of them uses skill that player may not have yet. In the public preview, there are a lot of these type of puzzle that you can found.
Player will not also find many type of puzzle, there are also quest that is affected by circumstances of the world. This quest includes a race with nippytron, capturing pet called gnallo and many more. Try out the public preview in order to find more type of this gameplay.
There are more type of puzzle in Ascender but mainly it is the variation or combination of puzzle that I just mentioned above. I guess that is all from me right now, see you in another discussion.
Today, I, Chalcedony, the programmer of Ascender, also an intern in devlogging, am going to tell you an important element of Ascender – the rune system. But before we start, let me give you a sneak peek at what feature is being cooked in our kitchen. It’s your turn, Sky!
Yes, we plan to extend the usage of hook, so you soon will be able to see Sky happily yanking boxes around Dolopo. Oh, about Dolopo, here’s an animated GIF showing sketches of that city.
Enough peeking! Without further ado, let’s get into the rune system! What is rune, you say? Hey, don’t make that what’s-wrong-by-not-knowing-it face! Check this blog post by Amethyst, you will get an explanation why it’s so awesome that it brought us the title “Leading Engineers of Game Mechanics” from Compfest, a prestigious information technology event in Indonesia. Or better yet, play the prototype now!
Alternatively, I’ll just be nice and once again copy-paste his explanation for you.
“So what is Rune? Rune is type of stone that can be found by the player. Each rune can equip Sky with new skill in order to explore the world of Ascender. The trick is that each rune can be only equipped in a limited slot. Player need to figure out how to equip rune effectively and efficiently”.
You might have known from the image (or by playing the prototype) that the rune system is placed on a triangular grid. I found that triangular grid suits well with what we need – a simple grid type so anyone would have no trouble fitting the rune in, but not too simple to maintain the ‘puzzleness’ and to preserve some rooms to make it more interesting.
This rune system is appealing, but we want to make it fascinating. We have considered some ideas, such as combining runes to produce new skills, e.g. Fire + Run = able to walk on fire, Strong + Hook = able to pull heavier blocks, etc. We also thought about more rune placement rules, such as which rune must be put close to each other, and which should not, and its consequences.
Along with those thoughts, we also want the rune system to develop as the game progresses. Runes (and slots for runes) will be awarded upon quest completion, and maybe at some other rare occasions.
Now you know the charm of rune system in Ascender, let’s talk a bit about the implementation, a.k.a. the annoying math and programming stuffs. First thing first: How can we construct a coordinate system for this grid? Actually, there has already some solutions on the net, with this being on top of the search result:
The implementation was straightforward. Here, we choose (0, 0, L) as the origin, and assign the triplet (x, y, z) to each triangle slot, with x and y being integers and z being L or R. Note that for each increment of x by 1, we move right exactly 1 triangle length, and for each increment of y by 1, we move up exactly 1 triangle height, and right by 0.5 triangle length. If z is L, the triangle is upright, but if it is R, it is upside down and shifted right by 0.5 unit of triangle length.
Then another problem jumped out when we needed the rune so it can be rotated. Now how do you map some point to another when it is rotated around the origin by 60 degrees? Try it – you will know that it’s not a trivial process (except maybe you are some geometry whiz, that’s it).
After some hours thinking, I decided to play with some other coordinate system, like this one below.
Now, the coordinate only needs x and y, but it omit some points as it is not valid to put a triangle in, such as point (0, 0). All valid points have odd y coordinate. Moreover, we need to derive a formula to know whether the triangles should be upright or upside-down. On top of that, the distance in y-axis is shorter than x-axis (it’s approximately 0.87 times, = 0.5 tan 60)). It looks totally uglier than what we had before. But, by some magic process, I then found a way to map it!
Imagine we are to rotate point (x, y) by 60 degrees. By using rotation matrix, we have the new point (x’, y’) to be (x cos 60 – y sin 60, x sin 60 + y cos 60). But remember that the y-axis is ‘shorter’ by half of tan 60 times than the x-axis! All in all, it turns out to be easier after we done those trigonometry calculations. Aw, yeah! Simply put, convert from integer coordinate to Cartesian, do rotation, then convert back to our integer coordinate system.
Well, that’s one problem about Ascender’s rune system solved. But we still have plenty things to experiment with, and we need your help for that! Remember about making it fascinating? How about some suggestions in these things.
What other platforming skills would you like to see?
Is combining runes compelling? What rune combination do you suggest?
What rune placement rule do you think is intriguing? Are there any game which you must put puzzle piece in interesting ways?
Do you have any ideas to make the rune system (or even the whole game) more engaging?
If you have any thoughts, fill the comment section below and we will be very glad to hear it.
Now, for a closing, check out Ascender’s Starter Bundle: You’ll get the release version of Ascender (when it is released, of course), together with some exclusive rare items, such as digital wallpaper, soundtrack, mouse pad, and a 4GB flash disk! As a bonus, we also included 3 of our games inside! Alas, it’s for sale in Indonesia only, though.
Whew, this is the longest blog entry so far, but now is the time for us to part. Always keep this blog in sight, though, as future updates might pop up anytime soon! Thanks for reading!
I am Citrine, the sound designer of GameChanger Team. GameChanger Team have 2 persons on audio department, Zircon who focused on music composing & I focused on sound effect, mixing & finishing touch to all audio on Ascender The Game.
So, first of all, I will tell you about what we believed about music. We believe that music in game will give you different experience of gaming. Player will get better experience when playing a game with good audio, rather than without audio.
On the other side, I saw that most game developers neglected music in game development, and left it until the very end. I really disagree with that decision. Therefore, I undertake the development of the audio from the beginning, alongside the development of the game.
What I do first is to make the BGM & sound effect for the prototype of Ascender The Game.
Ruby, our Producer, chose ‘Himalaya’ as the overall concept of Ascender The Game. I then researched on the ‘Himalaya’ music, about what instruments are used in ‘Himalaya’ music.
I chose flute, violin and cello as a basic instrument for our theme song and added some Celtics instruments like harp, drum, trumpet and trombone to make our song more majestic.
This is our theme song for now. It’s not final, we will add choir like angel’s voice to this song, to make it more emotional.
That’s it for today, next time I will give you sound effect compilation of Ascender The Game.