Re: [Pybem-developers] PyAtlantis Blatherings
Brought to you by:
abriggs
From: Anthony B. <ab...@we...> - 2007-11-30 12:17:49
|
On Thu, Nov 29, 2007 at 11:55:45PM +0100, Piotr wrote: > >Hi Piotr, > > >Good to see that someone's paying attention :) > > Well.. somehow one can not get rid of that addiction ;) And I think > that I am not the only person looking on Your code with one eye. ... > I am checking the code from time to time, looking through it/playing around. Yep, a few people have downloaded it and had a look, and a few of those have said that they're interested, but so far no contributions. I know it's early days, but still. > True. No patches. And this is actually the crux.. I do not have the > time to get involved in coding, for I am coming into the third third > of my PhD, and I am going to have an internship in the industry to > attend. Difficult update my python knowledge and commit myself to > PyAtlantis these days. Hmm, I suppose, but even small contributions can make a difference. A couple of unit tests here, a small patch there, it all starts to add up over time. Plus it's fun -- I work on PyAtlantis because I enjoy it; for me it's much like watching TV or going to the movies or riding my bike. No 'work' involved :) Of course, YMMV. > On the other hand, once the code is pythonized completely, I may start > to mingle around in it. Currently the code is fairly well 'pythonised', in that it's entirely in python, and most of the high level stuff is reasonably well broken down. It's not perfect, but getting there I think. I'd be interested to hear what people have to say about getting involved, or what's impeding them as far as getting going. eg. have you tried getting up and running on the code base? Or have you looked at it and been confused? Is my code style horrible? I've started putting in tests - maybe that'll help clarify some things? There's a README-DEV which contains most of the documentation (such as it is). Is that enough? Do you need more? If so, what sorts of questions do you need answered? Are there enough comments in the code? I've tried to make it as clear as possible, but what's clear to me may not be clear to others. Finally, I don't know whether I've been clear in describing the sorts of changes that I'd like to make in terms of extensibility - perhaps that's what's putting people off (Yawn, Atlantis in Python - why bother if we have the C++ version?). This reply is pretty long, but I've hopefully covered most of the bases as far as why I'm doing this, and why I think it's the only real hope as far as future Atlantis development goes. > Again, I think Your initiative to restructure the Atlantis code in a > language like Python starting from a low version number is a great > opportunity to make it a much more interesting, and playable game. It's a good way (I think) to sidestep some of the design issues that Atlantis has had (ie. micromanagement) while still keeping the original feel of the game. > Well... I have sent a cc to two Arcadia veterans, notably the Arcadia > developer and coder, Bradley, and one of the most feared strategist, > Patrick. Both played Atlantis extensively and some other play by email > games as well, and may be the will give some feedback on this one. > Also, Jan and Max are on board here. Based on what I've seen of their work on Atlantis, Arcadia and ALH, they'd be more than welcome to jump in and help out. Just let me know what your sf.net ids are and I'll add you to the project. (You can send me patches too, but that tends to be annoying). >> ps. Just for the record, I think v4 is fairly reasonable, for some >> definition of 'reasonable'. > The point is, 'reasonable' is not enough. Well, yes - if you don't like the design of Atlantis. It's quite possible to bend the rules in interesting ways, but there are some core issues which are much harder to remove without rewriting large chunks of the game. > 1) Roleplaying: > There is not enough roleplaying for a roleplayer. I'd say it goes much deeper than that. The issue is that there's basically one way to win: conquest. All of the players will therefore be warlords, or minions of warlords, and roleplay accordingly. Perhaps an example will clarify things: I didn't really agree with the changes that Arno made to st.atlantis, but after playing in it for a while, I can see some good things - trade is much more worthwhile, perhaps even better than taxation in some cases, so there's much more incentive for neighboring factions to try and hammer out trade routes. I can envisage factions coming to blows over access to cities, and the associated trade, or ambushing trade caravans. From a game design point of view, this is good, since there's now more than one way to make money/hurt other players: target their trade routes. If there's more than one way to succeed, and war isn't everything, then you'll attract more types of player, rather than just the min-maxing weenies. > 2) Micromanagment: > We had this before. Too many useless, or unimportant options to mingle > with. Yep. My main plan for this is to make cities a player-controllable object, which once controlled can produce resources, buildings, roads (and bridges?), and generate armies directly. A'la Civ, basically. Once you have some basic buildings, you can build more advanced ones, and so on. Probably other stuff too, like decent trade -- if you have more resources (iron, copper, zinc, lead, etc) you can require them for various buildings, or spells. This gives players much more incentive to actually trade, and cities can help set up trade routes or set market prices, etc. > 3) Strategy, Game Goal, Faction Development > Currently, there are few good ways to win a game of Atlantis. Usually, > it is something about expanding exponentially, getting the first ally, > ganging up on Your neighbour, get mages/heroes high level items, crush > more enemies.. until micromanagment kills You. Your faction becomes > more and more static until turn 30, when You decide that You can not > deal with it any more. I think that there is one basic problem, which is that factions get much harder to control to their full potential as they get larger. This means that in any sort of 'conquering' game you grind to a halt as soon as you get successful. I've had two main thoughts as far as how you 'fix' this: 1. Make factions easier to control (see cities above). Once you start winning, you'll tend to keep winning. I don't see a big problem in rewarding players (with in game power) for doing well in the game. If someone gets big and nobody can stop them, then they should win. Another thing to mention is that compared to the map size in Atlantis, units *crawl*. By the time your empire gets succesful, it can take a *game year* for reinforcements to arrive. Compare that to the early european explorers, who could circumnavigate the globe in a sailing ship in a year or two. What would the game look like if a winged unit could move 12 hexes per turn instead of 6? or 20? Or riding units could do 8-16? More diplomacy? Very possibly, since relatively far away factions could come to your aid. I have some ideas to rein that in, but you get the idea. 2. Once a faction gets to a certain size, it becomes possible for them to have a revolution in parts of their empire. This could be a legitimate in-game reason for adding new players in an open-ended game, or they could cede to a neighboring faction, or become neutral (NPC?) Neither of these options are particularly feasible in the C++ Atlantis AFAIK. > Ergo: There are lots of games like Atlantis on the open source market, > and most of them have the flaws mentioned above. What would be really > a challenge to a game developer is a crackdown, simplifacation and > refinement of the essential rules that play a role in this game and > it's implementation in the code. A fresh code like PyAtlantis. > > My opinion is: The simpler, the better. Most brilliant and addicting > games I have played had a quite simple ruleset, i.e. chess, Starweb, > space empires (by Richard Wolfe, now run as hegemony by Skotos), > diplomacy, Poker, Brigde, etc. And note: These games were not open > ended, they all were balanced according to a certain game goal. My (different) take is this - I have no idea what'll make Atlantis a better game :) Most of the things that I've suggested could be awful, or could be big crazy rabbit holes of work. The only way to find out is to try them, and I'm not keen on trying them out with the current C++ Atlantis code. In Python however, it's a different story. Much more flexible and powerful (although that doees create interesting problems in and of itself), and therefore much easier to test out different ideas and see what works. Python's an ideal prototyping language. > By the way, here is a small present for You :) > > ------------------------------------------------------ > BUG REPORT: > > piotr@vs150230:~/pytest$ ./atlantis1.py new > Traceback (most recent call last): > File "./atlantis1.py", line 442, in ? > game.main() > File "./atlantis1.py", line 57, in main > self.newgame() > File "./atlantis1.py", line 137, in newgame > self.map.makeblock(0,0) > File "/home/piotr/pytest/map.py", line 215, in makeblock > region = Region(self) > NameError: global name 'Region' is not defined Yep, there are bugs in the code base :) That's hardly suprising, since I'm basically only running one game. The test game is sporadic, btw, since I have to babysit it when it runs. Once it's stable enough it'll get run automatically. That bug, and another more serious one to do with caching, have been fixed in svn. I've also added the preliminary work that I've done towards making orders more modular (an Order class). I've started putting in unit tests to stop these issues recurring, but it's early days yet. Hope that helps encourage a few of you to help out :) Anthony -- ------------------------------------------------------ HyPerACtIVe?! HEY, Who ArE yoU cAllInG HYPERaCTive?! ab...@we... ------------------------------------------------------ |