Sunday, August 26, 2012

Dialog System Done, Re-Developing Growth System

After fighting with it for a while, I finally have the desired result and my dialog system appears to be working. I'm particularly giddy about the text crawl effect I've successful added. While it hardly adds much, it behaves just like a dialog in RPGs/VNs and can be fast forwarded with an extra click. Not nearly as intrusive as it sounds and looks pretty neat; take my word for it at least for now.

I mentioned that my next focus would be the screens, but thinking about the stable screen required that I finalize the majority of the properties cow girls have. In particular, I was stuck on the new implementation of the cow girl statistics. I need to carefully plan how I store this information so that it can easily be serialized for both saving and loading. When it comes to the physical stats of cow girl such as weight, bust, hips, etc it isn't safe to just save out the literal numbers as the growth system can be adjusted in newer versions breaking older data. I'm still in the designing stage, but I intend to reduce the system one that uses a few "magic numbers" and a total calorie count to calculate out the intended dimensions of the cow girl. The magic numbers will quantify the separate dimensions of the cow girl and when multiplied out with the total calories will produce the given dimensions.  That way, if I change the way numbers are produced, the cow girls should remain proportional to the way they are intended (which should still allow for some craziness).

With this bit of extra abstraction, it should be a simple matter to allow options for either imperial or metric measurements. Hopefully this pleases the many non-American players out there. If any of you find my explanation confusing, don't worry, it sounds a bit funny to me too. I'm sure I'll have a formula figured out and I can toss it up for the mathematically inclined to look at.

Slowly things are coming together. These next few milestones are taking me right towards a proper release. I hope to have the activity and growth systems in as well first pass of the farm system implemented for that release. I'll get the chat mapper stuff in afterwards so it may not be too much longer. Hang in there.

Saturday, August 25, 2012

Working On More Dialog Stuff

I've gotten some time to think and I've designed a decent work around for the dialog issues that I mentioned in my last post. Essentially, I'll be using a system that will break up a dialog event into two parts; a begin and end function. The begin will fire off the dialog and release the execution back to the main game, while the end will only fire by an event triggered once a button is pressed in a dialog.
This may seem like what I originally was trying to do but I'm now testing passing functions as arguments. I'll have a single function a dialog begin, but I'll be able to pass it any "end" function I want that can be custom designed to receive unique information. I would like to draw a diagram but that might be a bit much.

Anyway, for this weekend I'm going to see if I can use this method and finish up getting dialog working, and then move onto getting the farm and stable screens up and running again. There didn't appear to be any interest in a livestream so I wont be doing one this time around. In the future there might be something worth watching.

Sunday, August 19, 2012

Event Director and Script Builder/Processor Progress

This past weekend allowed me to dive back into the Event Director and work on the Script Interpreter that the director will interface with. The director is now fairly solid, with the ability to be called with simple events and be able to control and modify the screens and game state data. It's much better than what I had going last week.

The Script Interp system purpose is to interface with the Chat Mapper "scripts" that will be all in XML. The idea is that I will be able to write dialog and actions into the chat mapper interface and the game will interpret those into actual functions and perform work. The system is currently broken down into 3 parts, the Interpreter (receives xml), the writer (converts xml scripts into function code objects), and the processor (fires off functions). I've gotten much further along with this script system than I figured I would. Both the processor and the writer are in with room for adding additional functions. The interpreter's framework is in but is hooked up to some debug code that is made to resemble part of the output I expect from the chat mapper xmls.

I'm pretty happy with what I managed to do but I hit a pretty bad set back that I was gambling on. I found out the hard way that Action Script does not support multi-threading. It's kind of obvious from a programmer's point of view, but I deluded myself with the familiarity I have with C++ coding that it would somehow work in the end. Before I make it sound more like the game was murdered, I'll specify that system I was using for handling dialog and messaging will need to be redesigned. Essentially, I wanted a dialog to pop up, allow input, and be able to output it so that it can be immediately used. Apparently, without multi-threading, I cannot "wait" for the player's input without freezing the game. Now I have to do some crazy solution that will use several event calls and some specific dialog output storage and function callbacks or weird voodoo. I have no idea and I'll be spending the next few days puzzling this one out.

Just another bump along the road, so don't worry about it, I'm just venting.

On a final note, I was curious about dusting off the old, Live-Stream account and wanted to know if anyone is interested in watching for next weekend. It would be mostly just me coding but I could always combine a QA and what not. If there's enough interest I can set a time frame.

Friday, August 17, 2012

Minor Progress and Weekend Plans

As predicted, I was pretty busy this past week. I did get the other job, so that week of extra hell was worth it. I'll figure out the transition to that work in the upcoming weeks and I should be back down to a regular workload soon.

As for CGF I have had very little time to get much of anything done. I got around to doing some work on the Dialog Box system and an early pass on the Event Director. The Event Director is going to serve as the interface between game systems like the job assignment and basic navigation with the dialog and event script systems. This is where the Chat Mapper stuff will interface once I get around to it. Ideally, I'll be able to have a shell that will allow me to force a few commands that will both guide and control screens and dialog conversations.

I say that it's a first pass as it was a complete failure last time I played with it and I'll be backing up and reevaluating my approach this weekend. But once this feature is running, I should be able to jump between screens and launch conversations using my new and improve system. Beyond that I'll need to rebuild a few more screens and we'll be back where I left off with the current version of the game. Hopefully exciting stuff, but still some ways away. I'll try and give at least another status update when the weekend is up.

Saturday, August 11, 2012

More Design and Some Scheduling Changes

After taking a serious look at the main farm screen and coming up with some new ideas I've had to put some time into designing the new stable screen. The basic idea of the stable screen is that it takes the place of the cow inspector but also allows for job/activity assignment. In the act of combining and shifting the purpose of some screens I've come to new conclusions and ideas you guys might find interesting.

With the simplification of stats such as health into ability points, there's a few opening for different interactions with this ability point resource. One idea I struck on was using points for funding levels of physical activity that your cow girls will perform besides their job/activities. The basic idea is to have neutral non-effecting level and to have sedentary and active levels. Going down either way would cost additional AP (doing nothing can be limiting too) but provide different bonuses. I'm still figuring out what kind of bonuses there will be, but I'm imagining that sedentary lifestyles will promote bonuses to certain types of growth while active lifestyles can help control/ maintain figures. There could also be other types of bonuses and possibly demerits but I think it would be nice if they balance out making either choice useful in its own right.

I also wanted to add the ability to talk with your cow girls. These will be one sided conversations for the most part, but will demonstrate their mood or hint at secret stats and the like. I also plan for this to be a particularly important option for special characters that will have story lines or deeper interactions than your standard affair cow girl.

The visual layout will be more dependent on select items from collapsible drop downs. It's a bit complex on my end, but I want for it to be easy and intuitive for the player. I have some crude layouts on paper but the closer I get to building these elements the clearer these layouts will become. I also hope to use a much better scroll bar that I've developed that more closely resembles a classic one like on the side of your browser.

On some side notes I'm just giving a heads up that I'm going to be super busy this weekend so output will be low as well for the rest of the next few weeks. I'm looking at a new job prospect and I'll be doing some extra homework to get myself up to speed. If this works out I'll be pretty much be doing the same level of work as I am now for significantly more pay. Wish me luck!

And on a final note I wanted to share this cool game that Muhznit brought to my attention.
http://primalemotion.deviantart.com/art/Cow-Girl-Game-v-0-5-319386070
It's a fully animated flash game all about milking cow girls! Its quite similar in theme as I'm trying here so undoubtedly you should go and check it out.

Sunday, August 5, 2012

Game Progress and Design Help

A note for those interested in helping with some design stuff, check after the break.

This weekend has been pretty great for me in terms of getting stuff done. The new screen manager is finally working. While it doesn't behave too differently from before, it now supports the independent nature of the individual screens and doesn't rely on complex coordination with separate managers in order to function. It also has support for simple transitions like pan or fade outs between screens, but I'm not sure how I'd want to use such a feature yet. I'd show a screen shot but the current state of screens is quite underwhelming. Those will come soon.

Buttons are now up to spec and have shed the unnecessary complexities from before. I now use a single button class which can be attached to special flash object and function uniformly. I still need to revise more complex button code such as drag and drop, but it should be drastically simpler than it was before.

Basic keyboard handling is in. While I've realized that there's a bit of work to get context sensitive keyboard navigation on screens, I can at least use the keys for run-time debugging commands.

I know this has been a long coming feature, but I got the framework for loading and saving outlined. I've explored my options and I'm going with using the local shared object system that most other flash games use. The trouble ahead comes in the method that I need to serialize the data back and forth between the saves and loads. Basically, I need to break down the various forms of save-able data into templates that can be interpreted back and forth. While it would have been easier to directly cut and past the Game State directly between loads/saves, I would run into the issue of version mismatches and incompatible saves whenever I update the game. This is the main reason I put off adding this feature for so long, but with some ideas I've gotten from work, I believe I can tackle this one competently.

I needed some help figuring out design issues which I go into detail with after the break...

Wednesday, August 1, 2012

New SSD and Some Design Stuff

This last weekend I got my hands on a new Solid State Drive. It was a decent deal, a 128 Gb SSD for $95 plus a $20 rebate. I never owned one before, so I re-installed my OS and dedicated software onto the drive to take advantage of its speed and its working quite well. Boot times that were a complete slog now complete in less than a minute and my tools launch reasonably well. I'm looking to finish upgrading my machine with a new high storage HHD and a backup external drive, but I'll be waiting some time for that in order to save and find a good deal.

As far as design changes go, I've been looking at the Farm screen and I've been trying to figure out how to better utilize it as an interface and a primary message screen. Before it was a bit packed with specific functionality with the job assignments as well as the navigation and alerts.

I'm currently designing changes from making it the all in one space to making it the player's "Control Center." This screen will be used primary for displaying the important information that changes day to day as well as provide a base for all navigation to other screens. I'm imagining a sort of system that will allow for daily summary messages that will populate changes in the cow girls, holiday events, crop conditions, etc. From this point, you can use buttons to navigate to screens such as the Barn which will be a combined Cow girl inspector and job assigner. A ledger screen that shows your finances over the course of the game. A full calender that lists important dates. A Storage Menu for managing inventory. Access to town navigation and more.

It isn't too large of a change, but I feel that this will provide relevant information at a glance and ultimately aide the player. I'm still looking into the details of what exactly each of these screens will have, or which will be available, but this should at least provide some idea of what is to come.