My latest project -- a digital collectible card game

Discuss the development of other free/open-source games, as well as other games in general.

Moderators: Forum Moderators, Developers

Post Reply
Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 3:55 am

Velensk wrote: Also just to throw in one last bug report which I alluded to earlier but didn't make clear: When I was playing the last scenario in the witch path, when one and then later another of my creatures was near the end of the map, the AI cast blink on them and moved them into a lane which didn't exist. They kind of stayed there for the rest of the game in the nonexistent rightmost column. The lower of the two made the little 'I can't move' wiggle but the one that would have claimed the seal just stood put.
Okay looked into this and I think it's fixed now.
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 4:47 am

Velensk wrote: Questions:
So if I’m interested in contributing card or at the least art/ideas for cards what would be the best way to do it? In wesnoth normally I’d get it working on my machine but for an online card game I’m not sure how that’d work. Do I just send the material to you untested or is there something I should do first? If I am sending it to you do you want to vet the ideas first? I’m not sure how much time I’ll have after tomorrow but this is exactly the kind of creative project I like to pursue in my free time.
Okay, I have put up a page which explains how to get started as a developer: https://github.com/davewx7/Citadel/wiki ... ADeveloper

Please try these instructions and let me know if they make sense to you!

As explained there you should be able to try most changes you make locally against the AI without any problems. That is how I do most development of the kinds of things you want to develop. Eventually I can probably give you access to push changes up to the server for testing too. (And I might want to develop a safe way for people to do this generally).

I'm pretty easy going with changes and things. If you believe strongly in a change, try it out and we'll see if it works out.

I think if you are interested in developing some fresh campaign scenarios that would be especially cool. (Incidentally see the Iron Cities -> Great Wall of Korath-Bar scenario I recently added it contains some map customization of the kind I would like to have).

You can also learn to write cards and then add them and try them out. Nicely, Argentum Age sports an AI which can automatically handle understanding how to play with most cards (Its understanding of lands is still a bit of a work in progress).

Let me know if you need any help getting bootstrapped. Would love to have you help out!
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

User avatar
iceiceice
Developer
Posts: 1056
Joined: August 23rd, 2013, 2:10 am

Re: My latest project -- a digital collectible card game

Post by iceiceice » March 17th, 2015, 5:18 am

Hi,

I tried following the Linux instructions you described earlier -- I am getting some kind of assertion failure on trunk branch though.

Code: Select all

failed to load image 'splash-wide.jpg':Couldn't open ./images/splash-wide.jpg
LOADING FONT: data/base_fonts.cfg -> data/base_fonts.cfg\nLOADING FONT: data/fonts.cfg -> data/fonts.cfg\nsrc/formula.cpp:766 ASSERTION FAILED: Unknown symbol 'canvas' in obj citadel_controller At /home/chris/.frogatto//dlc/citadel/data/objects/citadel_controller.cfg 31:
]).save('test.png') where c = canvas()
                              ^-----^
My installation procedure was like this

Code: Select all

$ mkdir anura-src
$ cd anura-src
$ git clone https://github.com/anura-engine/anura.git
$ cd anura
$ git checkout trunk
$ scons ccache=true jobs=3
$ ./anura --auto-update-module --module=citadel
Actually, the first time I didn't checkout trunk, and I ended up building master... it worked for a while in that there was an autodownloader progress bar with a little frog. However both trunk and master now fail with this error for me. I'm running Linux Mint 17 Qiana.

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 6:44 am

@iceiceice: looks like the scons script didn't have the -DUSE_SVG option which is needed for running Argentum Age (I just use the Makefile).

I have fixed the scons script to include it so if you sync now and rebuild it should work!
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 6:54 am

I should also mention that if people want to become more involved/look for a game/discuss development/etc we have an IRC channel -- #CitadelGame on irc.freenode.net
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Velensk
Multiplayer Contributor
Posts: 3979
Joined: January 24th, 2007, 12:56 am

Re: My latest project -- a digital collectible card game

Post by Velensk » March 17th, 2015, 12:26 pm

