Arcen Games

General Category => Bionic Dues => Topic started by: nas1m on August 05, 2014, 08:11:05 am

Title: New conduct idea: No Time To Grind
Post by: nas1m on August 05, 2014, 08:11:05 am
Just an (unfinished) idea I just had.

The Motivation:
I often find myself wishing for being able to play shorter, more streamlined campaigns of Bionic. This may be caused by my playstyle (I tend to go after every bot in each mission and check every piece of loot for benefits), but even if going after each and every Robot Command Center, the remaining number of (25? 30?) days still feel fairly long to me. I would prefer a duration of 10-25 days/missions here.

The Idea:

To let the player have a chance equipment benefits would likely have to be scaled as well as said above - at least somewhat. But if we scale them by the same degree (i.e. 2x), it would likely be no additional challenge, right?
This is the part where I am not yet sure of how to accomplish this best :-\...

As I said, this all is still fairly half-baked, I know, but maybe somebody is able to fill in some of the gaps :).

What do you guys think?


EDIT:
Thinking about this further, maybe there is no need to scale anything at all to make for a shorter, more streamlined game (of approx. halved duration), aside from the following:

Stats would stay somewhat lower all through the game, but this would not necessarily be a problem right?
If it is, this could be remedied by "simply" using a progression that runs twice as fast, both for bot stats as well as Exo part stats. At least in theory?

If then additional challenge is wanted aside from the simple reduction of overall campaign length, these factors could be tweaked differently for both factions. Thoughts?
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 05, 2014, 09:30:50 am
Something like this could work, yes, though I'm not sure what you mean by halving map size.  If you mean the overall city map that basically needs to fully populate its graph or it won't work right.  But like you said it's not strictly necessary that it do that.

Anyway, I have some ideas on how to make the customization phase not take so long (in terms of how long it takes to check and consider every piece of loot, etc), and I think that might help with the game feeling too long. 

But after that we could also add this as an option for basically a half-length campaign.  Possibly by just making every normal mission take 2 days instead of 1, and that might handle it right there.


Overall schedule-wise I'd like to:
- get another polish update out this week
- next week, if things are looking stable, make it an official update
- the week after that, start on more polish, including the customization changes
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 05, 2014, 10:00:55 am
Something like this could work, yes, though I'm not sure what you mean by halving map size.  If you mean the overall city map that basically needs to fully populate its graph or it won't work right.  But like you said it's not strictly necessary that it do that.
I was indeed thinking about a smaller city map with half as much missions. The thought behind it being that the player might have trouble to reach certain "juicy" missions (like Factories etc.) otherwise. Do you think it could work to tweak graph creation in a way that puts all the juicy stuff within X hops of the player HQ and simply omit to show the missions on the outer rim?

As a related question: Do you think it would be possible (mid-term that is) to bring Bionic to take handcrafted maps and mission layouts? I am thinking of hand-crafted  alternates to port city here. As I said probably waaay mid-term ;). Just interested whether this is at all possible given Bionic's overall code structure.
 
Anyway, I have some ideas on how to make the customization phase not take so long (in terms of how long it takes to check and consider every piece of loot, etc), and I think that might help with the game feeling too long.
I would definitely appreciate this, yes. Sometimes I think the problem is the sheer amount of effects every piece of loot provides. Weighing one a given combination of N benefits with another combination of M benefits really gets hairy after a while...

But after that we could also add this as an option for basically a half-length campaign.  Possibly by just making every normal mission take 2 days instead of 1, and that might handle it right there.
Nice! I would enjoy a shorter campaign very much I think (and I think I am not alone at this).

Overall schedule-wise I'd like to:
- get another polish update out this week
- next week, if things are looking stable, make it an official update
- the week after that, start on more polish, including the customization changes
Sounds good!

Did you have a chance to look at my propositions from the 1.012 thread? Anything doable among them?
I think these would make the game a lot smoother/potentially less frustrating.

