Showing posts with label project combat test. Show all posts
Showing posts with label project combat test. Show all posts

Sunday, September 25, 2011

Some things actualy "completed"

Well I stayed up far too much the past two days to try and "reset" my sleep pattern to a better time. Seemingly works as I wasn't tired at all when I woke up early this morning. During those two days I manged to do a bit of programing which surprisingly worked out.

A while ago I had some results of a simple roguelike. It worked out on my end but for whatever reason no one I knew could get it to work for some odd reason. This was annoying and pretty much made me stop working with pygames. Though I had some inspiration working with Tkinter even though I had some bad experiences with it due to a friend and got into some interesting things.

Look ma no pygame.
I looked into the canvas widget which is for drawing polygons and what have you to itself. A bit more reading and I found you could do the same for text. Without too much rigging and reusing some code from the other version I got effectively the same thing down and even went so far as to add some stupid AI to it. May have some bugs but its' done and can be gotten here. Since it's just using Tkinter an inbuilt module of python it shouldn't have errors. Even if it's an earlier or later version I don't think it'll break with how consistent they have kept Tkinter which is very nice.

That said I have looked into Combat Project too with some mixed feelings. For one the code has gotten very long, and very unorganized. I did not plan adding AI well at all. I do have some minor results with it and a lot of time behind it but it's a headache currently trying to add the new features to it. I think I may be putting it on hiatus or taking what I have and working from the ground up around it, because as it stands it's not quite as workable as I like. The system itself may benifit from being moved to something with a GUI as it stands it wouldn't be fun to test. So for now Combat Project is dead until I have a better grasp of how to throw it together. Hopefuly not too long but I stared at it for a half hour just getting my bearings after taking a little break from it and that's a bad sign. Mostly due to my part of not planing ahead. Code can grow like a bad cancer of spaghetti if not thought through and this is a result that I started organizing too late.

To take it's stead I think I will be trying something a bit simplifier. With the current roguelike system in place the "How to Write a Roguelike in 15 Steps" has popped into my head. While I skipped a few things I may start working on a simple roguelike, not that most roguelikes are simple but I'm not going to be trying to reinvent the wheel here. So project 'Simple' Roguelike is go. Though looking at the steps it seems I've skiped a few like saving. Mostly due to just wanting to get something to hit as any roguelike should have but we'll rectify that later.


I could put up a cleaned version of Current Combat project though if anyone wanted though it doesn't have much without the attack AI for the enemy fully functioning.

Tuesday, September 13, 2011

debuging and things that could use some debug

I think I found the first of my problems in combat test. Good old variable mess up. For example block has a block_wait and a block_change and parry, and dodge have similar. The X_change is how many turns at max it can wait to change and block_wait is the actual counter for it. Easy change but showing that you should always make variable names you'll get exactly what they mean on viewing. So going to work on fully testing that out and getting the AI using punisher things itself.

Other than that my Friend finally got me to get the minecraft pre release files as we could try out a server. That didn't work too well. For whatever reason I would log in, load for a while, move around ineffectively then get timedout. Seems to be a reported occurrence with no real work around so we're left with rolling back to stable version until a real update comes out. It's annoying but it's something I can expect.

Though I did make a single player world. Which happened to be an island. With one tree. No farm animals spawned but there was some tall grass. So after carefully harvesting the tree in hopes of saplings I made a farm. From there I hit tall grass for seeds to receive one. This did not seem good with the newly implemented food system. So I left the island a bit to find a few other small islands with tall grass and nothing on them and returned to plant it and do some tree management. Before the wheat was fully grown I found out that you can starve to death in game, now I made the mistake of jumping into the ocean to see if I could get in the seemingly glowing holes at the bottom before I died which I didn't make it too. This messes up my evaluation of "Starving" because I swore it left me at .5 a heart before suffication under water took that away, but I could be wrong.

After that I made another world with more trees and the hunger problem came again. I had plenty of sheep around and got lost getting other meats through hunting. Raw meat I found out does next to nothing for hunger which proved anoying when I started wolfing food down on the last food indicater. Though I have a little wheat farm growing in the middle of a lake and want to get some pumpkins or watermelons to see how they work in game.

While buggy as hell I'm actually very interested to see how food will now play in the game. I also want notch to leave the option of "classic" play style where food doesn't matter but I doubt that'll happen. It'd be a shame though, as he did say there would be ways to ignore food and Creative omnipotent mode isn't quite the way to do that.

Tuesday, September 6, 2011

ai brain problems