Thank you for responding.
I think your idea of making it so a creature only does a certain amount of damage might work out to nerf it a little -- but, all things considered, would only be a fairly mild nerf to it -- however it does have a few problems. (One of which is NOT difficulty of implementation. I've already made lots of changes while developing this game and will continue to make changes until we get the best mechanics possible). It makes it so +move is actually a disadvantage in lots of cases. Since you'd rather not have a +move and just wait an extra turn to do full damage. It also could confuse players, and requires more math.
I missed that point. I was aware it would be relatively mild, this because although it does give you everything you need in one package I felt that the nerf was needed for the style more than the specific card. The changes you mention for this and also with drain life and haste all sound very good.
It is quite. But are you aware that your enemy can capture the Skeleton Corpse off of you? Then they can use the ability.
I did miss this completely. That more than balances it (and makes it much more interesting). It also explains why sometimes I could not use it and sometimes I could. The AI does not do this to you and I think if it did the fact would become more obvious.
I agree Nature's Blessing is powerful, but I do really like this card and the way it works. It could have a minimum cost though.

I do like the idea of making some card effects depend on your level though! For instance I could see a card that gives a creature +x/+x where x is your gaea level (or entropia's version would give a creature -x life!)
If you're going to keep it the way it is, then I believe a minimum cost would be a good idea.

There's defiantly plenty of room to explore in terms of potential spells.
I think you're right about these, and more generally I think the theme here is that any creature that costs more than 5 or 6 or so needs some kind of specialization applied to it. With 'foot soldiers' it hurts you to put them in your deck if they are off-school because they no longer give you discounts on invocations. But with an expensive creature there aren't usually enough in the deck for you to care that much, and often you've built levels by that point anyhow.
I think in general that's a sound principle. I don't think it'd be bad to have a few very 'borrowable' cards even among the more expensive ones but for various school specialties or cards that are just above the Jedi Curve there should probably be some reason not to. An easy comparison for those two would be the Materia rider and the Inquisitor, even were I running a Materia or Aether deck, if I was looking for a 5 cost minion to beef up my forces I'd think it frequently a better idea to grab one of those two simply because although they don't boost my lvl they provide quite a bit more for the price. The rider on the other hand, does have some nice abilities which could be a part of a devious deck (such as one where the win condition is to have 8 mana, an creature ready to break a seal (like a fast dodgy rider), the 6 point assassin in hand and a wisp anywhere on the board) on the other hand because I have to pay 6 if I don't have any Materia lvls I'd think twice about including it if I'm not likely to have any materia levels but it still might be worth it.
So I still like the idea of removing Cover from her, and I've pushed a change which does this. I like the idea of her being indestructible. Note that indestructible means she can't be destroyed. So a card like Knife in the Dark she just doesn't care about.

However she can still be interacted with without Cover. Cards like Outsmart the Guards will work on her now, and a card that say put her back in her controller's hand would too. I think this makes it interesting since you can still do things against her with the right spells, just not damage or destroy her.
Sounds at least a lot more interesting than she is now.
Okay, I have put up a page which explains how to get started as a developer: https://github.com/davewx7/Citadel/wiki ... ADeveloper

Please try these instructions and let me know if they make sense to you!
They make sense to me mostly because I've done similar things. I think to most people it'll seem bit daunting even if it isn't actually all that hard.
I think if you are interested in developing some fresh campaign scenarios that would be especially cool. (Incidentally see the Iron Cities -> Great Wall of Korath-Bar scenario I recently added it contains some map customization of the kind I would like to have).
I think I'd rather get a few cards working then try my hand at this kind of thing. Incidentally, I did take a look at that scenario and it was interesting. Can there be neutral creatures as well or just fortifications (if so would they move?)

--Also, ran into another interesting bug while trying it. Similar to how the AI had blinked my units into non existent columns, it had so much land that it was putting them into nonexistent rows, below my side of the board.
"There are two kinds of old men in the world. The kind who didn't go to war and who say that they should have lived fast died young and left a handsome corpse and the old men who did go to war and who say that there is no such thing as a handsome corpse."

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 3:55 pm

Velensk wrote: I think I'd rather get a few cards working then try my hand at this kind of thing. Incidentally, I did take a look at that scenario and it was interesting. Can there be neutral creatures as well or just fortifications (if so would they move?)
Sure, please work on whatever you find most interesting.

It would be possible to create neutral creatures on a map, but the moving problem is the hard part -- which direction would they move in? It might be interesting to have some kind of 'fortress' of neutrals that spawns neturals that attack either side periodically or something.

It is also possible in a campaign map to simply give the AI some lands or creatures to start with as an advantage. Or you could create a scenario where one side gets some starting lands (like a mine and two libraries) as an advantage but they must win the game within a certain number of turns.
Velensk wrote:
--Also, ran into another interesting bug while trying it. Similar to how the AI had blinked my units into non existent columns, it had so much land that it was putting them into nonexistent rows, below my side of the board.
Okay, will look into this bug.
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Velensk
Multiplayer Contributor
Posts: 3979
Joined: January 24th, 2007, 12:56 am

Re: My latest project -- a digital collectible card game

Post by Velensk » March 17th, 2015, 5:19 pm

I don't know if this is related to the issue I've had with updating but as a note, on the mac version, the "--auto-update-anura" has the argument "anura_windows"
"There are two kinds of old men in the world. The kind who didn't go to war and who say that they should have lived fast died young and left a handsome corpse and the old men who did go to war and who say that there is no such thing as a handsome corpse."

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 6:23 pm

Velensk wrote:I don't know if this is related to the issue I've had with updating but as a note, on the mac version, the "--auto-update-anura" has the argument "anura_windows"
Hmm this might make it download some unnecessary data but shouldn't stop it from working. Remove the argument just in case though. --auto-update-anura isn't supported on Mac right now.
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Velensk
Multiplayer Contributor
Posts: 3979
Joined: January 24th, 2007, 12:56 am

Re: My latest project -- a digital collectible card game

Post by Velensk » March 17th, 2015, 6:29 pm

So an update on how it's been going. I decided to start with something very simple just to make sure things were working. So I planned to modify the Gaia campaign so the first fight had a different portrait and I changed the number of cards from 12 to 16. This caused a crash. Now I hadn't followed all the steps through the link so following through on it, so I removed everything I had of the game (except I found later that I hadn't, I still had the folder with the cookies from the server and my decks and such but I'm happy enough to keep those) and then went through the steps. I redownloaded the binary and then cloned the git repository and modified the master_cfg as instructed. I also modified the campaign file for just the portraits and ran the binary. Unlike stated, the binary didn't use the git repository but instead redownloaded everything and put them in Application_Support/frogatto/dlc as it had before.
-I applied the same modifications to the redownloaded game files as I had to the git repository and I found that I had infact changed the portrait of the first encounter. When I went back and then changed the number of marauder cards from 12 to 16 the game crashed as it had the first time I'd attempted everything. I reverted the changes and discovered that even after reverting them, it would still crash.
-I repeated the experiment, getting rid of the files downloaded by the updater, ran the program again (to redownload them) and was successful in changing the encounter portrait but again when I tried changing the number of cards the game would crash if I clicked on the campaign button. I'll include the error message below. (I cut the binary images out of the post as the error message bumps the post size above the maximum amount. If they would be needed I should be able to replicate the error pretty easily)
-For the moment I'm not really sure what to do. If making a change so insignificant as modifying the number of copies of a card in a deck causes a crash then I think I must understand why before making any other changes. It's particularly annoying that the campaign continues to not like me even after I revert the changes. Also, if I'm supposed to be using dev files via git I am probably doing something wrong. This is my first time using the OSX app for git and previously my experience with git has been fairly limited.

Code: Select all

Process:         Frogatto [25106]
Path:            /Users/USER/Desktop/ArgentumAge.app/Contents/MacOS/Frogatto
Identifier:      com.frogatto.frogatto-mac
Version:         1.3.1 (1.3.1)
Code Type:       X86-64 (Native)
Parent Process:  launchd [136]
Responsible:     Frogatto [25106]
User ID:         501

Date/Time:       2015-03-17 14:22:52.983 -0400
OS Version:      Mac OS X 10.9.5 (13F34)
Report Version:  11
Anonymous UUID:  C9E64322-6AFE-EC8E-C61B-F1A4D68E6E16

Sleep/Wake UUID: E0C3B2F4-1AFA-4A7C-A921-10288A9D3F2C

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
abort() called
terminating with uncaught exception of type fatal_assert_failure_exception

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff8b73a866 __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff8c06935c pthread_kill + 92
2   libsystem_c.dylib             	0x00007fff8db79b1a abort + 125
3   libc++abi.dylib               	0x00007fff921e4f31 abort_message + 257
4   libc++abi.dylib               	0x00007fff9220a952 default_terminate_handler() + 264
5   libobjc.A.dylib               	0x00007fff8be94322 _objc_terminate() + 124
6   libc++abi.dylib               	0x00007fff922081d1 std::__terminate(void (*)()) + 8
7   libc++abi.dylib               	0x00007fff92207c5b __cxa_throw + 124
8   com.frogatto.frogatto-mac     	0x000000010ded69b0 game_logic::(anonymous namespace)::get_document_function::execute(game_logic::formula_callable const&) const + 5200
9   com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
10  com.frogatto.frogatto-mac     	0x000000010de88bfc game_logic::(anonymous namespace)::where_variables::get_value_by_slot(int) const + 188
11  com.frogatto.frogatto-mac     	0x000000010dc86d0f game_logic::formula_callable::query_value_by_slot(int) const + 15
12  com.frogatto.frogatto-mac     	0x000000010dea96e6 game_logic::(anonymous namespace)::slot_identifier_expression::execute(game_logic::formula_callable const&) const + 22
13  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
14  com.frogatto.frogatto-mac     	0x000000010de9d804 game_logic::(anonymous namespace)::assert_expression::execute(game_logic::formula_callable const&) const + 212
15  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
16  com.frogatto.frogatto-mac     	0x000000010de88eb5 game_logic::(anonymous namespace)::where_expression::execute(game_logic::formula_callable const&) const + 133
17  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
18  com.frogatto.frogatto-mac     	0x000000010de7fdd8 game_logic::formula::execute(game_logic::formula_callable const&) const + 120
19  com.frogatto.frogatto-mac     	0x000000010e1ad7a7 variant::operator()(std::__1::vector<variant, std::__1::allocator<variant> > const&) const + 4071
20  com.frogatto.frogatto-mac     	0x000000010dea19c9 game_logic::(anonymous namespace)::function_call_expression::execute(game_logic::formula_callable const&) const + 761
21  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
22  com.frogatto.frogatto-mac     	0x000000010dea5084 game_logic::(anonymous namespace)::type_expression::execute(game_logic::formula_callable const&) const + 52
23  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
24  com.frogatto.frogatto-mac     	0x000000010ded2e8e game_logic::(anonymous namespace)::set_function::execute(game_logic::formula_callable const&) const + 142
25  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
26  com.frogatto.frogatto-mac     	0x000000010decfe28 game_logic::(anonymous namespace)::if_function::execute(game_logic::formula_callable const&) const + 232
27  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
28  com.frogatto.frogatto-mac     	0x000000010de88eb5 game_logic::(anonymous namespace)::where_expression::execute(game_logic::formula_callable const&) const + 133
29  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
30  com.frogatto.frogatto-mac     	0x000000010deac916 game_logic::(anonymous namespace)::list_expression::static_evaluate(game_logic::formula_callable const&) const + 118
31  com.frogatto.frogatto-mac     	0x000000010deacb3f game_logic::(anonymous namespace)::list_expression::execute(game_logic::formula_callable const&) const + 15
32  com.frogatto.frogatto-mac     	0x000000010ddabc01 game_logic::formula_expression::evaluate(game_logic::formula_callable const&) const + 49
33  com.frogatto.frogatto-mac     	0x000000010de7fdd8 game_logic::formula::execute(game_logic::formula_callable const&) const + 120
34  com.frogatto.frogatto-mac     	0x000000010dd4557f custom_object::handle_event_internal(int, game_logic::formula_callable const*, bool) + 863
35  com.frogatto.frogatto-mac     	0x000000010dd45b15 custom_object::handle_event(int, game_logic::formula_callable const*) + 277
36  com.frogatto.frogatto-mac     	0x000000010dfce03e level::add_character(boost::intrusive_ptr<entity>) + 1166
37  com.frogatto.frogatto-mac     	0x000000010dd858b0 (anonymous namespace)::add_object_command::execute(level&, entity&) const + 112
38  com.frogatto.frogatto-mac     	0x000000010dd777d5 entity_command_callable::run_command(level&, entity&) const + 53
39  com.frogatto.frogatto-mac     	0x000000010dd45e5e custom_object::execute_command(variant const&) + 286
40  com.frogatto.frogatto-mac     	0x000000010dd45dcc custom_object::execute_command(variant const&) + 140
41  com.frogatto.frogatto-mac     	0x000000010dd45dcc custom_object::execute_command(variant const&) + 140
42  com.frogatto.frogatto-mac     	0x000000010dd45dcc custom_object::execute_command(variant const&) + 140
43  com.frogatto.frogatto-mac     	0x000000010dd45dcc custom_object::execute_command(variant const&) + 140
44  com.frogatto.frogatto-mac     	0x000000010dd455ce custom_object::handle_event_internal(int, game_logic::formula_callable const*, bool) + 942
45  com.frogatto.frogatto-mac     	0x000000010dd45b15 custom_object::handle_event(int, game_logic::formula_callable const*) + 277
46  com.frogatto.frogatto-mac     	0x000000010e0280d6 level_runner::handle_mouse_events(SDL_Event const&) + 4358
47  com.frogatto.frogatto-mac     	0x000000010e02b66b level_runner::play_cycle() + 7019
48  com.frogatto.frogatto-mac     	0x000000010e029930 level_runner::play_level() + 240
49  com.frogatto.frogatto-mac     	0x000000010e03ae0c main + 13740
50  com.frogatto.frogatto-mac     	0x000000010dc0ffd4 start + 52

Thread 1:: Dispatch queue: com.apple.libdispatch-manager
0   libsystem_kernel.dylib        	0x00007fff8b73b662 kevent64 + 10
1   libdispatch.dylib             	0x00007fff87d84421 _dispatch_mgr_invoke + 239
2   libdispatch.dylib             	0x00007fff87d84136 _dispatch_mgr_thread + 52

Thread 2:
0   libsystem_kernel.dylib        	0x00007fff8b73ae6a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8c069f08 _pthread_wqthread + 330
2   libsystem_pthread.dylib       	0x00007fff8c06cfb9 start_wqthread + 13

Thread 3:
0   libsystem_kernel.dylib        	0x00007fff8b73ae6a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8c069f08 _pthread_wqthread + 330
2   libsystem_pthread.dylib       	0x00007fff8c06cfb9 start_wqthread + 13

Thread 4:
0   libsystem_kernel.dylib        	0x00007fff8b73ae6a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8c069f08 _pthread_wqthread + 330
2   libsystem_pthread.dylib       	0x00007fff8c06cfb9 start_wqthread + 13

Thread 5:
0   libsystem_kernel.dylib        	0x00007fff8b73ae6a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8c069f08 _pthread_wqthread + 330
2   libsystem_pthread.dylib       	0x00007fff8c06cfb9 start_wqthread + 13

Thread 6:
0   libsystem_kernel.dylib        	0x00007fff8b73ae6a __workq_kernreturn + 10
1   libsystem_pthread.dylib       	0x00007fff8c069f08 _pthread_wqthread + 330
2   libsystem_pthread.dylib       	0x00007fff8c06cfb9 start_wqthread + 13

Thread 7:: stats-thread
0   libsystem_kernel.dylib        	0x00007fff8b73a716 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff8c06ac3b _pthread_cond_wait + 727
2   org.libsdl.SDL2               	0x00000001109927f2 SDL_CondWaitTimeout_REAL + 210
3   org.libsdl.SDL2               	0x0000000110a4ed52 SDL_CondWaitTimeout + 50
4   com.frogatto.frogatto-mac     	0x000000010e159bc1 threading::condition::wait_timeout(threading::mutex const&, unsigned int) + 17
5   com.frogatto.frogatto-mac     	0x000000010e107bab stats::(anonymous namespace)::send_stats_thread() + 203
6   com.frogatto.frogatto-mac     	0x000000010dc3c237 boost::function0<void>::operator()() const + 39
7   com.frogatto.frogatto-mac     	0x000000010e159928 threading::(anonymous namespace)::call_boost_function(void*) + 40
8   org.libsdl.SDL2               	0x0000000110993b37 SDL_RunThread + 135
9   org.libsdl.SDL2               	0x00000001109930f5 RunThread + 21
10  libsystem_pthread.dylib       	0x00007fff8c068899 _pthread_body + 138
11  libsystem_pthread.dylib       	0x00007fff8c06872a _pthread_start + 137
12  libsystem_pthread.dylib       	0x00007fff8c06cfc9 thread_start + 13

Thread 8:: com.apple.audio.IOThread.client
0   libsystem_kernel.dylib        	0x00007fff8b736a1a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff8b735d18 mach_msg + 64
2   com.apple.audio.CoreAudio     	0x00007fff87d54828 HALB_MachPort::SendMessageWithReply(unsigned int, unsigned int, unsigned int, unsigned int, mach_msg_header_t*, bool, unsigned int) + 98
3   com.apple.audio.CoreAudio     	0x00007fff87d547b6 HALB_MachPort::SendSimpleMessageWithSimpleReply(unsigned int, unsigned int, int, int&, bool, unsigned int) + 42
4   com.apple.audio.CoreAudio     	0x00007fff87d52f3e HALC_ProxyIOContext::IOWorkLoop() + 950
5   com.apple.audio.CoreAudio     	0x00007fff87d52add HALC_ProxyIOContext::IOThreadEntry(void*) + 97
6   com.apple.audio.CoreAudio     	0x00007fff87d5299d HALB_IOThread::Entry(void*) + 75
7   libsystem_pthread.dylib       	0x00007fff8c068899 _pthread_body + 138
8   libsystem_pthread.dylib       	0x00007fff8c06872a _pthread_start + 137
9   libsystem_pthread.dylib       	0x00007fff8c06cfc9 thread_start + 13

Thread 9:: file_change_notify
0   libsystem_kernel.dylib        	0x00007fff8b73aa3a __semwait_signal + 10
1   libsystem_c.dylib             	0x00007fff8db98dc0 nanosleep + 200
2   org.libsdl.SDL2               	0x0000000110994de4 SDL_Delay_REAL + 100
3   org.libsdl.SDL2               	0x0000000110a51d67 SDL_Delay + 23
4   com.frogatto.frogatto-mac     	0x000000010de72e2a sys::(anonymous namespace)::file_mod_worker_thread_fn() + 490
5   com.frogatto.frogatto-mac     	0x000000010dc3c237 boost::function0<void>::operator()() const + 39
6   com.frogatto.frogatto-mac     	0x000000010e159928 threading::(anonymous namespace)::call_boost_function(void*) + 40
7   org.libsdl.SDL2               	0x0000000110993b37 SDL_RunThread + 135
8   org.libsdl.SDL2               	0x00000001109930f5 RunThread + 21
9   libsystem_pthread.dylib       	0x00007fff8c068899 _pthread_body + 138
10  libsystem_pthread.dylib       	0x00007fff8c06872a _pthread_start + 137
11  libsystem_pthread.dylib       	0x00007fff8c06cfc9 thread_start + 13

Thread 10:
0   libsystem_kernel.dylib        	0x00007fff8b736a1a mach_msg_trap + 10
1   libsystem_kernel.dylib        	0x00007fff8b735d18 mach_msg + 64
2   com.apple.CoreFoundation      	0x00007fff87ae7f15 __CFRunLoopServiceMachPort + 181
3   com.apple.CoreFoundation      	0x00007fff87ae7539 __CFRunLoopRun + 1161
4   com.apple.CoreFoundation      	0x00007fff87ae6e75 CFRunLoopRunSpecific + 309
5   com.apple.AppKit              	0x00007fff8f82405e _NSEventThread + 144
6   libsystem_pthread.dylib       	0x00007fff8c068899 _pthread_body + 138
7   libsystem_pthread.dylib       	0x00007fff8c06872a _pthread_start + 137
8   libsystem_pthread.dylib       	0x00007fff8c06cfc9 thread_start + 13

Thread 11:
0   libsystem_kernel.dylib        	0x00007fff8b73a716 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff8c06ac3b _pthread_cond_wait + 727
2   com.frogatto.frogatto-mac     	0x000000010df960b3 void boost::asio::detail::posix_event::wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> >(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&) + 99
3   com.frogatto.frogatto-mac     	0x000000010df95856 boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&) + 150
4   com.frogatto.frogatto-mac     	0x000000010df95641 boost::asio::detail::task_io_service::run(boost::system::error_code&) + 209
5   com.frogatto.frogatto-mac     	0x000000010df95556 boost::asio::io_service::run() + 38
6   com.frogatto.frogatto-mac     	0x000000010df964e3 boost_asio_detail_posix_thread_function + 19
7   libsystem_pthread.dylib       	0x00007fff8c068899 _pthread_body + 138
8   libsystem_pthread.dylib       	0x00007fff8c06872a _pthread_start + 137
9   libsystem_pthread.dylib       	0x00007fff8c06cfc9 thread_start + 13

Thread 12:
0   libsystem_kernel.dylib        	0x00007fff8b73a716 __psynch_cvwait + 10
1   libsystem_pthread.dylib       	0x00007fff8c06ac3b _pthread_cond_wait + 727
2   com.frogatto.frogatto-mac     	0x000000010df960b3 void boost::asio::detail::posix_event::wait<boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex> >(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&) + 99
3   com.frogatto.frogatto-mac     	0x000000010df95856 boost::asio::detail::task_io_service::do_run_one(boost::asio::detail::scoped_lock<boost::asio::detail::posix_mutex>&, boost::asio::detail::task_io_service_thread_info&, boost::system::error_code const&) + 150
4   com.frogatto.frogatto-mac     	0x000000010df95641 boost::asio::detail::task_io_service::run(boost::system::error_code&) + 209
5   com.frogatto.frogatto-mac     	0x000000010df95556 boost::asio::io_service::run() + 38
6   com.frogatto.frogatto-mac     	0x000000010df964e3 boost_asio_detail_posix_thread_function + 19
7   libsystem_pthread.dylib       	0x00007fff8c068899 _pthread_body + 138
8   libsystem_pthread.dylib       	0x00007fff8c06872a _pthread_start + 137
9   libsystem_pthread.dylib       	0x00007fff8c06cfc9 thread_start + 13

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000000000000  rbx: 0x00007fff78421310  rcx: 0x00007fff51feb738  rdx: 0x0000000000000000
  rdi: 0x0000000000000707  rsi: 0x0000000000000006  rbp: 0x00007fff51feb760  rsp: 0x00007fff51feb738
   r8: 0x00007fff9220b959   r9: 0x00007fff8dba18d0  r10: 0x0000000008000000  r11: 0x0000000000000206
  r12: 0x00007fff51feb8c0  r13: 0x000060000050bba8  r14: 0x0000000000000006  r15: 0x00007fff51feb7a0
  rip: 0x00007fff8b73a866  rfl: 0x0000000000000206  cr2: 0x000000010e3cd000
  
Logical CPU:     0
Error Code:      0x02000148
Trap Number:     133

External Modification Summary:
  Calls made by other processes targeting this process:
    task_for_pid: 1
    thread_create: 0
    thread_set_state: 0
  Calls made by this process:
    task_for_pid: 0
    thread_create: 0
    thread_set_state: 0
  Calls made by all processes on this machine:
    task_for_pid: 161685
    thread_create: 0
    thread_set_state: 0

VM Region Summary:
ReadOnly portion of Libraries: Total=222.2M resident=104.7M(47%) swapped_out_or_unallocated=117.5M(53%)
Writable regions: Total=238.7M written=51.4M(22%) resident=100.0M(42%) swapped_out=20K(0%) unallocated=138.8M(58%)
 
REGION TYPE                      VIRTUAL
===========                      =======
CG backing stores                  3332K
CG image                             16K
CG raster data                       12K
CG shared images                    180K
CoreImage                             8K
IOKit                              60.7M
Kernel Alloc Once                     8K
MALLOC                            152.4M
MALLOC (admin)                       32K
Memory Tag 242                       12K
Memory Tag 249                      156K
OpenCL                               24K
OpenGL GLSL                        3840K
STACK GUARD                        56.0M
Stack                              13.7M
VM_ALLOCATE                        16.7M
VM_ALLOCATE (reserved)              148K        reserved VM address space (unallocated)
__DATA                             22.0M
__IMAGE                             528K
__LINKEDIT                         97.5M
__TEXT                            124.7M
__UNICODE                           544K
mapped file                        46.5M
shared memory                        68K
===========                      =======
TOTAL                             598.8M
TOTAL, minus reserved VM space    598.7M
 

Model: MacBookPro9,2, BootROM MBP91.00D3.B09, 2 processors, Intel Core i5, 2.5 GHz, 4 GB, SMC 2.2f44
Graphics: Intel HD Graphics 4000, Intel HD Graphics 4000, Built-In
Memory Module: BANK 0/DIMM0, 2 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343235533641465236412D50422020
Memory Module: BANK 1/DIMM0, 2 GB, DDR3, 1600 MHz, 0x80AD, 0x484D54343235533641465236412D50422020
AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0xF5), Broadcom BCM43xx 1.0 (5.106.98.100.22)
Bluetooth: Version 4.2.7f3 14616, 3 services, 23 devices, 1 incoming serial ports
Network Service: Wi-Fi, AirPort, en1
Serial ATA Device: APPLE HDD HTS545050A7E362, 500.11 GB
Serial ATA Device: HL-DT-ST DVDRW  GS41N
USB Device: USB Optical Mouse
USB Device: Hub
USB Device: Hub
USB Device: Apple Internal Keyboard / Trackpad
USB Device: IR Receiver
USB Device: BRCM20702 Hub
USB Device: Bluetooth USB Host Controller
USB Device: Hub
USB Device: FaceTime HD Camera (Built-in)
Thunderbolt Bus: MacBook Pro, Apple Inc., 25.1
"There are two kinds of old men in the world. The kind who didn't go to war and who say that they should have lived fast died young and left a handsome corpse and the old men who did go to war and who say that there is no such thing as a handsome corpse."

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 6:47 pm