EDIT:
And if we really get to call the new "fast" mode/conduct "No time to grind" we are bound to think of a way to introduce a DiggleBot using the existing assets :). Fair is fair ;D...
Title: Re: New conduct idea: No Time To Grind
Post by: ScrObot on August 05, 2014, 07:53:22 pm
I'm not sure what you're looking at for customization changes, but I figured I'd dump a couple thoughts here -- I can Mantis them if you'd like.


Bonus!

Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 06, 2014, 01:51:59 am
I'm not sure what you're looking at for customization changes, but I figured I'd dump a couple thoughts here -- I can Mantis them if you'd like.

  • Not being to equip or sell items directly from the Archive view is annoying to me.
  • If the Store view could be integrated as another tab in the normal customize screen, that'd be really great. Right now there's no way to compare the items in the store with what you have equipped, which leads to a lot of going back and forth and guessing -- and if you buy and item you actually don't need, you're out a chunk of money due buyback being a percentage of the sale price. (Perhaps an alternative would be to allow 100% buyback value if you haven't gone into a mission since buying that item -- but that sounds like a lot of work too. ;))
  • With the above -- do we need "Equipped" as a tab? Does anyone actually use that?
1: Selling items is possible by now using shift+rightclick. I agree on the equip part :).
2: Seconded. I also mantised this somewhere.
3: Never used it. Seconded!

The bonus idea sounds useful as well.
Title: Re: New conduct idea: No Time To Grind
Post by: Aeson on August 07, 2014, 02:35:32 pm
Quote
I was indeed thinking about a smaller city map with half as much missions. The thought behind it being that the player might have trouble to reach certain "juicy" missions (like Factories etc.) otherwise. Do you think it could work to tweak graph creation in a way that puts all the juicy stuff within X hops of the player HQ and simply omit to show the missions on the outer rim?
An alternative to tweaking the graph creation could be to double (or maybe add 1?) to the city map mission/scouting range of each of the pilots. This would let you cover a similar fraction of the map to what you'd hit in a normal game, to keep the difficulty from jumping too much from being unable to pick up Epic exos, although it also makes the game a bit easier since it lets you be a lot more choosy about what missions you actually perform.

Another alternative would be for this setting to cause the outer rim missions to just spawn barricades and firefights so that while the map is fully populated and you can theoretically go anywhere, there's just little point to going towards the outer half of the map because all the rewarding missions are closer in. A further thought would be to create a special mission type similar to the firefights and barricades just to specifically advertise that there's nothing interesting but more of the same beyond this point, to avoid giving the region the appearance of being one of those clusters of less useful missions that might hide something interesting just a mission or two beyond the point you can see.
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 07, 2014, 02:44:07 pm
Btw, the graph itself, in terms of where the nodes are and which nodes connect to which other nodes, is not randomly generated.  That's the same every time.  The randomization comes in what type it assigns to each node (including the HQ node, and thus your starting position).

But Aeson's idea of just increasing the city-scouting-range of all pilots (probably by 1, at least for the first try) would probably solve the problem very neatly.

So basically this conduct could be implemented by two simple changes:
- Each normal mission consumes 2 days instead of 1.  Probably would leave the robot control centers at 5 days.
- Each pilot's city-scouting-range is increased by 1.  Axis still has the advantage there (since in graph-depth thing each "point" counts for a whole lot more than the previous one).

I'd rather wait until after the next official release so we can get some of the new goodies out to a broader crowd, but I'll certainly keep this in mind for then.
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 07, 2014, 03:28:58 pm
Axis still has the advantage there (since in graph-depth thing each "point" counts for a whole lot more than the previous one).
I don't think I get what you are saying here. Isn't being able to take missions one extra jump away exactly what Axis special ability is and what Aeson proposed as a "fix" for certain missions being too hard to reach?
Or do you simply want to provide the player with the visibility part of the ability, but not the ability to take a mission further than one hop away ????
 