Took yesterday off to play some games and check some job things. Though today I have been hitting the code hard for the past few hours. In those few hours I've set up all the variables and have been starting to test the ai defense switching in response to getting hit with attacks that punish it for the defense it's in.

variables variables everywhere and I'm this close to needing to watch all of them
The above image is all the default values, I'll be making a monster creator method to tune them to values needed. As it stands it's both due to me trying to do too much at once and not planning correctly. There are probably quite a few things I could reduce or find a more elegant solution to implement but it's eluding me. Though I will say that I did discover a bug in my previous tests as I was only using the default randumb AI pool on accident and that was sorted out.

I'm unsure what it is at the moment due to my AI being a mess of variables. Sorta stumped and more than a bit frustrated though I'm slowly worming my way through it. Not much else to say beyond tomorrow I'll try to think up things more interesting to say. The situation at hand is taxing me a bit and I have some mundane things I was going to work on as well as this that are leaving me a bit brain dead for writing an interesting post.  So nothing interesting till tommorow.

Tuesday, August 30, 2011

Building a better brain

Not much to say but making this quick.

I've come up with the basic functions of the AI. For the most part It's driven by what type it is which sets some of the initial variables. Easiest thing to set up is percentage of each pool goes into pool. Each pool has two numbers per AI type. The first indicates how many it takes, second indicates the face of the die it takes. I didn't want to make it complicated so face is determined by lowest, heights, and random which just takes anywhere form the sorted dice list. Hopefully this gives the monsters a somewhat knowable action without you being able to always predict it.

It's defensive set up may change from round to round just like the players. It may have a favored defensive set up that when it hit with a punisher move for it It'll shift to a regular dodge periodically if you try to repeatedly use it. The only problem I see here is that punisher moves do a lot of damage, so much it may be a bug and I may have to bring out the debug code just to double check.

After that is it's own use of punisher abilities which I have explained before. Though I will give a brief explanation here. The AI will roll some dice when it sees  a defense used it is allowed to exploit, if it sees that again after the rolled turns it will set up the edge ability in one or two turns. This may have a few holes in it but I don't want teh ability to just chage defense every turn to negate the enemy ability to use edge abilities, IE it sees you used block so it prepares armor breaker next turn which you use dodge where it does nothing and then you go back to block repeating the cycle and just making it use edge for no reason.

Other than that it's coming along decently. Going to try and get down the rest of the basics in the AI class tonight and see what tomorrow gets me to do.

Monday, August 29, 2011

To AI and beyond

Well finally figured out what my problem was. After getting tired of looking for the print statements manually I just used find function to scroll through them out. It seems I had made a debug method inside the charcter class to display all the pools and this is where the debug spam was coming from, for some reason I could not see the debug in character_debug_pool_list() unless it was commented out.

So that is taken care of for now. Now I am working on a more inteligent AI system. Currently in a text file is some mental sorting going on about what variables I should have and what basic procedures I should go through. This may develop into it's own class but I'm not sure yet.

The basic idea is to let it "see" that someone is blocking then possibly use armor breaker later to maximize damage on the player. The same is true for the other punisher moves. This leaves dice pool manipulation up in the air, but I'm not sure if I'll even be having that for most monsters. So far it's getting organized and looks alright but I'll have to start testing it.

Beyond that is actual demo. I can simply set up "choose from this list of monsters to fight" and have that sort of demo. It'll work but it seems a little cheap. I should at least try to turn it into a simple game of sorts, maybe even have some leveling up as it is a RPG but that is for later. Though thoughts on it is ever X levels gain another dice to roll and maybe just standard +1 hp per level. Maybe even throw a weapon or two in there for increased damage.

Wednesday, August 24, 2011

AI concerns and clean up.

Entering in the punisher move for bonus against parry and thinking about AI while generally cleaning it up. Not much to say about it so I'll dive into what I can discuss.

The current thought is how is the AI going to have and use edge abilities. For the most part they are specialized and require some "thought" behind them in use. One thought is that it can "cheat" and just have a timer to see if you stayed in a defensive position for x turns. It's simple and effective but unsatisfying. I don't want to make this too complex so I decided having some random dice maxes based on what type it is. Give it a chance to suprise a player while having a tendancy to lean towards one type.

Beyond that I think I'll have the AIs picking pools be very simple, possibly stupidly so. At the moment I have little idea on what is the best strategy for going about an turn though some ideas have been thought of. It's a start at least.

Saturday, August 20, 2011

Quick update

Due to family things and the game later tonight I'll just be putting up this quick update.