@Velensk: Okay so it seems like there are two issues here. Firstly the business with your dlc folder, and secondly it crashing.

Are you sure you removed the stuff under the ~/Library/Application Support/Frogatto/dlc/ folder? Do that, then make sure the master-config.cfg file does NOT have --auto-update-module. After you do that when you run it it should not create anything in the dlc/ folder anymore and just be using what's in modules/citadel. I recommend making quite sure it's doing this. If you want to have the piece of mind that it is you could consider changing master-config.cfg to have --module=citadel_dev and rename your folder you got from git to modules/citadel_dev -- then the game will read the game data from that directory (and it won't be able to download anything since we don't have a citadel_dev module available for download).

Now, on to the crashing ... the game actually outputs a detailed log of what it is doing when you run it. Can you run the game from a terminal so you can see the output? It will tell you exactly why it's crashing. It looks from the crash dump like it's crashing while trying to parse a config document so it's most likely you made some syntax error when editing the document. (mismatched quotes, missing comma, something like that).
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Velensk
Multiplayer Contributor
Posts: 3979
Joined: January 24th, 2007, 12:56 am

Re: My latest project -- a digital collectible card game

Post by Velensk » March 17th, 2015, 7:46 pm

Question: which master-config.cfg I'm supposed to be modifying? I've modified the one in the git clone, I've modified the one in Application_Support/citadel (this being the folder where the cookies are stored), it's pointless to modify the one in Application_Support/frogatto if I'm going to throw it away, if there's one inside the application package I can't find it. Likewise the only modules folder I can find appears to be inside the application package and it has nothing about citadels. With all of these master-configs modified if I throw away the Frogatto dlc folder, it reappears when I open the program.