I'd rather wait until after the next official release so we can get some of the new goodies out to a broader crowd, but I'll certainly keep this in mind for then.
Cool :)!
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 07, 2014, 03:30:39 pm
Axis still has the advantage there (since in graph-depth thing each "point" counts for a whole lot more than the previous one).
I don't think I get what you are saying here. Isn't being able to take missions one extra jump away exactly what Axis special ability is and what Aeson proposed as a "fix" for certain missions being too hard to reach?
Or do you simply want to provide the player with the visibility part of the ability, but not the ability to take a mission further than one hop away ????
I mean that all pilots will get +1 to that range.  So Axis's will still be further than everyone else.
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 07, 2014, 03:33:38 pm
I see. That would be okay I guess ;).
Title: Re: New conduct idea: No Time To Grind
Post by: Teal_Blue on August 09, 2014, 01:20:09 pm
I know Bionic is on a rather delicate upgrade phase, thank you for the nice additions and love for a game that is really cool!. But was wondering if the player could mod some areaa, as nas1m mentioned, (city maps and mission floors...) and if you could add the stats area and the art area for the enemies, then it could allow the players to add new enemies art and stats. I suppose we would have to be able to name them too wouldn't we? But if you did then the player could add  'bots or even aliens or humans or whatever, on new city maps and new mission maps.

That could allow the players to increase the difficulty of a the game, or for a single map, or change up map styles or the enemies, bots, aliens or humans etc that could be added to that map. It could mean a whole bunch of player added maps and enemies to extend the game life of Bionic.

Making some 'cake walk' maps for beginners or 'near impossible' maps for players that like that sort of thing.
Does that sound workable?

-Teal

Title: Re: New conduct idea: No Time To Grind
Post by: Aeson on August 11, 2014, 11:40:00 pm
This isn't exactly related to the topic at hand, but ...

But if you did then the player could add  'bots or even aliens or humans or whatever, on new city maps and new mission maps.
I don't know about the new enemy types, exo types, or mission types, but it is certainly already possible to create a new city map and associated grid, and it may be possible to have both the user-created map and the default Port City map in the game at the same time.

If you wanted to create a new user-defined city map, then there are two ways you can approach doing this: way one is to find the current city map information and overwrite it with whatever you want your new city map to be; there is a possibility that this will not work if you change the city map image size (4096x2400, PNG format) or the number of grid nodes (125 nodes and about 135 connections).

Way two is to figure out how to insert your own city map into the game. This would require you to create a new city map image (the one included with the game is in PNG format with 4096x2400 pixels; I don't know if it has an alpha channel as I haven't looked into it) and a city grid map (the one included in the game is a list in XML format and contains 125 nodes and a number of connections between the nodes), and I suspect that you would need to go to C:\Program Files (x86)\Steam\SteamApps\common\Bionic_Dues\RuntimeData\Language\en and edit the file a_bionic.XML found within that folder to include the lines

<ln id="CityMapType_Name_PortCity">Your City Name</ln>
<ln id="CityMapType_Desc_PortCity">Your City Description</ln>

possibly with modifications to the tags (i.e. you may need to change the name of the city in the tag name, though I would hope not). The city map image and the city map grid node/connection listing are found in C:\Program Files (x86)\Steam\SteamApps\common\Bionic_Dues\RuntimeData\Images; the grid node/connection listing for the map provided by the game is PortCity.XML, while the map image is PortCity.PNG.

Grid node coordinates appear to be pixel coordinates in PortCity.PNG, with the horizontal coordinate listed first. My assumption would be that grid coordinates start at 0,0 in the upper left hand corner of the map image, with positive down and to the right, though I may be mistaken on this. I do not know whether or not the game requires the map image to be the same size as PortCity.PNG is, but if it does, that image is 4096x2400 pixels, nor do I know if the game requires an alpha channel for the city map. Grid node connections appear to be point to point and bidirectional (i.e. you do not need to list node 18 as being connected to node 17 if node 17 is listed as being connected to node 18, which suggests that a good way of creating your node connection list is to do so in order until you run out of nodes with connections to nodes whose node number is greater than their own).

