Dev BlogPosted by Wes Mon, October 24, 2016 05:26PM
The M'Dieval game jam is next week!!!!
After the release of our first demo, we had a pretty busy month here in October. Sadly, we didn't have all the time we wanted to work on the game. Mitomon, with his laptop incident, had to do a lot of his drawing in the library while people gave him weird looks for looking up videos on crabs walking for about an hour. He needed to get that crab walk animation done but it turned out great.
As for me, school really hindered my progress with midterms and homework and everything piling up at once. I am finally getting time to breathe this week and now it is crunch time for the AFF team. We have a lot to do before we submit our game to M'Dieval. I am going to be working on level design and refining the enemy AI while Mitomon will be polishing enemy animations and music for the game. Hopefully by the beginning of November we will have an updated demo out for the game and a nice teaser to go with it.
Wish us luck through this peroid and hopefully we will come up on top for M'Dieval.
Mito's CornerPosted by Mitomon Mon, October 24, 2016 10:58AM
Wes promised to write the dev blog post today, so I'll just post about why progress on my end has been a bit slow. I mentioned my laptop had taken a vacation, but I didn't describe what actually happened. [Warning to mobile users]: Image heavy story in this post.
My laptops LCD screen decided to pop off and when I tried to put it back, nothing happened. I was left computer-less and with an old backup of data on a thumbdrive. I decided to take the thing apart to remove the battery and power cycle it to get rid of static that could potentially be causing the issue.
Laptop after taking off covers:
After the power cycling didn't work, I was extremely discouraged (the laptop covers had SO many screws on them) I basically gave up on my laptop. However, I was not going to buy a new one since I was waiting for the SurfaceBook 2 to come out in Spring 2017. I knew only the screen wasn't working, so I went out to the shed to get an old VGA monitor to hook it up to my PC. I was right, it was only an issue with the screen hardware. With the monitor, I got a newer backup of all my stuff on my flashdrive to have something to work off when I wasn't at home.
Laptop with monitor:
I then realized I should go ahead and get used to my laptops new life as a desktop and modified my work space accordingly.
Laptop in Desktop Mode
After adding Styrofoam to avoid scratching screen:
After around a week of working like this (no mobility whatsoever when I was used to going everywhere with my laptop), I got frustrated and decided to tackle the issue once again. As it turns out, the issue was in a socket on the screen : it had been bent and broken, removing the cable that supplied the screen from the computer itself. I got in there with a knife and some pliers and performed a very risky fix.
Here's me opening the screen:
After fixing the socket, I had no way to safely solder the pieces back together. If I had tried with the bad equipment I had, I might have actually messed up the screen irreparably. So I went with good ol' duct tape.
Here's the fix and reason of why I couldn't work for almost a week:
I then had to close up this cover:
I took out the battery again once the screen was plugged in and power cycled it to get rid of static.
Here's the result:
Since the cover had already come off and didn't want to snap back into place, I went back to my friend, duct tape, and made sure my laptop case was solid.
Here is what my laptop looks like now:
It looks pretty bad and I do get weird looks when I'm working in the library (I got one just now), but hey, it works. Anyways, that's why progress on AFF has been slow lately. This week is crunch time though since the M'Dieval game jam entry due date is coming up. Expect rapid advances in the game with a new and updated download on or before November the first.
Wes ZonePosted by Wes Mon, October 17, 2016 05:21PM
LibGDX has a scene 2d class which is really nice to work with. The way it works is that you create a stage for every scene that you have. A scene could be your main menu screen or your death screen or any level. Then you would create actors to put in the stage. An actor does not have to be a character, it could be something so simple as a tile or an arrow or even the background.
Usually what I do is I have each Actor be it's own class. Inside that class I would extend the Actor class and override the act and draw function. You can think of the act function like the update function in Android. This is where you would update what needs to be updated for the actor to work correctly. For example, an arrow needs to keep moving once it has been shot so in the act class you update the position of the arrow per frame. The draw function is pretty simple in the fact that all you do is draw your actor.
Once you made all your actors for the scene, you would add the actors to the stage and then in your main function you can call stage.act() and stage.draw() in order to get the game moving and make it look seamless. The fact that LibGDX provides this makes writing the game so much easier.
That's Scene2d for you. Next time i will dive into my BaseCharacter and BaseEnenmy classes to give you guys an idea on how I write my characters. It will be more like a game programming 101 post.
Make something great,
Dev BlogPosted by Mitomon Mon, October 17, 2016 12:36PM
Monday again! Let's get ready for another great work week with some AFF.
Last week was a pretty busy week for the AFF team, however, we did manage to make progress. Wes was a bit busy with midterms, so he wasn't able to make any huge updates to the code. However, we were able to set up a nice framework and a graphical map-making tool. This tool greatly improves upon the text-based one used earlier and yields better and faster results.
Unfortunately, my productivity levels have also been a bit low. You see, my laptop's screen fell off, so my mobile workstation has now been turned into a desktop(I hooked up my laptop to an external monitor). I was able to record rough drafts of parts of our soundtrack though, here they are : Mitomon's Soundcloud
. I was also able to Finnish(heh) all of the enemy animations except the knight walking anim. I haven't been able to work on story building or the cutscenes we'll use to tell it. I'm still not sure of what kind of art I'll go for with the cutscenes, but we'll see what I figure out.
Blog Progress: Although I try to avoid it, sometimes the Dev Blog posts can be a bit biased towards my end, so we've created sections for each one of us to post about our sides of development. You can find more technical details about the game at Wes Zone
. All other things(art, music, story, the struggles of making a historically accurate game over a badly documented period of time, and some game design at Mito's Corner
. Right now these places might not seem well populated, however, I will try to post twice a week on my section.
That's about it, if you have any questions or comments, let us know in the comments below or email me at firstname.lastname@example.org. For a quick response, I recommend writing in the comments as I only check my email weekly.
Mito's CornerPosted by Mitomon Mon, October 17, 2016 12:35PM
These are just a couple terms I've come up with to describe the level themes I've been making for AFF. Note: The terms below were created by me, although this style of music probably has another name. I am a self-taught pianist, so I am not familiar with terminology relating to music.
GOE stands for Gradual Octavian Escalation. It is the gradual increase of each octave in a song. An example of this would be in my version of Ievan Polkka. The song starts off pretty low, then moves on to higher and higher notes until it reaches the end of the planned escalation (or of my keyboard). The song can be terminated there, restarted at the bottom directly, or transitioned all the way back down.
GOD stands for Gradual Octavian Deescalation. It is the gradual decrease of each octave in a song. An example of this would be in my version of Sakkijarven Polkka. The song starts off pretty high, then moves on to lower and lower notes until it reaches the end of the planned deeescalation (or of my keyboard). The song can be terminated there, restarted at the bottom directly,or transitioned all the way back up.
In both of my arrangements of the Ievan and Sakkijarven Polkkas, I also loop the songs to force them to start at every single octave in the song. In Ievan Polkka, for example, I start at the second octave, go through to the fifth, then start at the third.I then go through the fifth again, but start at the fourth the next iteration. Once I start at the fifth, I end the song and the game engine starts from the beginning. This same process is done in reverse for Sakkijarven Polkka.
Well that's about it. If you are sure there's a name for the things I went ahead and labeled myself, go ahead and post it in the comments.
Mito's CornerPosted by Mitomon Mon, October 17, 2016 12:20PM
I have some spare time, so I'll go ahead and write a bit about our game's genre. If you Binged (or googled, yahoo'd) hi-fi, you'll probably get something about audio. While my definition of hi-fi does involve music, it is much more than that.
Sci-fi stands for science fiction. Similarly, hi-fi stands for historical fiction. With AFF, I'm trying to revive an essential part of storytelling : ourselves. Storytelling originated as a way to recount our memories to others, often adding action and excitement for effect. Although I really love sci-fi, I believe hi-fi can be equally entertaining and possibly even more educational than sci-fi- if handled correctly. A good example of one of these games would be the Assassin's Creed series. These games take place during exciting spots in history, namely the French and American Revolutions.
Making a historically accurate game also comes with a set of disadvantages sci-fi writers and designers don't need to think about. As a writer, I must ensure the plot of my tale fits the setting. This can be easily done in well documented events, such as recent wars and revolutions. However, documentation of the geography, biology, and political scenario of a location are not always readily available.
Part of a culture is their music ,mainly folk songs. For sections in time where history was not well documented (looking at you Iron Age Finland), traditional songs can be a pain to find. To simply find a solo of a Finnish folk song on YouTube take hours of work. Those hours don't even include the time it takes to learn the song by ear to be able to remix it for a game. If you ever decide to work on a hi-fi game, go to that country's website, their subreddits (thanks to /r/Finland
for helping me find songs), and even their Wikipedia pages. The help is there, you simply have to find it.
Now, back to the "fiction" part of hi-fi. Why take such painstaking measures to insure the accuracy of the game if you're just going to lie about something anyways? Well, the only "fiction" going on in hi-fi, would be the tale of the game itself. Purposely injecting false pieces of information in parts where it isn't necessary would be doing the players a huge disservice. It is labeled historical fiction
because it probably didn't happen. It might
have. Jasper could have once been a living person in Iron Age Finland that went on to save his people, but it is extremely unlikely. My goal as a hi-fi writer is to successfully embed my work of fiction into history so well, it is as believable as the history itself.
History fiction is a pain with the details but a pleasure to work with. I have not only had fun making a game, but I have learned about another awesome culture in the process. A 2-in-1 deal? I'll take it any day.
Wes ZonePosted by Wes Mon, October 10, 2016 07:04PM
Hey guys, Wes here. My real name is Wesam and my internet name is shogun656. This is my first post to Wes Zone and i wanted to start by introducing what this page is going to be about. Wes zone will be more on the programming side of A Finnish Fable and we will discuss what we do to get a game like AFF to run.
The next reason why I choose LibGDX is because it is a Java based framework and Java is my favorite language. I came from a background of making android games so I was already used to Java and love writing in it. Also, having an artist (Mitomon) that has some Java background makes communicating concepts much easier. Him having some coding experience has made things so much easier for the both of us. Sadly I don't have a strong graphics background to compensate.
Those were the two main reasons I chose LibGDX so next post I will be diving into LibGDX and their scene2D managment class to show you why LibGDX has been a pleasure to write in. I won't be posting as regulary as the Dev Blog so go read the Dev Blog if you want your weekly dose of AFF
Dev BlogPosted by Mitomon Mon, October 10, 2016 01:03PM
Time for another blog post. I'll start off with a brief description on our progress. Since last Monday's much anticipated(by us at least) demo release, the AFF team has been hard at work polishing and adding new game mechanics. Also, in an attempt to spread the word, we've entered our baby AFF into the M'Dieval game jam on itch.io.
In regard to the aforementioned features, the most prominent addition to AFF has been improved art. I've added a new enemy character with walking and attacking animations. This small critter may look adorable when scampering around the castle, but be warned, it will run like a devil after you if you are spotted. Fortunately for you, the current version of this enemy has as much life as a crab; it's easy to kill. Meanwhile, Wes, AKA shogun656, added start and end screens, giving the game a more professional look.
This weekend, my laptop was on vacation, so I worked off of my phone. Making art on a smartphone proved to be quite frustrating, therefore, graphical art production stagnated. However, this allowed me more time to work on the audio of the game. Our current theme song, Ievan Polkka, seemed quite lonely in it's lone spot on the soundtrack, so I set out to learn and arrange another song to keep it company. So far, I've arranged versions of Sakkijarven Polkka, Vem Kan Segla, and Konevitsan Kirkonkellot. These have not been recorded digitally, put have their own spots in my musician's notepad. Sakkijarven Polkka will rival Ievan Polkka's awesomeness as a level song, while VKS and KK will make great cutscene and ending themes because of their innate sadness. While I struggled to find tutorials or sheet music for obscure Finnish songs, Wes was busy working on both the user interface elements of the game, and the gameplay and graphical appeal. He added a damage indicator in the form of a red flash on a hurt character. He also added a pushback when hit, enabling enemies to be shot into the abyss. Adding the title and death screens proved to be taxing on the code, so Wes had to write batch after batch of Java to get them to work properly.
This week, we plan on finishing animations for all of our current enemies, making a teaser video, and adding new art and audio to the game. If you haven't downloaded the demo yet, head on over to the itch.io page and get yourself a copy.