I'll do it again and this time run it with terminal and get you that error message. Once I have it, I'll edit this post.
EDIT: here it is.

It's odd though, it says that there's unexpected characters when expecting a ',' but I made sure that I didn't change anything other than a 2 to a 6. I tested it before with the altered portrait, and it worked, then I change the number and now it instantly crashes. EDIT3: As a note, line 12 is the one where the portrait is declared.

Code: Select all

CONSOLE: ['ZZZZZ heartbeat', {'games': 0,'servers': [],'type': 'heartbeat','users': 3,'users_queued': 1}]
CONSOLE: 'clicked'
PARSE ERROR: /Users/Velensk/Library/Application Support/Frogatto//dlc/citadel/data/campaign-gaea.cfg: line 12 col 15: Unexpected characters, when expecting a ','
PARSE ERROR: /Users/Velensk/Library/Application Support/Frogatto//dlc/citadel/data/campaign-gaea.cfg: line 12 col 15: Unexpected characters, when expecting a ','
ASSERT FAIL: /Users/kristina/Projects/buildslave/macbuild-trunk/build/src/formula_function.cpp:3980 ASSERTION FAILED: COULD NOT LOAD DOCUMENT: PARSE ERROR: /Users/Velensk/Library/Application Support/Frogatto//dlc/citadel/data/campaign-gaea.cfg: line 12 col 15: Unexpected characters, when expecting a ','