I was unable to find references to Port City, PortCity, Port, or City (case insensitive) in any files other than the ones I have listed above, though that does not necessarily mean that there are no additional locations which would require modification before you would be able to add your own city maps into the game. I expect that Way 1 would work, at least as long as the total number of grid nodes and connections and the image size were unchanged (it may work even if the total number of grid nodes and connections, and the image size, were changed, so long as the game does not check to ensure that these files match a certain set of parameters based on their default condition); Way 2 would be the better way to do things if it does work, but might not depending on what the game expects to see for a city map to work.
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 12, 2014, 10:03:14 am
The game does indeed support having multiple options for which city you play a game in (though it will just be one city per-game, no cross-city stuff).

But to actually add one (rather than replacing the port city one, which you could do by yourself) I'd need to add an entry to the city-type enum.  But I could add some "Custom" ones that would be ignored by the game unless it found matching files, basically what I did with the floor types and floor edge types so nas1m could mod those without competing for space with the stock assets.  Though there'd be a few more wrinkles in this case like having a separate language file (modifications to a_bionic.xml will typically be overwritten with every update).

Possibly something I could add support for in  the next few weeks, if anyone is actually serious about cooking up their own city :)
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 12, 2014, 10:48:33 am
The game does indeed support having multiple options for which city you play a game in (though it will just be one city per-game, no cross-city stuff).

But to actually add one (rather than replacing the port city one, which you could do by yourself) I'd need to add an entry to the city-type enum.  But I could add some "Custom" ones that would be ignored by the game unless it found matching files, basically what I did with the floor types and floor edge types so nas1m could mod those without competing for space with the stock assets.  Though there'd be a few more wrinkles in this case like having a separate language file (modifications to a_bionic.xml will typically be overwritten with every update).

Possibly something I could add support for in  the next few weeks, if anyone is actually serious about cooking up their own city :)
I would like to give this a try. Sometime ;).

Any chance to expose some mapgen parameters as well?
This could make custom cities really interesting...
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 12, 2014, 11:25:35 am
Any chance to expose some mapgen parameters as well?
This could make custom cities really interesting...
That would be considerably more involved, but it can be done.  I'd probably prefer that you tell me what you want done differently (or optionally differently) and I try to make it happen ;)
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 12, 2014, 01:25:13 pm
Any chance to expose some mapgen parameters as well?
This could make custom cities really interesting...
That would be considerably more involved, but it can be done.  I'd probably prefer that you tell me what you want done differently (or optionally differently) and I try to make it happen ;)
That mainly depends on how your mapgen works :).
What I would like to see is for example:
No idea what amount of control you can allow here as, as I said, I have no notion of how you are actually generating the maps we currently get :).
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 12, 2014, 01:45:00 pm
Oh, you mean mission mapgen.  I meant city mapgen.  Which right now is just picking what type each node is, since the placement and links between them are drawn from an .xml file.  Though there's no reason we can't have it procedurally generate such a map, the main barrier would be the strong potential for wild balance variations.

Mission mapgen is a whole other pile of cans of radioactive worms.  In order for me to do much with it, much less expose it to modding, I would first have to figure out what it's doing myself :)  I did very little of that side of the project.

That said, mapgen was actually written and tested as an external tool so that the results could be quickly examined, etc.  It's basically an extension/evolution of the similar tool used in AVWW/Valley2 for chunkgen.  I could ask Chris if I can just make that and its source code available; it wouldn't impact the game directly (I'd still need to incorporate and desired changes myself) but it would give enterprising players a chance to see what sort of changes would do what, and possibly identify places where more on-the-fly modding could be done (kind of like the slices in Valley2).

It would require a good knowledge of C# and a willingness to work in code that doesn't have many comments ;)
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 12, 2014, 02:01:40 pm
Oh, you mean mission mapgen.  I meant city mapgen.  Which right now is just picking what type each node is, since the placement and links between them are drawn from an .xml file.
Well, I guess I gotta take what I can get right ;).
Being able to pick the nodes would definitely a step forward, I think. Who knows, maybe Bionic will be your first title featuring Steam workshop in a few years ;D...