Currently have been coding in Combat Test Project to get the counter effect in the parry defense. After some viewing of how the "make attack" method has bloated I decided I need to trim it down and separate it into useful components.  Got the bare parts seperated to allow counter attack to work.

For counter attack I've been stuck on for a while. It's a passive effect that comes along with using the parry defense type. For a while I've been struggling with how to implement it, the basic idea of this engine was to allow you a lot of control of how you defend and attack. The first blush idea was to allow a new smaller pool to be rolled from the successes on the attack but that seemed random. Going off the defense pool seemed silly and going off the attack pool seemed a little too much of a guarantee of a second hit if you're on the offensive.

I've decided to just take the solution of using the attack pool with some penalties to it. It's not the most intersting solution but it'll work for now. As it keeps turtling strategies to a minimum by dividing up potential defense pool dice.

As for next steps I need to get this attack method cleaned up. This means separating all the bonus and penalty searching into multiple methods which is a chore. Though for my piece of mind when working on this it needs to be done.

Saturday, August 13, 2011

Bugs and addition

After losing cords, buying new ones, and getting caught in the rain I decided to get some coding done. Just simple addition of the defensive side of dice manipulation. The things I found made my mind spin a bit.

sums it up in bad mspaint
Found some serious bugs and some serious basic mistakes that I could chalk up to flipping my variable check format between abilities but still was inexcusable. It's a bug that the code runs but it doesn't crash the program when  encounters it but still produces wrong results. Like accidentally forgetting to convert from metric to imperial for one step the instruction sorta "work" until you look at the whole.

Never claimed to be the best programer but when I'm flatly disallowing my design decisions not to work is kind of disheartening. Well it was caught and hopefully fixed, I believed I had tested out but work now, though I'm going to debug this much harder later to be sure. That aside I did make a new feature with the place holder name of "spirited defense".

Spirited defense removes the highest die in a pool up to the max face*2 you paid for out of edge. Currently do not have this or it's defense pool wrecking sibling Spirited attack having multiple versions of itself but it should prove trival beyond whatever bugs I can make as I put in due to working on it. Along with this I decided to reduct the amount "armor" can provide. Previously it was gainable through using block defense which is a free and lasting effect in combat and it deducted 1d10 + 1d10 per 3 successes in the pool. With attacking being the same type of formula for damage this meant a lot of soak and even the possiblity of a great attack where you roll three 3d10 dice being absorbed because the armor rolled a 10. I'm not quite a fan of percentile reduction at the moment so I decided to let the armor roll be 1d5, at least half the time when the dice are rolled it's a guaranteed amoutn of damage on a die by die basis. I may crunch the numbers later but for now this works.

So with that out of the way have you guys ever come across your own work at a later time and found it quite lacking? Especially if you swore it worked and was quite good.

Thursday, August 11, 2011

Combat check list

Well I have been getting a bit lazy on the Combat Test Project work so I'm going to rectify that. So today a little check list for getting this to completion. So a simple little list centering around what I should focus on.

  • Engine
    • Basic engine DONE
    • Useable I/O DONE
    • Modular and expandable use
  • Abilities
    • Basic attack DONE
    • Attack Options IN PROGRESS
      • attack degrees USEABLE
      • Punish abilities
    • Defensive options
    • Dice pool manipulation abilities
  • Enemies
    • Basic AI DONE
    • Not dumb AI
    • Actual enemies
  • Usability
    • Mistypes do not cause crashes
    • Normal people can navigate menus
    • Not annoying
  • Unwinnable things
    • Bugs
    • Tested balance
    • Insert fun
    • Good tune up
So looking at that, not too horrible. Not too good but it's something to start working more on. Engine for all concerns is done. Unless I want to do all the unique hit descriptions and such it suitably works right now. Useable input output is for testing purposes, allows me to test everything and see results. this means debug code everywhere that I may have to edit out later. Modular and expandable use is already underway. I have this entire system setup to allow multiple monsters or playing characters in theory. In actuality I don't think it'd work well for players as it's all keyed off a single Character object. Though it is feasibly changed later, or even through array use.

Abilities is where I want the real meat to be. I currently have a small list of basic modifications and a few choice abilities to use that I don't think is enough but is "enough" for testing purposes. Punish abilities I need a few more of. Defensive options are nearly done as soon as I figure out how I want counter to work. Dice pool manipulators are half finished as I want to do the defensive portion of it now.