At data/classes/json.cfg 2:
doc asserting doc where doc = get_document(fname)
                              ^

At /Users/Velensk/Library/Application Support/Frogatto//dlc/citadel/data/objects/campaign_controller.cfg 417:
set(_campaign, Campaign<- lib.json.get_document_map('data/' + str(campaign))))
                          ^-------------------------------------------------^


---
---
libc++abi.dylib: terminating with uncaught exception of type fatal_assert_failure_exception
Abort trap: 6
benjamins-mbp:MacOS Velensk$ 
EDIT2: The syntax is also identical to other usages which were left unaltered.

Code: Select all

	{
		name: "The Dark Trail",
		text: "Battle the denizens of the forest. Be prepared to battle mighty beasts.",
		enemy_name: "Ilik",
		bot_args: {
			deck: "[string] :: ['Darkwood Denizen']*16”,
		},
		portrait: "mercenary.png",
		portrait_scale: 0.2,
		portrait_translate: [0, 0],
		avatar: "mercenary.png",
		unlock: "LOBBY",
	},

	{
		name: "Thundering Beasts",
		text: "Battle the denizens of the forest. Withstand their rush if you want to win!",
		enemy_name: "Uruk",
		bot_args: {
			deck: "[string] :: ['Darkwood Denizen', 'Wolf Rider', 'Wolf', 'Green Adder']*4",
		},
		portrait: "marauder.png",
		portrait_scale: 0.2,
		portrait_translate: [0, 0],
		avatar: "marauder.png",
		unlock: "MULTIPLAYER",
	},