Though there's no reason we can't have it procedurally generate such a map, the main barrier would be the strong potential for wild balance variations.
In my book, this would not be necessary right now I guess. Being able to handcraft an alternate city is totally sufficient for me.
 
Mission mapgen is a whole other pile of cans of radioactive worms.  In order for me to do much with it, much less expose it to modding, I would first have to figure out what it's doing myself :)  I did very little of that side of the project.
I see :). No point in doing this until you can get some proper input, right ;)?

That said, mapgen was actually written and tested as an external tool so that the results could be quickly examined, etc.  It's basically an extension/evolution of the similar tool used in AVWW/Valley2 for chunkgen.  I could ask Chris if I can just make that and its source code available; it wouldn't impact the game directly (I'd still need to incorporate and desired changes myself) but it would give enterprising players a chance to see what sort of changes would do what, and possibly identify places where more on-the-fly modding could be done (kind of like the slices in Valley2).
I am a C/C++ developer by trade, but I would be willing to bang my head on this if you will let me. It definitely sounds like an interesting object of study. And since I would like to get into C#/Unity sometime in the future anyway... I would be very interested to fiddle with this a bit :D.

Can't promise when that will be, though...

EDIT:
It would require a good knowledge of C# and a willingness to work in code that doesn't have many comments ;)
Oh, I know what that means, trust me :).
Title: Re: New conduct idea: No Time To Grind
Post by: Teal_Blue on August 12, 2014, 03:50:05 pm
I'm beginning to think i am an 'armchair programmer', which is not at all. After listening to the nice descriptions of what i would need to uncover and where it is all found and what to do with it, it all went over my head.

Which makes me think i am good at daydreaming, but probably not very good at all for making suggestions that would really work, at least by me. But maybe some of the programmers in the forums could make it worth your while.

Anyway, thank you for considering my ideas, even if i am not very well equipped to actually do anything with them.
Take care,
-Teal

p.s.  well, after all my doubts, i ran across a GreenHeartGames Steamworks Integration Kit, for free for Developers and thought i would mention it. Even if i am not able to completely code, well, maybe i can mod a little bit, and the SteamWorks kit looks pretty cool for developers adding Steamworks to their games. Check it out, its pretty cool. :)   

http://steamcommunity.com/games/239820/announcements/detail/269407496738566853


Title: Re: New conduct idea: No Time To Grind
Post by: Aeson on August 13, 2014, 04:00:38 am
Quote
Possibly something I could add support for in  the next few weeks, if anyone is actually serious about cooking up their own city
I personally am not inclined to make any maps any time soon.

Quote
That would be considerably more involved, but it can be done.  I'd probably prefer that you tell me what you want done differently (or optionally differently) and I try to make it happen
Were I to make a map for myself, I think that the first thing that I'd want to be able to do, as far as tweaking city map generation goes, would be to add weights to each of the nodes to make it more (or less) likely for certain types of missions to spawn there, though given that it does not appear that any such weighting is present that seems like it'd be a significant amount of effort to add. A possibly very slightly easier form of this would be just a weighting for the likelihood of the HQ appearing/not appearing on the node in question. This would however also carry the drawback of potentially requiring a significant amount of additional effort on the part of the map creator, especially if the game were not set to provide 'default' weightings.

Another thing that would be potentially interesting for custom map generation is the ability to add a chance that a grid connection will not be present (e.g. node 1 connects to node 17 50% of the time rather than all the time), though this would likely require some additional pre-game map checks to ensure that there are no unconnected sections of the mission grid, and once again seems as though it would be a relatively large amount of work for relatively little gain. On the other hand, it'd give you a semi-random map to play on (possibly with a base 'skeleton' of grid connections that ensure that all map nodes are always connected to the grid somehow, with the random node connections coming afterwards). This, as with the above, seems as though it'd require a fair amount of work on your end before it'd be possible.

Aside from those, I don't know that there's much else that I'd want to be able to play with as far as city map generation went.

