Pages:
Author

Topic: [ANN][HUC] Huntercoin - Worlds First Decentralized Game/World on the Blockchain - page 90. (Read 879724 times)

legendary
Activity: 1807
Merit: 1020
very good work wiggi and mithrilman
sr. member
Activity: 403
Merit: 251
continuing from
https://bitcointalksearch.org/topic/m.12289266
and
https://bitcointalksearch.org/topic/m.12485242


It seems to me that we are talking about different things, you are more about "procedural generated maps" but this doesn't work (or at least is not easy) if someone wants to change themes, etc.. because your descriptors should be agnostic too (not "this is a tree" but more a "this is a tall element that cover a player") etc...
Basically, the tall element that cover a player will become a tree if you use maptiles for it that look like a tree. For example, duplicate these 6 lines
https://github.com/wiggi/huntercoin/blob/betterQt/src/qt/gamemapview.cpp#L486-491
only with a new letter and 6 new map tiles. Voila, an alien looking tall element (that cover a player).


What's the purpose of Calculate_AsciiArtMap? Can't it "patch" the map and generate a final fixed map with all layers patched, that can be shared with any client?
It has reversed gear, from reading the gamemap and figuring out what it means, to rebuilding it (from the asciiart file, the old gamemap is commented out) So it's not a procedural generated map, all the (manually placed by snail iirc) trees are on their old position, with most cases of missing or garbled tiles repaired.


updated for windows:
https://mega.nz/#!2AUGkKKS!rwth5Rmfea5qpHyfkBSDdJ3xcqW-6d3MVchaa_ZPCNc



hero member
Activity: 554
Merit: 502
Developer!
Ok, this is going to be a huge post, but since there is no activity lately here, i think it's anyway a good think for the community.
As i said i didn't stopped working on my client, and now I'll explain what will be available soon with the new version of my client.

This post is going to be a little tour using some image i uploaded on imgur here: http://imgur.com/a/bB8F4
That album already contains most of the things I'm going to post here but this post will cover them more deeply.
This post is very informative even about the game mechanics, so this could be interesting to read even if you don't (yet Cheesy) use my client!
Here we go!


First of all let me say that most of the new features implemented are based on my game experience and my "craziness", so if anyone has other things that think could be useful to be added feel free to let me know.