"There are two kinds of old men in the world. The kind who didn't go to war and who say that they should have lived fast died young and left a handsome corpse and the old men who did go to war and who say that there is no such thing as a handsome corpse."

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 9:20 pm

Okay so from the error message it's clearly loading the wrong version of the file -- it's loading the one under Library/Application Support which we don't want. So let's concentrate on solving that and then see if there is still a problem after that.

The master-config.cfg file you want to edit is the one in the ArgentumAge-OSX.zip that you downloaded. In Contents/Resources/master-config.cfg in there. Not the one in your Library/Application Support.

Then you should have the citadel module you got from git in Contents/Resources/modules/citadel -- let's rename that though, rename it to Contents/Resources/modules/citadel_dev -- then change the master-config.cfg to have --module=citadel_dev

See if that works. If you still have problems, trying setting the --module in master-config.cfg to something invalid, like xxx. Then try running and see if it errors -- this will verify you're editing the correct master-config.cfg
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Velensk
Multiplayer Contributor
Posts: 3979
Joined: January 24th, 2007, 12:56 am

Re: My latest project -- a digital collectible card game

Post by Velensk » March 17th, 2015, 10:00 pm

This is a quick update, expect another one soon but think I have just run into something that could be rather illuminating.

So, the fact that I needed to put the git version into the modules folder inside the application was news to me and not really explained on the site (as a note, the downloaded file uses a capital C for citadel while the files specifics a lowercase one. Also, I found the correct master config, it was in a place I'd already checked.

So I decided before messing around with creating a development module that I'd just get the base game working. I simply moved it into modules, lowercased the 'c', deleted the Application Support version, and ran the program. For awhile it looked like it wouldn't run: the game went through its customary update, then after a pause it went into it again. I watched it fully update several times as if it couldn't figure out that it wasn't all the way updated. At length I closed the the program in the middle of an update. At this point the program opened up for real working fully, I checked the application support and there is no folder there.

I need to take a brief break to take care of something in the house but as soon as I'm done I'm going to try removing the auto-update and seeing if it'll run (and if it'll get rid of the endless update loop) and then I'll try making the citadel_dev module.
"There are two kinds of old men in the world. The kind who didn't go to war and who say that they should have lived fast died young and left a handsome corpse and the old men who did go to war and who say that there is no such thing as a handsome corpse."

Dave
Founding Developer
Posts: 7066
Joined: August 17th, 2003, 5:07 am
Location: Seattle
Contact:

Re: My latest project -- a digital collectible card game

Post by Dave » March 17th, 2015, 10:04 pm

@Velensk: That still doesn't sound right. There should be NO updating at all if you are set up right with no --auto-update-module and no --auto-update-anura in your master-config.cfg (Which is what you want, delete both of these flags). The game should go straight into Argentum Age. Updating is turned off so it shouldn't try to do it at all.

What do you have in your master-config.cfg ?

I recommend renaming to citadel_dev in the master-config.cfg and the directory name like I said above.

I will try on my Mac tonight to verify all this!
“At Gambling, the deadly sin is to mistake bad play for bad luck.” -- Ian Fleming

Post Reply