Quote
But to actually add one (rather than replacing the port city one, which you could do by yourself) I'd need to add an entry to the city-type enum.  But I could add some "Custom" ones that would be ignored by the game unless it found matching files, basically what I did with the floor types and floor edge types so nas1m could mod those without competing for space with the stock assets.  Though there'd be a few more wrinkles in this case like having a separate language file (modifications to a_bionic.xml will typically be overwritten with every update).
As far as the city-type enum goes: would it be possible to expose this in a text file that the game reads, rather than adding Custom_1, Custom_2, etc to the enum list? Then if I'm creating a map mod and nas1m is creating a map mod and we both want to use one another's map mods, I can use CityName_Aeson1 or something like that and nas1m can use CityName_nas1mA or something like that, and neither of us would likely need to worry about whether or not we both used CityName_Custom1 for our maps and have to go looking through the language files (or make anyone else go digging through the language files) to figure out which custom city each of us used. Or add a line to the top of the language file that tells the game to add a new CityName enum to the list?

As far as adding in custom city maps goes, being able to just have a mod folder where I could place a properly structured directory that the game reads and supplies the default assets if no replacements are produced therein for the map icons would be good. I.e. if I wanted to add CityName_Aeson1 to the game, then I'd find the Mod directory in Bionic Dues (or whatever equivalent you provided) and add the folder 'Aeson1' to that directory, and at minimum Aeson1 would contain an Images subdirectory with the map image and the node/connection grid and \Language\en subdirectory containing a_Aeson1.XML, which is the appropriately modified a_bionic.XML for whatever the map was. That might be more effort than you want to put into it, though, and certainly it's not a significant amount of trouble on my end to just put in an Aeson1.PNG and an Aeson1.XML file into the existing Images folder and an a_Aeson1.XML into the existing languages folder (or whatever the appropriate names would be if you created a hardcoded set of custom maps).

All this being said, I would most likely not take advantage of this except possibly for my own personal use. If you're waiting to add this kind of stuff based on the number of people interested in creating and distributing user-designed maps, you probably shouldn't place me on the side of the scale that says to do it.

Quote
I'm beginning to think i am an 'armchair programmer', which is not at all. After listening to the nice descriptions of what i would need to uncover and where it is all found and what to do with it, it all went over my head.
If all you want to do, at least for the time being, is to create a new city map to play on, then all that you need to do is get yourself a PNG image (maybe with alpha channel?) that you want to use for the city background, and then create a list of nodes and connections. At present, you'd rename your PNG image to PortCity.PNG, and you'd use an XML writer to turn your list of nodes and connections into PortCity.XML; both of these would be saved in

C:\Program Files (x86)\Steam\SteamApps\common\Bionic_Dues\RuntimeData\Images\CityMap

or your equivalent directory, and overwrite the current image and XML file. You can create PNG images (but not ones with alpha channels) using MS Paint, which I believe comes free with Windows, or a number of free image editing programs (such as Gimp or Paint.NET) which you can find online; many of these image editing programs also allow you to create PNG images with alpha channels if the game requires there to be one. I believe that XML files can be created by writing a TXT file in e.g. NotePad and changing the file extension afterwards, assuming that you properly format all the lines when you're typing; XML files may possibly also be written using Word and  Save As => XPS, and then change the file extension to XML from XPS. OpenOffice appears to have an XML writer in it, and it would not surprise me if some code editing packages such as NotePad++ included an XML option to help with formatting, though I do not know which ones do or do not.

As far as formatting the grid node/connections file goes, that appears to be fairly simple. The first line of the file must be <root> and the last line of the file must be </root>. In between those two tags, you have two sets of tags: the node tags (<node id="NODE_NUM" loc="NODE_X,NODE_Y"/>), and the connection tags (<con a="NODE_NUM1" b="NODE_NUM2"/>). The node tags come first, going in ascending order, and the connection tags follow. An example grid node/connection file for a 9-node map would be the following:
Code: [Select]
  <root>
    <node id="1" loc="10,10"/>
    <node id="2" loc="10,20"/>
    <node id="3" loc="10,30"/>
    <node id="4" loc="20,10"/>
    <node id="5" loc="20,20"/>
    <node id="6" loc="20,30"/>
    <node id="7" loc="30,10"/>
    <node id="8" loc="30,20"/>
    <node id="9" loc="30,30"/>
    <con a="1" b="2"/>
    <con a="1" b="4"/>
    <con a="2" b="3"/>
    <con a="2" b="5"/>
    <con a="3" b="6"/>
    <con a="4" b="5"/>
    <con a="4" b="7"/>
    <con a="5" b="6"/>
    <con a="5" b="8"/>
    <con a="6" b="9"/>
    <con a="7" b="8"/>
    <con a="8" b="9"/>
  </root>