Enemies is a bit of a struggle. I may keep them at randumb as I call it for simplicity sake but I want some chance of it avoiding punishing moves and using them on the player which will get hard. Nothing too complex and not completely random.

Usability is one I'm not too keen on doing. I'm a very prototype making person, right now this is "useable" even with all it's input errors and befuddling menu loops. Right now it's the very bad state of needing to know what you're doing, something I hope to fix when I throw it up on here.

Unwinable list is the programers never winning portion. Bugless code that works right in all instances and does what it's meant to do. Combined with my own ideas of what it should do it's there just to remind me to go over it more often, I'll never find all the bugs nor will I get ti perfectly balanced. I just have to try for it. Good tune up will be me making things less spaghetti code, the attack method right now is laughably large and needs to be broken up into methods. How small of methods is the unanswerable question for me.

Wednesday, August 10, 2011

Family dinner

Just a little update. I got swift strike the "slow initive" punisher for combat project. Not hard to code but I did a lot of upkeep in moving around methods and trying to divide up the workload to keep it from becoming spagetii code. The main damage engine is the next on the list for this. After that some thinking it seems, but I may start finalizing it to throw up some examples on here.

What's been keeping me away from this besides my own laziness is general job hunting and today some family dinner. Not complaining, I love food I don't have to cook. It just always tastes better. Today was a sorta special occasion a cousins birthday and simultaneously wishing him and his sister well as they go up to college for the year. Hopefully do better than what I did.

Food itself was good, nothing you'd find at fine dinning restaurants but home grilled and cooked food just has something for it. Among the home made dishes my Grandparents made there were something called No name steak burgers they picked up. These slabs of frozen meat were alright burgers of large portion size. Usually I'm quite good at eating but these things are still leaving me a bit lethargic thoughly luckily not sick. Seemingly have a problem of eating some types of food if I don't eat them on a bi monthly basis.

Anyways not much to show for this post. Seems to be the season for cookouts and such. While I like the fall and winter that follows a lot of people are dreading it. So with that does anyone who's still in the summer months have any plans before the fall officially rears it's ugly head?

Tuesday, August 2, 2011

Ahead of the curve

This slightly relates back to yesterdays horribly long post. Only it won't be long and it's less ranting and more about Combat Project.

So currently initiative in combat project is based on taking X dice from your initial pool. Or none at all for a zero.As it stands I've found it quite useful in these testing runs to put nothing in the initiative and put that die in attack or defense. This seems cheap as right now the  AI always puts a die in the initiative pool making you effectively have one more die in exchange for always going second.

The first idea is to force the player to put a die in the pool. This seemingly goes against my idea of how much control you have. If you rolls were too high and want to go second you're left hoping the AI put a higher die in the pool. The second idea is expanding on the edge system. Having a "first strike" attack that allows the person to get a bonus of some sort on the target, what yet I'm not sure either damage or bonus to hit which can easily translate into damage. This is probably going in one way or another as it is a risk move for the player too. They could pay for this and put in their greatest die or dice to guaranty going first at the expense of attack pool or defense pool. This adds a bit of risk reward in setting it up as it took some edge and now it takes you hoping to get a first hit. Third is, multi attacks.

Yesterday I discussed the main sins of multi attacks and am very weary about putting it in system. Namely just how much should an extra action cost and if a character will just pay that and nova with it and other edge abilities. Allowing more than one attack a turn also opens another can of worms here, as the attack bonus has already been set so either nothing new happens or more damage is inflicted. This said the basic idea was that if you have twice the initiative of the opponent you would go on your regular initiative and then once again at the end of the round for another regular attack. This does once again attempt to force you to put a die in the initiative pool but it is giving you a choice. A poor solution possibly but it does allow you to put a lot of initive in the pool for hopes of achieving the double attack result. It may even be a good edge idea but for now I'm going to think on it.

Thursday, July 28, 2011

Bugs and coding

  
Bugs, from this lovely site for getting rid of them
So after yesterdays coding tutorial I decided to work on combat project. It was a very fruitful endeavor in one way. Discovering horrible horrible bugs.

So I was working on spirited attack idea. It was an effect that happened when you attacked an opponent and manipulates their attack pool. It plainly removes the highest die that is under twice the edge you spent. I was going to allow multiple purchases with it, but for purposes of getting this done it's only one die at a time. Still if you pay enough you will get 1 success, possibly 2 removed from their pool which is very useful. Latter I'll put in one of two systems, multiple values to keep track of just how many dice and the values you are trying to remove or allow you to take multiple dice of the same value. Second one is easier to program in some regards and I like how it forces you to choose what dice to use instead of throwing as much edge as you can per turn to pick off dice. Either you choose to stick with low numbers and risk it taking no dice out, or you pay a lot for higher numbers.

This said it was looking good and I implemented it well. A few problem like not actually reducing edge points  a few times an a math glitch but nothing major. This was until I saw how the hit system was working.

The current system is that attack value and defense value is tallied between the ones engaged in battle. This is done by calling some methods with modifiers to the TN number on both sides and simply using subtraction to see who won. So it goes attack_success = attacker tally - defenders tally, if attack_success is greater than 0 it's a hit. Everything seemed fine until I looked at the method.

methods can pass variables by putting it in  between brackets. If you've done some math functions such as x(y) comes to mind. In programing you can stack this so x(y(z)) can happen. I made an error of forgetting a bracket running the code and getting an error saying I forgot a closing bracket, mindlessly looked at the code and slapped it after the defender tally method, containing it with the modifiers for the attacker method. This effectively made it so that the attacker was getting a bonus chance for extra successes based on how well the defender defended. A big whoops and invalidating a lot of how I thought the system was working.

So that's fixed and I'll be double checking it more, I may also think on solving some menu problems soon, because hitting enter a few times to skip over edge when I don't want it is anoying. One solution is to make a variable to serve as a flag if the user through the edge command sets it, without it set edge donation won't appear, but that seems rife with possible annoyance if you forget to set it, then after you get your edge you want to unset it. Possibly not the most elegant solution. Since I am using terminal based prompt I could include the flag in choice typing. Enter the action selection followed by a  - and you skip edge. That is for later though, I have to see if my system is fundementally broken after bug fixing though.

Sunday, July 24, 2011

Strange weekend and updates.

So cat sitting is done. A little late in posting this because of some things that went on though. Between hot weather, randomly going to family dinners while still being an hour round trip, phone tag, and the usual weekend plans not much done as I thought. Either way progress is progress.

I have put in the ground work for the Edge abilities. Edge abilities use "edge points" or whatever I decide to name them later. You gain edge points by taking dice out of the pool rolled at the start of each round. From there you go about as normal distributing points to initiative, action, and defense. I have two currently in the list, armor breaker and "spirited attack" but only have armor breaker currently working.

Had a long list of debug problems that popped up and while stupid were not easily solved. Mostly my fault do to me putting down a lot of code without setting up something to test it, so a few mistakes compound and become somewhat  harder to find. Anyways a bit about the idea of the edge system.

The edge system is yet more tactical choices in battle. The thought is that if used properly it can let a well thought out battle plan take down a powerful foe or allow a character to lose less resources through battles.I don't quite want this to be a "spam your largest move" system but still have some major effect in game. So the edge points starts out empty at the start of every battle, filling up the pool is risky as it takes away from the rest of your pools. In fact you could fill up your Edge points quickly if you leave yourself vulnerable which adds to strategy and risk vs reward thinking. Currently on the idea list are punishes abilities and general pool manipulation abilities. Punishes abilities punish the opponent for choices in defense or attack, so if you think you have the foes strategy down you can tear it apart. Though since this isn't a player only system with a little AI I could possibly keep a player on their toes if they try to abuse certain aspects. The other is pool manipulation, at first blush I have two ideas for it.

The first like Weapons of the Gods idea of floating the dice into the pool seems natural, though it may be a little too powerful with no restriction so I'm thinking more on that. After that is modifying the enemies pools. The one I'm currently working on is removing one die from the enemies defense pool of a value equal or less to half of the edge spent to use it. The idea being that a large storage of edge could leave an opponent defenseless for a turn but may be too unfeasible to do it correctly. As these pools use 10 sided dice to guarantee you remove a die from the pool you have to bet 20, if you knew exactly how much the AI puts in their pools you would have to bet 20 per die. No refunds of any sort if you only remove 1s from their pool.

Armor break is currently a type of "punishment" move. If the enemy is using the block defense choice it'll give a better chance for extra successes for the attacker and make it harder for extra successes. Currently costs 5 edge, meaning you have to remove a 5 or higher dice from your pool for the edge pool to use it. This may be making it too powerful. As it stands I've seen it take out the opponent in one good hit more than once. With a little planing I can do it on turn two which isn't something I wanted. It's part of the fact that successes translate to extra damage but it's also because of how cheap it is. There is nearly no risk unless you roll a pool with no die individually being above a 3. So some more work needs to be done.

Though as it stands the attack tags I'm using are working well. Currently when an edge move is selected it appends it's tag to the end of the users attack_tag list then the attack method takes care of searching for them in the right spots for their effects. At the end it empties the list so there is no chance of accidental repeats. I mention this as I have in the past used libraries or regular variables to check to see if they were set, and each individual one had to be zeroed out through a method. I'm unsure if it's faster that way or not right now but due to the fact this isn't a simulation any inefficiency will be negligible hopefully. Either way I should keep an eye on it.

Monday, July 18, 2011

High heat and goalposts

Living in an area known for cold weather and white outs does leave you quite vulnerable to heat waves. Also having no reliable mode of transportation exacerbates things. The past weekend was the start of the heatwave up here so it's been a bit of suffering, combined with the fact I did a little leg work for job hunting I'm quite beat today. So short post but I have done something more than make a post about hot weather.



Soldiering on though I started putting in the ground work for the "edge" system. While not thrilled with my first draft of it I'll work on it and see if anything else shakes loose. I have it set up in the ability to accumulate "edge" that can be spent as a free action for effect. At the moment it's just a trivial check of activation but it's enough to show me bugs aren't popping up at the moment. I know they are somewhere deep in the recesses of my code but they haven't been crawling on the floors yet.

My first goal is to put in some of the opportunity skills that can make fighting blocking or guarding foes easier. With that I'm going to have to change up AI a bit, so seeing enemy X does not mean "drop at least X points into edge and spam armor break". I had the thought of taking some of my AI programing ideas and applying it for this but it would be far too early and complex. After that I want some dice pool manipulation, I have some rough ideas that I don't know if they are overpowered or not, but that's what testing is for.

Saturday, July 16, 2011

Critical development

So with some basics placed down for Combat Test and am not quite satisfied. With thinking on this I figure I could chat about design choices in games. Better than a story that may not be quite as entertaining as these rants.

So you always have two choices when you want to add something to a game. You make a new system entirely or you modify a system you already have. This is just my personal opinion but modifying your basic system is more appealing to me. I've run into games where you had to know one too many systems that weren't related to anything else. A common one that's been showing up a while is minigames straight out of the flash that are completely separate from everything else involved in the game but have seemingly become a staple. For the first few times they seem unique and even entreating though it wears thin.

Newer Pen and Paper games have gone the opposite direction, they seemingly rarely go away from their established main mechanic in any situation. The olden days they had tables upon tables for how things worked. It was quite a mess of referencing and hand waving. While I do prefer this sort of approach a bit more variety could be worthwhile. The image at the start of this is quite a few examples of taking a mechanic and changing it slightly without actually changing the final outcome. You roll the die you get a number and you use it. It still does the same effect though it's 'different' for better or worse. In fact there are times where the worse mechanic for the outcome is there to balance out some reward for it succeeding.

With that said I shall dive into what I'm using in Combat Test. You choose an action primary an attack, then go about rolling a pool of dice. From here you distribute these dice to an initiative pool, an action pool, and a defense pool. The action you choose could modify these a bit but for the most part success are counted like this; 1 per dice in the pool then 1 more for each die over or equal to the value being tested (attack value or defense value both defaulted to 7 right now). Performing an attack for instance causes you to test against attack value with the dice you allocated to your action pool earlier, the AI tests defense value with the defense pool it determined, if your attack is higher damage dice are rolled and you go on. The entire idea of the system is that you can't get everything, you want more attack you sacrifice defense and initiative for it. Right now Initiative is kind of pointless though there are some weird things the current system allows for it namely guarding for two turns if you go first on initiative on the first turn then go second on the following, it's somewhere between a glitch and a standard  idea as the guarding status ends when your next action is executed.

The current thought is to add things like feinting or other techniques like stunning possibly while using the current system. Though that seems cheap though not as a cheap as my other idea. An idea taken form Weapon of the Gods was to have something of an "edge" pool. By taking dice out of your pool before assigning it to others you increase edge. Basic thoughts right now is spending that edge to cause the possibility of less successes in the other pool or thoughts on things such as reducing armor if the opponent is using it. Though like magic this seems a cop out.

So a bit of a standstill on this lazy hot day. Though I have managed to fix a few more menu things and take out a bug or two so some progress.

Wednesday, July 13, 2011

Short post, work day

Just a short post today. Got a little work to do through family with setting up computers and making backups. Fairly simple stuff but it's time consuming and tedious, and they had no idea to do. Made a bit of money though. Though their DVD burner was not as functional as they said. This took what I thought would be a two hour job and nearly tripled it.

