Saturday, March 18, 2017

dev blog #30 - bring some order into that chaos



this is just a small update on the progression of 0.7.
Today I had a big breakthrough regarding how to prevent fuck-ups like the mess currently in 0.6.x

as I wrote in a previous blog post, the way I handled dialogs and events was kind of chaotic



this resulted in problems like NPC not responding to you anymore (Mercedes stops giving you job offers after the first round) or responding to you despite they should not (Tamara not rejecting Mike's "learn together" invitation)

initially I thought the system I came up with was future proof but after adding only a handful of interactions with the NPCs and objects it turned out to be more of a "wild west" situation than a clean and structured handling of tasks.
major problem here is that everything could interact and manipulate everything



(simplyfied diagram of the chaos :P )
dialogs could start events or manipulate NPCs directly and events on the other side could do the same which resulted in me loosing track of "who poked whom"
this is a problem especially in "content related" dialogs that should only trigger on certain occasions or with certain NPC so to fight this chaos I came up with a more "centralized" manner of handling dialogs:
events now no longer activate or manipulate dialogs directly. instead they change the state of the "dialog giving" object (NPC, container, door, etc) and based on that the dialog to be displayed is selected which will lead to a more manageable way of interaction because now there is only one place where a dialog trigger can be manipulated

also, instead of letting the timekeeper handle content related dialogs (daily recurring stuff like jobs, school, etc) now each NPC and other objects handle that themselves because that also was another source of problem
keeping the trigger control in one place (on the object that gets interacted with) should eliminate the current state of lost overview, just like the saying "too many cooks spoil the broth"

Tuesday, March 14, 2017

dev blog #29 - techDemo 0.6.2 - public release and some info on 0.7



the small techDemo 0.6.2 update is now available for the public!
get it from the download section or any of the various mirros on Patreon



you can trigger the new scene only as Lena (for now) when you talk to Tamara after class and invite her over to "learn together"

"that's all after one month of waiting?" you might think now but to be honest I almost decided to not spend time on rendering this month because programming takes up so much time right now.

as I already said in the previous blog entry, I am hard at work getting the game up to the new software version so spending over a week for rendering the scene was a lot of time I did not spend on code.

I will do the same for this month too so don't expect any changes on release schedule or content yet.

The next update will be techDemo 0.6.3 and it will include another new scene that will most likely show Lena and Tamara together (the poll on that is still on for some more days if you want to have a vote on that)

so let me repeat what I already wrote on Patreon:

Progress on 0.7:




so I was rather quiet here and on my blog over the past month (compared to previous months) and I feel like I need to give at least a little bit of update on the progress of techDemo 0.7

in the recent update 0.6.2 there was only a new scene added and nothing new in terms of functions or gameplay features.

also some of the major bugs are still not fixed (mainly problems at the stripclub) and there is only one reason to that:

there will be no more code changes in the 0.6.x versions of the game because all the time I currently spend on coding goes into 0.7.

for those who did not read the previous long post on my dev-blog  on that matter, here is a quick summary:
the game engine is completely self-built from scratch and some code turned out to be not as practical as anticipated in the long run.

and the software I use to make the game (GameMaker:Studio) got a new enhanced and improved version with new features that can help me in development (GameMaker:Studio2).

initially I did not want to change to the new software version because these switches always come hand in hand with a major re-work of the code because many parts of it will not work the same way as in the previous version.

but since I already needed to re-work parts of my code to fix the problems in 0.6 I finally decided to make the transition to the new GameMaker:Studio2

and that's what is currently going on: I re-work some 5 months worth of code to run at the new software version and at the same time improving my own code to a more stable and less complex way.

but since this is almost entirely game engine and framework related work it is hard to "show" the progress because the game looks almost the same anyway with only some minor visual changes like the new quick menu I showcased in the video


so bear with me a little longer until I finish the transition to GM:S2 for the new techDemo 0.7.
once 0.7 is done there will be regular gameplay mechanics updates and bug fixes again because the current state of the game is by far not what it is intended to be ;)

Monday, February 6, 2017

dev blog #28 - techDemo 0.6.1 public release and what's next



the techDemo 0.6.1 is now available for the public!

go check it out in the download section or here

if you haven't read it yet, here is an overview of what's new in this release

now that the public release is done I can completely focus on the next steps of the project.
the mess I made with 0.6 is still a big concern for me so I spent the last week figuring out how to minimize/avoid this to happen again later in development.

the main problem really was and still is the overly complex dialog/event system that grew with the project over the past techDemo updates. it worked as long as the game was rather "small" but it now already showed its limits on how it will perform once the game gets more complex with story line and missions and all the "fun" stuff a game is made of.

so I put a stop to all "new" features development and will now focus on fixing this issue as my top priority! this means that there will be no techDemo 0.7 until I figured out a better way for the dialog/event system.



in the meantime I will still release new scenes for techDemo 0.6 as I already announced here so you guys get something new to look at! but there won't be any new gameplay features until 0.7 is ready.

I will now go a bit into details on what I already figured out over the past week so if you are not interested in the "development" aspect of the game you can stop reading here (and go get that new release! NOW!)



probably the biggest decision I already made in the past week was to step up to the new version of GameMaker Studio!
the latest version, GameMaker Stuido 2, has some very neat new features that can help me out a lot with the development of Twin Star.

originally I didn't want to switch software during the development of TwinStar because moving from one release to a new release of GameMaker had many issues in the past which almost always requiered a partial re-work of the project in question.

BUT: since I already have to re-work a good portion of the game to fix the dialog/event issues I figured... meh... why not switch to GMS:2 in the process to profit from the awesome new features it has over GMS:1.

and so far I already encountered the anticipated problems... a lot.
for starters the advertised "easy import from GMS:1 project into GMS:2" didn't work...at all...
but I already expected that so it was not a surprise (I would've been surprised if it had worked as intended!)

but what I also tried out right away were some of the new features I put a lot of hope into helping me in development.
to list the most anticipated:
  • new room editor:
    with the "layered" room editor making new "areas" for the game will be a hell lot easier compared to GMS:1
    I already toyed around with it and I am very pleased with the performance of this new feature
     
  • auto-tilesets and tileset brushes
    now that's something most RPGMaker developers are familiar with and love.
    and I too was very happy when this feature was announced for GMS:2 as it makes development of game worlds much much easier.
one could now say "well duh, why don't you use RPGM in the first place then?!" which I can only answere with: it was the only advantage of RPGM over GMS while GMS was way more customizeable and versatile if you know how to programm.
but I'm not going into further details about the pro and cons of either development software as I am commited to GMS:2 entirely :D

so apart from these 2 very nice new features there are many more minor improvements over GMS:1 which I'm not going to list here

so what I can say now after working for a week with the new tool is: once you get used to it's new interface it is way more powerful than the previous version!

ok, enough now with licking YoYo Games balls and on to some more infos on how the progress of the game now stands:

since the import of the GMS:1 project file failed I literally have to build the game engine from scratch in GMS:2. at first this might sound like a horrible thing to do regarding the fact that the GMS:1 project is worth 4 months of development but it's not that bad at all.

while it does take some effort to re-build it I don't have to entirely start from 0 as most of the "logic" in the existing code still applies to the GMS:2 environment and I don't have to figure out how stuff works again. so while I can re-use 80% of my existing code I still have to make some improvements to existing things otherwise the whole transition from GMS:1 to GMS:2 would make no sense at all.

so there are already 3 things I changed for the 0.7 build:

  1. "true" portable mode
    the portable (or non-installation) deployment of the game started with techDemo 0.4 but still caused some problems with some windows users.
    due to the nature of GMS and how it handles "host environment" it is almost impossible for developers to gain access to the filesystem of the OS the game is running at (they call it sandboxing)

    so the only options to "save" game data to is either the %appdata% directory or the directory the game is launched from.

    and up until now my game was using the %appdata% for savegames and temporary file storage which caused problems when you run the game on a restricted user account or from certain types of external storages or drives.

    so in order to eliminate this problem the new 0.7 will handle ALL file storage in its own directory like a portable application should.

    a benefit from this new approach is also the easier patching capabilites which allows me to add content to a game version without you having to download the whole package again but just add the new content instead.
     
  2. screen resolution/aspect ratio handling


    now this is something I had discarded until not long ago since resolution handling in GMS:1 is a bitch.

    but GMS:2 changed some things regarding this matter so since I rebuild the game engine I also decided to add support for multiple screen resolutions. I took the "January 2017" list of the Steam Hardware Survey as available options.

    and there is no fullscreen mode anymore as GMS:2 also has the same flaws as GMS:1 regarding that so I ditched it in favor for the now selectable resolutions (up to 3840x2160).
      
  3. improved internal data handling
    now this change is for preparing for the improvements I have to do to deal with the growing complexity of the dialog/event system and the still to come mission and story system.

    apart from switching to DS_maps and grids for storing game data instead of arrays I also need to find a better and more manageable way to handle the dialog/event files

    for easier editing I stored all the text and data in external text files (which I can also edit outside of GMS) that got loaded into the game when needed but this approach prove very complex because despite me maintaining a summary list of the textfiles I quickly lost track on what textfile contains what and which textfile can affect what in the game.

    now while it is very common to store dialog and text this way I think my approch of it was not very sophisticated so I'm going to work on that too

Friday, January 27, 2017

dev blog #27 - what a mess ....




so what happened with the release of techDemo 0.6?
only the 20$+ Patrons know it but I did some really bad quality checking before I released the early access version for them....

in short, there were several game breaking bugs in this release which forced me to release a bunch of short term hotfixes until I could re-compile everything into a new techDemo 0.6.1 version.

There is no excuse for that but I feel the need to give at least some explanation on how that happened and what I'm going to do about it in the future to minimize the chances of this kind of fuckup happening again.

To be clear: bugs can happen in every game development stage and release.

that said I'm going to give a little insight of my development process and what lead to the current situation.
If you don't care about details and just want the redemption gift scroll to the end of the page ;)

so, what happened?


what you are looking at here is my "relationship-diagram" for my events. Events are handling certain things in the game. they add or remove dialog options, place or move NPCs, modify the open/close status of doors etc etc.
in short, events are what make the game interactive.
each event has its unique ID and events can also call other events.

and here is where it gets tricky:
until now I only had a simple excel sheet where I kept a list of event IDs with a short description of what that event does. nowhere was noted the exact actions that event would start or which things it would modify.

this lack of detail resulted in a big messy bunch of numbers the bigger the game got. and to be honest the game is not very big at all so it also came a bit surprising for myself that my ID system already hit its limits at this stage of development.

so I sat down today and started to bring some clearance into the ID system. I made this diagram to have a visual aid on which event causes what. right now I only listed the events that get called either by the "new game event" E0 or the character related events E1 (Mike) and E2 (Lena).

those events are also embedded in the "timeKeeper" which controls the day and time related events so things like scenes and other time related things "happen"
.... or don't as it was the case now with 0.6!

because one of the events embedded as an "evening" event also triggered a "time increase by 1" it caused the game to skip "night" time and thus preventing the player from starting the brand new scene at "night"

due to the lack of detail on my ID excel sheet I simply overlooked it and unfortunately as it already was, the last minute changes I made to the game directly involved that said event...
and I did not test everything again that had worked previously because I was already two days behind schedule for other coding problem reasons....

so in order to minimize the chance of such fuckups I started to keep track of all the events in a much more detailed way.
a similar ID system is in place for all the dialogs in the game and dialogs can call events and the other way round. and it is a big messy pile of numbers already and not only once I had the feeling of getting lost in my own IDs....

BUT with the now visual diagram overview I'm going to maintain from now on I'm positive that I can keep those kind of problems under control.
it does also mean that I have to put even more time into "project management" as I already had to but that's how it is with such projects anyway.

so now for the gift:
all 20$+ Patrons will get access to a special archive that I will upload soon. this archive contains all the CGI that I rendered for the Mom/Dad scene. I rendered a total of  119 images in 1920x1080 and only 64 of these made it into the final scene reduced to 1280x720.

Tuesday, January 24, 2017

dev blog #26 - new techDemo 0.6




the wait is over! techDemo 0.6 is available now to all T4 and T5 Patrons

so what is new in this release?

  • new Scene at home

    there is a new scene available for both characters at night when they walk down the stairs from the upper floor at home (100% chance for now)
    includes 2 new characters, Mom (Susan) and Dad (Steve) with 64 CGI rendered images with hardcore elements.
     
  • new area: The Rear End
    the stripclub "The Rear End" is the first of many locations where you can earn money by working different jobs (mini-games)
    the first available job is a waitress styled game where you have to collect orders from customers and then serve them the drink in time to get extra money. The mini-game is skipable but then you will only get the regular wage and no extra money.
     
  • 4 new characters!
    1) Tamara

    she is the same age as Lena and Mike and a classmate of them. you can find her in the classroom

    2) Candice

    she is the resident stripper at "The Rear End" and can perform for you if you can afford her.

    3) Konstantin

    this mountain of muscles is the bouncer at "The Rear End" and will kick you out face first if you anger him or Candice.

    4) Mercedes

    she is the manager of "The Rear End" and gives you the job if you ask her.
      
  • new Scene at The Rear End
    you can pay Candice to perform a sexy show for you at "The Rear End".
    includes the new character Candice and 42 CGI rendered images (just a sexy show for now, will get expanded by more options later)
     
  • "Money Maker" system
    as the name implies: you can now earn and spend money on items/activities
    the list of possibilities will expand in the future so for now the only way to earn money is the job at "The Rear End" and the only thing you can spend it on is the performance of Candice
    for now!
     
  • "Friendship" system

    with this update you can already increase your friendship level with some of the characters by complimenting them. this will also get expanded with new content in the future
     
  • Skill Books

    a second way to increase your skill points outside of class are skill books in various levels.
    for now there is only one skill book for Engineering in Ms. Adams desk in the classroom.
     
  • Town Map

    the new way of traveling to various locations is the townmap that you can enter by going out the front door of your home. right now only two locations exist in the game (School, The Rear End) but I already placed the markers for many of the other locations that will get added to the game.
     
  • many more tweaks and fixes
     

as always the T3 Patrons will get access to this release in one week from on 01/31/17
and the public release is on 02/07/17 !

Saturday, January 7, 2017

dev blog #25 - new GTX1070




the latest render problems forced me to find a short term solution.
As already explained my GTX970s 3.5GB VRAM was not enough anymore to support the high-quality renders for the game.

To sort out this problem I just installed a brand new GTX1070 from ASUS that has 8GB of VRAM.



That sounded easier than it actually was...

due to the bulky flexible tubing layout of my already installed watercooled GTX970s it was nearly impossible to fit in the 3rd GPU...

since my motherboard (ASUS Maximus VI Hero) has 3 PCI-E slots it should be possible to run all 3 cards...
BUT: only the top slot is PCI-E 3.0 x16 and the other two are 2.0 with x8 and x4
so the plan was to put the better card (GTX1070) in that x16 slot...



well... that plan didn't work out that well because the watercooling parts were in the way of the bulky shroud of the 1070 :/



so I tried to place it in the middle slot...same problem and the backplate of the lower 970 would obstruct the fans of the 1070...damn



the bottom slot was no option either for the same reasons....

so...how to mount a card if it fits nowhere? ZIP-TIES!
I KNOW! that's not the proper way to mount a GTX1070 but what should I do?
it's not stupid if it works...right?!