This node map would give a city map that looks something like the following:
Code: [Select]
  1 - 2 - 3
  |   |   |
  4 - 5 - 6
  |   |   |
  7 - 8 - 9
The vertical lines and dashes represent connections, while the numbers are the nodes (with the node number corresponding to the number on the grid). The example grid that I created above would be 30 pixels wide and 30 pixels tall, so more than likely you'd want to use a much larger grid than the one I gave; while I don't know the image size as they appear on the map, the image icons for the various missions are each 64 to 128 pixels square, suggesting that you'd want a minimum spacing between grid nodes of at least 130 pixels, and preferably at least 250-300 pixels so you can see where the grid connections are. The grid map and the map image are easy to create, though the grid map is a bit tedious and the map image may require some degree of competence with image editing or creation software packages if you want to create a custom map image that looks decent (on the other hand, aside from image ownership issues if you're creating a map mod for distribution, I see little reason why you could not simply download an image off the internet and save it as a PNG file if you found an image you thought would work well as a background which was of a reasonable scale).
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 13, 2014, 04:15:36 am
As far as the city-type enum goes: would it be possible to expose this in a text file that the game reads, rather than adding Custom_1, Custom_2, etc to the enum list? Then if I'm creating a map mod and nas1m is creating a map mod and we both want to use one another's map mods, I can use CityName_Aeson1 or something like that and nas1m can use CityName_nas1mA or something like that, and neither of us would likely need to worry about whether or not we both used CityName_Custom1 for our maps and have to go looking through the language files (or make anyone else go digging through the language files) to figure out which custom city each of us used. Or add a line to the top of the language file that tells the game to add a new CityName enum to the list?
If Keith does this the way he did with the custom floor tiles this might not be an issue, I think. There he is only checking for files carrying a specific prefix (like "Custom_") which are then assigned an enum value in the order they are encountered. Since the remainder of the file name is freely selectable we should both (theoretically  speaking) be able to add our own custom maps to the same folder - presuming we add our names to the file name. All that would differ would be the internally assigned enum value, i..e likely where the specific map would occur in e.g. a dropdown. I might be wrong here, though.