I did manage to get some moderate coding done though while I wait between CD burning. Project Combat Test got a bit of a ideas pushed into it. Added the current list of defensive and offensive options. Not quite liking how I put it in but it's working now. The current options modify your basic attack, more accuracy at cost of damage or other way around, or modify how your defense works. It seems to work in theory but less accurate more damage attacks aren't seemingly doing much though it's niche was attacking low defense creatures. Right now I have a stand in that's a replica of the player so it's very miss or miss on working.

Other than that a bit of crunching of numbers for a friend over at his blog. It's a semi silly Pen and Paper game based on the Japanese idea of sticking random guns and aircraft parts on girls and sending them to fight. I did a lot of formatting of the current alpha PDF and we need to playtest the thing badly. All in all it looks like it could be fun to a few people so a project I'd like to help him finish up. Just wish I had some more time but looks like a few games will finish up soon and we'll get things sorted out.

Friday, July 8, 2011

Programing Progress

Been two weeks and I haven't gotten as much done as I wanted for Combat Test. Though that seems the standard when left to my own devices I get no little projects done, when I have deadlines for serious things I manage to find the time.

At the moment I have it one on one system. I have a basic set up for being able to change that in the future but at the moment testing to make things work out alright are top priority, I can add the wrinkle of three or more combatants later and pull out hair debugging it. The system was inspired quite a bit by Weapons of the Gods which I talked on in a post a while ago. Weapons of the Gods had a mechanic called the river where you could store good dice rolls and use them later or even used the ones saved to vastly improve your current dice roll. While that is interesting I'm taking a different take on it. The player chooses an action, the pool is rolled, then they move the individual dice to a "speed" pool, an "action" pool, and a "defense" pool. At the moment you can choose to put no dice in any of the pools, with the exception of defense as that at the moment takes any left over dice, but this may change in the future. From there it's success counting to see if the attack is successful against the opponent or not.

That's the basics of the system. Right now two things are being debated on adding and have had the groundwork put in for them. The first being varied defenses. Each character can change their defense set up on their turn and it'll take place when their initiative comes up. The basic is just a dodge, nothing special if your defense pool beats the active action pool for an attack you get to ignore the damage. After that is block, which lowers some of your success for your block pool, though even if the opponents attack succeeds you get a degree of damage deduction. The last defense option is parry, where if you are successful you get a counter attack. I am not quite sure on the mechanics of it as this could easily be an overpowered maneuver which may be part of the hold up on it.

The second system I've been working on and finally did enough testing to be happy with is a d20 standard. Accurate and Power attacks. You sacrifice some successes, thus missing more, to deal more damage. Or  you sacrifice damage to hit more often. A bit of tweaking got it to numbers that I was pleased with and not making the normal attack worthless, though actual testing could be worthwhile.

Beyond those improvements I'm going to have to think a bit harder about things to put in. Could do some special skill or magic system but I would rather wait on that. Those just seem to be a cheap solution that isn't adding to the system right now, not saying it couldn't be added in.

Outside of the Combat Tester front I did some looking to see if I could get python to read single characters for some fancy output possibilities. I found some samples and a bit of playing with them and it works easily enough. Though it though sadly it makes it OS specific which irks me as python is a very cross system interrupter.

Monday, July 4, 2011

Battle Formulater Scribbles


Suddenly, out of nowhere a horrendous formula. Technically not even all of it but I'm not encapsulating it in another font 60 set of parentheses and multiplying it by "attack stage".

That Formula up there is from as near as I can tell is the Pokemon damage calculation equation. A bit of Googling lead me to a certain web page and I'll take the benefit of the doubt on it. Math oddly enough is not my strong suit so excuse the horrific display of that, I figured it looked neater than the typed in one line my source provides. Though why this formula? Well I'm getting into damage mechanics for Combat Tester and Pokemon formula always comes up when I think about damage.

First a little story. My first RPG was Pokemon, kids in middle school played it and I was interested so after some grade and favor trading with grandparents I got a game boy color and red. There starts me maxing out my hours in the time played. Many years later and a few scraped projects ago I look into how Pokemon worked as well as a few various combat systems I have played only to find some of the most hard to follow and mind boggling decisions in design to my eyes. They just seem like needless obscuration of what your stats actually do. I may have been raised on computer RPGs but I honestly prefer the simplicity of Pen and Paper resolution of damage for the most part.