next problem after mounting it was that my PC somehow wouldn't start anymore with all 3 cards installed... so... I had to take one of the 970s out :(

not the easiest when it's hooked to a full watercooling circuit... what a mess!

so...did it pay off at all? YES!
until now every render that required more than 3.4GB of VRAM was handled by my poor little CPU alone without the support of any of the two GTX970.
So all my combined 3k+ CUDA cores where no use to me as the cards refused to work....



But with the larger 8GB VRAM of the GTX1070 now even my GTX970 joins in with its CUDA cores even tho it technically has not enough VRAM ... the two sided medal of GPU VRAM.... they don't add up if you have two cards with 3.5GB (nope, not 7GB) but they start to share their bigger VRAM with lesser equipped cards in the render process :)

so the same render that took my CPU alone 7 minutes to get 12% done took my GPUs and CPU combined extremely less time for the same progress (as it should be!)

well...after struggling with the new card for the last 3h I can finally continue work on the scenes for the next update... yay!

Thursday, January 5, 2017

dev blog #24 - the bottleneck is real!




with the public release of techDemo 0.5 right around the corner I'm already working hard on the next update.

Aside from the bigger coding parts I scheduled for the next release there will also be many new CGI and two new scenes to go along with the new NPCs that get added too. You can check out the new "Characters" page I just created where you can find all the NPCs.

So the biggest new features for techDemo 0.6 will be:


  • "Moneymaker" update
    first part of the economy system is the "Moneymaker" update that allows you to earn money in various ways to spend later on other things
     
  • new area "The Rear End" (Stripclub)
    as part of the "Moneymaker" update this area will allow you to earn money by doing different jobs after school or on weekends
     
  • "Friendship" system
    in order to form any sort of relationship with others you need to increase your friendship status with them. this update handles the gain and loss of friendship status points for NPCs you already unlocked in your "Journal" (e.g. angering Ms. Adams by "improving" your art skills on the class's chalkboard has an effect now)

     
  • 2 new scenes
    yes you heard right, there will be TWO new scenes in this update!
    one scene is related to the stripclub and the other one to Mom & Dad
     
  • Navigation 2.0
    improvements/changes to the keyboard/mouse navigation and interaction with things.
    interactable objects/NPC are now only accessible from designated sides (e.g. you can't open the fridge from the side anymore, only from the front). This allows "obstructable" containers like the teachers desk where you only get access to if Ms. Adams is not "blocking" it. The "activation" of things not directly in front of you is also possible now

     

this list only covers the big main features and there are many more small and minor tweaks and changes to come.

and while working on parts of the new scenes I hit the GPU bottleneck once again :/

what you can see in this screenshot:
my CPU (4 cores @ 4GHz) is at 100% load while both GTX970 sit idle with their combined 3220 CUDA cores that are made for rendering jobs. this is due to the large size of the high-res textures used for the rendering process and the "small" 3.5GB VRAM of the GTX970... it simply doesn't fit into their VRAM so they won't help out with rendering at all.

this really starts to slow down my workflow so I had to do something about it. The original plan was to save up enough money (via Patreon) to be able to buy a new Nvidia Titan X that has a whopping 12GB of VRAM which should be enough for a long time until I would hit that bottleneck again.

BUT! since I can't even render that 2 character scene in a reasonable quality and time already I had to improvise with a short term solution. This short term solution is a new GTX1070 with 8GB of VRAM to keep me on track for a little longer so I don't have to sacrifice quality in order to push out new CGI! It should arrive in the next few days (according to tracking) so I can keep working on the new scenes :)