As far as adding in custom city maps goes, being able to just have a mod folder where I could place a properly structured directory that the game reads and supplies the default assets if no replacements are produced therein for the map icons would be good. I.e. if I wanted to add CityName_Aeson1 to the game, then I'd find the Mod directory in Bionic Dues (or whatever equivalent you provided) and add the folder 'Aeson1' to that directory, and at minimum Aeson1 would contain an Images subdirectory with the map image and the node/connection grid and \Language\en subdirectory containing a_Aeson1.XML, which is the appropriately modified a_bionic.XML for whatever the map was. That might be more effort than you want to put into it, though, and certainly it's not a significant amount of trouble on my end to just put in an Aeson1.PNG and an Aeson1.XML file into the existing Images folder and an a_Aeson1.XML into the existing languages folder (or whatever the appropriate names would be if you created a hardcoded set of custom maps).
Not sure whether this will work for non-images, but this works just fire everything located in the RuntimeData folder using the TexturePack folder (see the readme there for more info on how to use it). Presumably this should work for .xml files as - well this is implemented in a generic way (what I think it is).
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 13, 2014, 09:30:57 am
Were I to make a map for myself, I think that the first thing that I'd want to be able to do, as far as tweaking city map generation goes, would be to add weights to each of the nodes to make it more (or less) likely for certain types of missions to spawn there, though given that it does not appear that any such weighting is present that seems like it'd be a significant amount of effort to add. A possibly very slightly easier form of this would be just a weighting for the likelihood of the HQ appearing/not appearing on the node in question. This would however also carry the drawback of potentially requiring a significant amount of additional effort on the part of the map creator, especially if the game were not set to provide 'default' weightings.
Weighting for normal node types could be an issue as the game already has a bunch of rules it follows to compute the number of each type to seed, and which types can go next to which others (mainly so the explosive depots don't get put next to anything too critical).

But weighting for the HQ node would be fine (as an hq_weight attribute on the node tag, I suppose), with it assuming a default of 1, and if you set it to zero it never gets picked for the HQ, and if you set it to some other integer it has that relative chance of being picked (so a "10" with all the others at "1" would have 10x as much chance of being selected as any of the others, though that's still a relatively low chance given the quantity of others).


Quote
Another thing that would be potentially interesting for custom map generation is the ability to add a chance that a grid connection will not be present (e.g. node 1 connects to node 17 50% of the time rather than all the time), though this would likely require some additional pre-game map checks to ensure that there are no unconnected sections of the mission grid, and once again seems as though it would be a relatively large amount of work for relatively little gain. On the other hand, it'd give you a semi-random map to play on (possibly with a base 'skeleton' of grid connections that ensure that all map nodes are always connected to the grid somehow, with the random node connections coming afterwards). This, as with the above, seems as though it'd require a fair amount of work on your end before it'd be possible.
Actually that'd be pretty easy, probably with a "chance" attribute on the con tag.  Having it handle cases where some permutations generate disjoint graphs would be somewhat more complex, but basically it could check all the un-picked links for one that would increase the connectivity, add that, and check again.


Quote
As far as the city-type enum goes: would it be possible to expose this in a text file that the game reads, rather than adding Custom_1, Custom_2, etc to the enum list?
That's not possible with enums, sorry.  They're compile-time constants, and changing the list requires rebuilding the game.  But as nas1m said, this doesn't actually constrain the filenames (except to require the "Custom_" prefix so the game knows it's meant to be picked up that way).

There's a bit more complexity on my end to make sure that loading a save with a different number of custom maps doesn't change which map (the image; the graph will already be saved with the game) you're on, but it's not a big deal to do.
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 19, 2014, 11:52:44 am
Did you have a chance yet to ask Chris whether he would be okay with sharing the level generator code?
Not that I have much time at my hands at the moment, but I would be really interested to have a look at this :).

i would even sign an NDA if you want ;).
Title: Re: New conduct idea: No Time To Grind
Post by: Hearteater on August 19, 2014, 12:01:48 pm
Just want to throw out that I think fewer total missions should be the default, with a conduct for more epic games. What the default is will be players first experience, and a shorter game is much more likely to pull them in for more.
Title: Re: New conduct idea: No Time To Grind
Post by: keith.lamothe on August 19, 2014, 12:19:53 pm
Did you have a chance yet to ask Chris whether he would be okay with sharing the level generator code?
Not that I have much time at my hands at the moment, but I would be really interested to have a look at this :).

i would even sign an NDA if you want ;).
Oh, no NDA necessary; I just wanted to check with him first.

Here it is: http://arcengames.com/dl/BionicMapGen.zip

Basically just unzip that, open the sln file within (Visual C# Express 2008 or later should work, we use 2008, though I think Chris has Visual Studio proper while I just have C# Express), and run it to see the output.

Bear in mind it was ported from valley, so there's still some old valley-specific map types in there and whatnot.  Don't expect cleanliness in general ;)
Title: Re: New conduct idea: No Time To Grind
Post by: nas1m on August 19, 2014, 04:01:56 pm
Did you have a chance yet to ask Chris whether he would be okay with sharing the level generator code?
Not that I have much time at my hands at the moment, but I would be really interested to have a look at this :).

i would even sign an NDA if you want ;).
Oh, no NDA necessary; I just wanted to check with him first.
Cool, thanks!