Now onto the here and now. So after evaluating the damage system of purely being attack successes - defense successes I came to the conclusion that I paint myself into a design corner with that. Instead using a commonly done solution of dice+modifier-damage resistance to get that job done. Specific details as to how I'm getting the numbers and such would be a little long for a post topped with a monstrous formula so I'll wait until later to go into those details. While not as unique as I like it'll work for now, I'll work on it more to see if I can go anywhere with it. Though it does open a few combat options I like, namely reducing or increasing your attack compared to your final damage.


In other news I'm going to be shooting for getting/starting a blog up every day around 5 o'clock central. With the current unemployment going on I could use something besides my Tabletop game schedule to set something up for me.

Edit: Happy forth to those of you in the United States. It's too hot and I'm without transport to care or get to the festivities.

Saturday, June 25, 2011

Weapon of the gods and combat testing

Haven't been posting as much due to house sitting. Something about having access to cable and more food than I could buy in a month has made me as lazy as the cats I'm here to watch. Either way on with the blog.

So I've been playing game designer again and trying to come up with a more complicated than usual combat system. So as it usual goes with my designs I wanted to see what else was out there and did some digging through a few rule books and dug up a gem called Weapon of the Gods. A self proclaimed wuxia role-playing game with special effect martial arts which include a technique that will break apart your armor and cause you to lose limbs if you're unlucky. For how campy most martial arts films are this is taking itself decently serious, lots of 'historical' fluff in there and a lot of techniques. The system is a dice pool that uses matching, no successes or cumlative adding though. It takes the interesting approach of using d10s and having the number you pick be the 1s (a zero in 10s case) and the amount of dice matched being the 10s. So rolling 6,3,3,0 lets you have the choice of 10 (set of one 10 die), 16 (set of one 6 die), or 23 (set of two 3 dice). So the craziness is a little toned down from things like frameworks matching dice pool system for the number it can generate. Beyond this intersting take on dice pools is what is called the river.

The river is a very crunchy and somewhat narrative idea where you can save dice for latter. In our pool we rolled before we had a set of pair of 3s. After we roll we go through the "phases of the river" first phase is to wash out what we have in the river, also known ans plainly discarding the dice we have saved there. Each scene starts with no dice in the river so you can't keep your 9s sticking around to save you when needed. To get dice into the river after you "wash" them you can float in anything from a set of 2 or more dice. You can just put one in or both in. With the pool above we could float in the two 3s as insurance for later, though this would have to be a legitimate roll not something the game defines as a 'style' roll which will come up in a minute. After this you enter the "flowing" phase where you can move dice out of the river and into your dice pool so that you may use them to generate the dice pools results. So for example later when we roll nothing but 1 sets we could flow in the two 3s and have at least 23, or we could be waiting for 3s to be rolled and roll a much higher possible number.

Now I mentioned style above, style is generally skill checks for mundane things, or pointless things that you will succeed at regardless of your skill at it. Getting the attention of a friend across a room with a few people, climbing up the ladder, other silly things you want to roll dice just to see how awesome you are. So for giggles you order noodles at restaurant and stay you want a style roll for it, GM rolls his eyes and asks for the attribute and possible skill in question and you pull out something around 30s just to say you made the cook weep with your love of the noodles. Silly idea but style checks apply to something else, damage. Damage in this game is determined by how much you pass the targets defense. For every 5 over you roll you get another die in the damage pool.  From there it's standard pool reading though you can flow in from your river some 9s to put a serious hurt on.

Now there are other interesting things that I could talk about concerning such wonderful euphemisms such as yin-yang warrior but for now onto my little project.

The actually straight up manipulation of the dice pool got me thinking a bit for at least the basis of what I'm thinking of playing with. Every rpg system I can think of besides Baten kaitos(which used a card based dice pool like system) just has you select an action and just watch the results. So after reading through the weapon of the gods system I wondering if assigning what you roll could add an interesting element to
this. I don't know how valid it is but that's why I want to try. To follow my computer science roots thinking I'm following the KISS rule (keep it simple stupid) and just going to have you able to assign dice to your initiative, action, and defense pool. From there your chosen actions play out as normal, so far I'm seriously lacking in them but I have to see if the current system pans out.

And as a bonus my first image, it didn't feel right at the start so here it is. I'm programing in python cause I haven't been bothered enough to get oracle or C family compilers on here.





Got most of the tools finalized and am starting to play with actual combat mechanics. Learned more things in python recently, list comprehension as I'm showing off a bit can't believe I wasn't taught that in college. All console based, my philosophy is if I do it right I can just use another shell to output it correctly in a GUI anyways.