One of the things that bot creators or custom clients had since day 0 was the ability to see, before normal players, where a hunter is going.
This shouldn't shock anyone, it's not about cheating, the reason is technical: given the nature of blockchain transactions and the need to verify the correctness of the moves performed by the clients, the nodes (a node is any client that's receiving/broadcasting transactions over the game network) need to know what a hunter wants to do in order to validate his transaction.
Without going too much into technical (and boring for most of you) aspect of how a the game works, let's just say that any client need to be able to read clearly what a player want to do, in order to say "yes, you can, i accept it because it satisfy the game rules". Without this checks, a client could move his hunters passing through mountains, or teleporting himself, etc... so this is a technical aspect that can't be avoided, or at least not without fuzzy and complicated logics and game mechanics that would be better to not introduce, or the game would be too much awkward to be played.

Anyway this causes a problem because until now, smart bot programmers or modified game clients could take the opportunity to read a preview of the opponents' moves, decoding transactions received from other nodes and not yet included in the last block generated.
One of the main reason i started coding my client was to leverage the difference between the BOT power in order to let human players compete with the same arsenal of custom clients/bot.
So the feature I'm going to show you (that was already available, even if not at this level, in previous versions of my client throught console commands) is a big step in that direction, togheter with the concept of Behaviours I've implemented in the client, and now anyone can KNOW and SEE easily, without using the console like in my previous version, where your enemies will go or if they just triggered the "destroy" action to kill you!

Pending Moves - The Hourglass icon is the key!

pending status

That spinning (when enabled) icon, shows you which pending moves mode you are using. Clicking on it, you can chose your mode.
Enabling the pending moves (orange icon) allow you to monitor your targes hunter pending moves.
Note: because of performance reason, the clients shows only your current Targets pending moves, so if you are interested in following someone's move, you have just to add that hunter in your target window.



Pending Moves: Disabled

If you ever need to hide all pending moves, this is the mode you have to choose.
This could be useful if you have many targets and wants to take a look on the map without all that black lines



Pending Moves: Enabled

The "Enable" option is the basic pending feature that consider that the pending move will be added to the blockchain on the next generated block.
Unlucky often this is not the case and the move will be accepted a block later, this is why there is the Enanched pending mode, see next.



Pending Moves: Enhanced

The "Enhanced" pending moves mode, consider that a just sent transaction takes 2 blocks to be added to the blockchain, so the probable enemy path have to consider, as the starting coordinate, not the current hunter coordinate but the next. So, to have a better idea where and when a hunter is going, this feature should be the preferred choice.
The only reason to pick the basic mode is when you see that your moves take only 1 block to be accepted.
This isn't very common but could happen, so it's up to you to choose the best mode in a specific situation



Automatic Behaviours and Actions - Let me fall asleep!

Behaviour Actions configurations

I've introduced the concept of behaviours actions, but to explain that let me take a step back... what's a Behaviour?
As i said i wanted to reduce at minumum the advantage that bots have over humans, so while it's not possible to exclude bots from the game, why not implementing a framework that allow anyone to create his own bot using my client and then maybe share/sold/rent it on a market? This is the core idea i had and i'm planning to implement, including the market thing. This is a big challenge but I've already done a lot thoward that direction because my framework is pretty stable now, and I've created some behaviour using it (and more will follow) and if the game will be successfull, I'll dive into sharing the SDK with anyone to code and put on market their creations.
Anyway at the moment  what a player can do is to use one of my implemented behaviours, and this image shows an example about how you can expose Behaviour Actions throught a Generic Behaviour (a generic behaviour is a behaviour that's not  bound to a single hunter, but coordinate actions from an higher level, think of it as a god behaviour, he can create hunters, transfer them, expose generic/troop/target actions, etc...
In this image you can see how actually the "Commander" behaviour configuration looks: actually any of the shown options is a Behaviour Action, that could be triggered, depending on the context (your hunter, an enemy hunter, or generically) by a button in the Behaviour Actions window (furter explainations below)



Behaviour Actions window

This is how the Behaviour Actions window looks.
It has 3 tabs (excluding the last "?" tab that just shows a little window description)
- Generic tab is where you can trigger generic actions (not linked to a specific hunter) like the "Show Enemy List" or "Show Bank List" actions.
- Troop Tab contains the list of actions that can be triggered when you have an active hunter in your "My Troop" window. those actions are more powerful than others because they can add to your hunters some automatic behaviours and configure easily other complex Behaviours (see the Collector behaviour)
- Target tab contains a list of actions that can be triggered when you have an active target (Target window). An example is the "Estimate Loot" action


let me show you some behaviours actions examples:


Bank list (available in the Generic tab)

This is a sample result of the "Show Bank list" action, here you can see a sortable grid with informations about current spawned banks, with current remaining life and coordinate.
Clicking on a bank will center the map on that coordinate



Enemy hunters (available in the Generic tab)

This is a sample result of the "Show Enemy List" action, here you can see a sortable grid with info about current enemies on map.
The last column (Recycle) shows if the hunter is going over a bank (probably to recover himself).
Clicking on a hunter will center the map on its position



Estimate Loot (Troop hunter)

This is a sample of the "Estimate Loot" action used in the Troop panel of the Behaviour Actions.
You can see in gray the queued path (not yet commited) of one of my hunters and in the right upper corner you can see the result of the action that says that going there i can collect about 39.6 HUC.
When the hunter has already an active path, this feature can be useful to see the estimated difference between actual and queued/pending path estimated income.
The computation doesn't take into consideration other hunters that are collecting on the same area



Estimate Loot (Target hunter)

This is a sample of the "Estimate Loot" action used in the Target panel of the Behaviour Actions.
This is similar to the "Troop" version but it can't show you queued paths of enemies, but in future i could show the estimated pending path value.
Actually you can see how many coins your target is going to collect going on his actual path (30.25 in the sample image)
The computation doesn't take into consideration other hunters that are collecting on the same area



Collector automatic behaviour !!! (Troop hunter) 1/3 - Intro

This actions can easily configure an improved version of the previous "Simple Collector" behaviours i released on previous versions.
This is an example about how using an action you can bound an automatic behaviour to one of your hunters, without the need of configure the behaviour like before (it's very easy!!)
The Collector Behaviour is useful to collect money while you are afk or you can't keep staring at the monitor constantly.
It's highly configurable and it's compatible with other (planned for the future) behaviours that can try to keep you safe from enemies, or be aggressive, and so on.



Collector automatic behaviour !!! (Troop hunter) 2/3 - When Coins End

In this image you can see the available choices available for the collector configuration "When Coins end" parameter.
This is useful to choose what to do when there are no more coins on the area you are harvesting (area = Target Area coordinate expanded by Sight Range parameter).
 - If you choose "Keep Looting" your hunter will stay on that area until he has collected the amount specified in the "Max Loot" parameter, then will return to the bank
 - If you choose "Remove Behaviour", when coins end the collector behaviour will be removed from the hunter, so the next (eventual) configured behaviour can run, or your hunter will stand still there undefinitely waiting for your inputs.
Advanced tip: you can chain several Collector behaviour togheter because only one of them can run at a time on a specific hunter, so adding multiple cascade collector with the action "Remove Behaviour" is useful to harvest multiple areas
- If you choose "Go To Bank" well... when the coins end your hunter will find the nearest bank (or stand still waiting for a bank to spawn near him).
In any case, to find a bank the Max Bank Distance parameter is used, so you can chose if you want to go only to banks near you, or take a long journey, anyway if a new bank spawn near you when you are already going to a bank, the nearest one is chosen (so it's optimized to go as fast as you can to the nearest bank)



Collector automatic behaviour !!! (Troop hunter) 3/3 - When Arrived at Bank

In this image you can see the available choices available for the collector configuration "When Coins end" parameter.
When the behaviour decide that you need to go to a bank, the alghoritm to find a suitable bank is the same: find an available bank that can be reached at most in "Max Bank Distance" blocks.
But what to do next, depend on the choice you make here:
- ReturnToTargetArea: when you deposit your coins to the bank, then you'll go back to your Collector target area to keep doing the harvester
- Recycle: when you chose to Recycle, then you stand on the bank for 3 blocks in order to be removed from the game and have your hunter cost refunded.
Note that if you chose this option, then the alghoritm to pick up a bank take into account the need of having to wait 3 blocks on the bank, so if you chose e.g. 60 as maximum bank distance, than only banks at 57 blocks (60-3) are taking into account. Of course only bank that have at least that amount as remaining life are considered




closing notes about Behaviour Actions:

Active behaviours

To see the active behaviours running on a hunter you can right click on your hunter in the My Troop window to see a contextual menu that shows at the end a sorted (by priority) list of active Behaviours, each one with its own visualizing style to recap the main parameters you've chosen.
In this example you can easily see that my mmtest hunter has an active Collector behaviour, with a target area set at coordinate 281;94 and is harvesting an area of 5x5 cells around that coordinate, with a maximum loot of 100Huc and that when no coins are available at that area the hunter will go to the bank and whenever he goes to a bank (because of 100 huc reached or because no more coins available) then he will recycle!



Configure Behaviours

Like in the previous versions of the client, you can setup some of your behaviours with preconfigured parameters and pick them from the list of available configurations, clicking the "Configure Behaviours" contextual menu on a hunter in the "My Troop" window.
However I consider this an obsolete way to apply behaviours on hunters (but still useful for some kind of behaviours), anyway this window is still useful because now you can drag and drop your active behaviours chosing their priority (they are sorted in priority order).
Priority is important because it can impact on operations: the wrong order can lead to unpredicted results.
There isn't a generic order valid for any mix of behaviours, it all depends on behaviours that are chained togheter, so refer to specific behaviour documentation to understand the consequences

Ok, now i can't keep writing a book Smiley i didn't have time to write all additions available or explain all implemented behaviours and actions, but I want to record some video sessions that shows how to use this information in practice, playing on testnet and on production blockchain.
While i was writing this huge (pant! pant!) post, i observed two players battling each other, i don't know who they were but here, as a bonus shots Cheesy, the fight images i took, that shows even the pending path and alerts exposed by the client

the fight can be found here: http://imgur.com/a/g5LU5
hunters involved were kontol vs vert3

it ended in no one killed, and both wasted 40 huc each then decided to leave the fight. some shots show the different path shown by the pending moves algorithm, and when the hourglass were green (so Enhanced mode on) it was the right one!

Ok now time to have a bit of rest Smiley

Let me know your thoguts and ideas!
hero member
Activity: 554
Merit: 502
Developer!
I'm going to write a post about what's going to be released in the upcoming version of my client (Huntercoin Mithril Edition)
I didn't posted for a while but worked hard a lot behind the scene, I'll summarize some of the new features and I'll post about it in few hours (daughter permitting)
I've bought a decent microphone to record some video session to explain how to play and how to use advanced features but since i'm not a native english, would be nice if the community could help out writing something or doing other video, anyway i'll give more info when the release will be ready

this is the link with some raw images i just captured, but without explaination they are pretty worthless Smiley
http://imgur.com/a/bB8F4

Update: all the images now have a description that's enough to understand which features they rapresents
sr. member
Activity: 296
Merit: 251
Good news:  The new server at chain.huntercoin.org is now ready, and can be used to download a blockchain snapshot signed by me both as zip and via FTP as before.  The chain is current as of "now".

Thanks, I may try to download and run wallet again to play game. I got run off before by slow synch.
hero member
Activity: 651
Merit: 518
Cryptsy wallet is down for few weeks now, anyone here can help? I have sent a few support tickets but the best would be for developers to contact Cryptsy staff and help them fix any issues.

i've emailed again and awaiting response.

I fear HUC might end up as XCR and some other coins, with wallet disabled for months.

Ohh and I recently bought 72866.17059891 HUC for just 0.40149260 BTC, cheapo 1% of all mined coins nom-nom-nom  Kiss
hero member
Activity: 955
Merit: 500
legendary
Activity: 1135
Merit: 1166
Good news:  The new server at chain.huntercoin.org is now ready, and can be used to download a blockchain snapshot signed by me both as zip and via FTP as before.  The chain is current as of "now".
hero member
Activity: 554
Merit: 502
Developer!
and add the tile index in a layer like the ones in gamemap.cpp?

this way the enanched map can be ported in other clients like the unity3d and mine and the code would be a lot cleaner too


When a client (any) paints the map, it must know the numbers like in the tables in gamemap.cpp. Easy to save, copy and paste to gamemap.cpp of another client. Or to itself, of course.

That's the real "client agnostic" format, without any overhead.

sure, numbers must be shared, but the problem is that even the painting order is important, so knowing if something has to be drawn before or after the player (like trees that are on top of player, or pillars, etc...) so i was just saying that a map format should have a layers system, so if you have added your "numbers" between some layers, the "agnostic format" should take layers into account (I don't know if I explained well what i mean)

When i saw your code (i could have read it wrong) it seemed to me that you do a lot of computation everytime to produce some ascii files and then you use that to draw somehow over the map (didn't checked deeply)
What's the purpose of Calculate_AsciiArtMap? Can't it "patch" the map and generate a final fixed map with all layers patched, that can be shared with any client?
When i talked about "agnostic map" i meant that there should be a common map that can be easily used and upgraded (so shared) amon every client to have a common look and feel, then if someone wants to create a custom map (respecting non walking tiles) he's free to do so, but a common format would be nice so that community could come up with common upgrades and enanchements (or themes) to be shared

I taked about Tiled Map editor because his format has many exporter in several languages and so can be easily used to share map layouts

It seems to me that we are talking about different things, you are more about "procedural generated maps" but this doesn't work (or at least is not easy) if someone wants to change themes, etc.. because your descriptors should be agnostic too (not "this is a tree" but more a "this is a tall element that cover a player") etc...
At that point would be easier to generate it using 3d objects that defines bounding boxes and have the Z coordinate to specify their height/depth, but at that point why just don't move to a full 3D map? (of course the answer would be "3D would require total new graphical engine", it could be fine but it's a lot of work, and then the problem would be to find nice assets/graphics to use
sr. member
Activity: 403
Merit: 251
and add the tile index in a layer like the ones in gamemap.cpp?

this way the enanched map can be ported in other clients like the unity3d and mine and the code would be a lot cleaner too


When a client (any) paints the map, it must know the numbers like in the tables in gamemap.cpp. Easy to save, copy and paste to gamemap.cpp of another client. Or to itself, of course.

That's the real "client agnostic" format, without any overhead.

legendary
Activity: 1807
Merit: 1020
Cryptsy wallet is down for few weeks now, anyone here can help? I have sent a few support tickets but the best would be for developers to contact Cryptsy staff and help them fix any issues.

i've emailed again and awaiting response.

hero member
Activity: 651
Merit: 518
Cryptsy wallet is down for few weeks now, anyone here can help? I have sent a few support tickets but the best would be for developers to contact Cryptsy staff and help them fix any issues.
sr. member
Activity: 269
Merit: 252
I am following this extraordinary and honest project with regular interest .
Right now , I am filled to the brim with satisfaction ; you all are awesome Cool
To see that for the spirit of 'it' so many talented and skilled trailblazers are
collaborating in their spare time to maintain , fix , update and improve Hunter
is certainly remarkable , and of course , one day it shall be honoured specially .
One thing for sure , all of you are making the human Hunters feel invigorated !
 

hero member
Activity: 554
Merit: 502
Developer!
Hey wiggi!

graphics updates like shadows, etc.. are indeed nice

But I looked at your code and it's not reusable, i mean you put a lot of effort doing lot of special case tests, etc... why don't you just edit the map drawing a layer over the existing ones (or between layer1 and 2 since shadow should be under high parts) and add the tile index in a layer like the ones in gamemap.cpp?

this way the enanched map can be ported in other clients like the unity3d and mine and the code would be a lot cleaner too
about code i'm not sure if domob will accept that pull request because it lack of readibility, maybe you could move all your custom logic to an external utility that generate the layer when needed? Anyway it's not my duty to say what's fine or not with pull requests

If you need a better map to work on, months ago i started writing a better map starting from the original one (there were a lot of glitches in the original map) and i wanted to reorganize tiles too, so i started writing a new tiled map, if you are interested i can send you what i've done (i tried even to start doing an isometric map but stopped because it wasn't an high priority task for me)

if we can have a nice, standar tiled map (.tmx) file (that format allow even set pixel precise offsets of objecst over the map) we can then tweak it a lot and we can eve create different themes, etc... easier
the Tiled Map editor is this : http://www.mapeditor.org/
sr. member
Activity: 403
Merit: 251
Small update to https://bitcointalksearch.org/topic/m.12289266

- each hunter (if name is in names.txt) has now an individual alarm that resets itself if the enemy is out of range or dead.
- hunters (if name is in names.txt) ignore each other for alarm purposes.
- ctrl + middle mouse button now toggles "silent" mode.
- the wooden palisades cast shadows.
- visual gamemap data is saved as human-readable and editable text file. (next version will use this text file for painting the map)


Windows:
https://mega.nz/#!rN9FyZRL!8spi-us8w_B5-eFvXFHWgyu1Pl7cGfgTbUONSVOZ5Fk

Source:
https://github.com/wiggi/huntercoin



graphics are taken from royalty free archives, to do what you ask a graphic designer is needed, if someone have the skil and want to help he's welcome, btw i could use new graphics on my client, but it will only be valid on my client of course, i think this should be "client agnostic" but... maybe having custom graphics on different clients could be interesting

even custom maps could be used (i could crate a space theme in theory), the only important thing is to respect the "walkable/non walkable" tiles, all the other things can be changed

Yes yes! Mapping while playing. Smiley

I think a first step towards client agnostic graphics would be to only add to the list of map tiles (e.g. old beta map is difficult to salvage because the tiles are in different order) and to maintain a list describing each tile (source file, exact pixel, scaling factor, rotation etc)



if you make a pull request and all looks stable i don't see an issue with merging it?

I'll do that when it's halfway finished. But it will take some more weeks...



legendary
Activity: 1807
Merit: 1020
So... instead of trying to contribute to the project, I ended up getting addicted to playing and got a huge bad luck streak today and lost 3000/4000 of my coins.
Cry

im curious, how long did you play for? were you beaten up by better players? bad luck how?


Snail: the mega link in the OP to the latest client 1.301 is empty? where can i get the latest, i think im stuck on 774539...



@Chaos - how did that happen? did you go afk and leave your hunters on the field?

@buck
https://mega.nz/#!hEE23C5b!SJ5O29gdH4SdhWQCIaIEeqokPXJJN9TQM3qy2i41SQk

not sure what went wrong there, maybe some changes with mega - my account is still up and running
full member
Activity: 232
Merit: 100
So... instead of trying to contribute to the project, I ended up getting addicted to playing and got a huge bad luck streak today and lost 3000/4000 of my coins.
Cry

im curious, how long did you play for? were you beaten up by better players? bad luck how?


Snail: the mega link in the OP to the latest client 1.301 is empty? where can i get the latest, i think im stuck on 774539...

 
 
sr. member
Activity: 476
Merit: 250
So... instead of trying to contribute to the project, I ended up getting addicted to playing and got a huge bad luck streak today and lost 3000/4000 of my coins.
Cry
sr. member
Activity: 476
Merit: 250
I just read some of the things planned on the huntercoin forum and all I can say is that im EXCITED AS **** Cheesy

well, then you don't have to read only, say there your opinions, even just an "I agree" ,"I like it", "I'd change this into that" etc... so we can have a broader brainstorming and if we reach some kind of consensus domob would implement it (or anyone interested and with the skill can implement it and let us all test it)

Of course the invite is extended to everyone, as snailbrain just said

Yes that is exactly what I'm going to do but unfortunately I'm at school and my laptops battery died and typing on phones is a pain D:

Quote
Are you a coder willing to get your hands dirty into crypto C++ code? then go to https://github.com/chronokings/huntercoin and start to get dirty
Are you a writer? then write some article about the game and the various clients (drop me a line to have access to informations about mine)
Are you a gamer? record gaming sessions giving advice to novice
+200

Quote
You could even setup a faucet, or an informative website, build a dice/bet website or whatever you think could be interesting
I'm actually planning to do some of these (well if I get time I guess...)


Also, we should revive the #huntercoin irc channel... Irc is a lot more convenient than forums for some things.
sr. member
Activity: 403
Merit: 251

Actually, the Namecoin port is long finished and the Huntercoin port is not only planned but progressing very well. Smiley  I do not have any ETAs or a roadmap, but at least the up-to-date implementation can be found on https://github.com/domob1812/huntercore/ at any moment.  It is already able to sync the full blockchain and to serve game_getstate calls.  It is also able to prune the blockchain based on Bitcoin's feature, which according to some tests snailbrain did reduce the blockchain size to something like 1.5 GiB.  Even less may be possible in the future with some more tuning of parameters.

Note, however, that the new client does not yet handle the wallet well (game transactions won't show up), nor can it be used for mining.

Can it serve the blockchain too, i.e. is it possible/recommended to use a huntercore node to connect to the network and then connect a v1.3.01 daemon or Qt-client to your local huntercore node...

...if the v1.3.01 node has no blocks?

...if the v1.3.01 node already has an almost up to date blockchain?

Pages:
Jump to: