Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Member Since 25 Nov 2005
Online Last Active Today, 03:50 PM

#5110133 CCG patterns and antipatterns?

Posted by LorenzoGatti on 18 November 2013 - 04:13 AM

The overall outline for the game is that you've got a commander or leader of some kind that determines a lot of

your base stats for the game - health, toughness, strength, resource income, certain spells or abilities, etc. The

rest of your deck then gives you the ability to 'cast' various allies or creatures, spells, equipment, castles, and

battlefield terrain. Battles would be fought on a grid reminiscent of Heroes of Might and Magic, with your Leader

beginning on the field somewhere on your side, and your opponent's leader on his side.

This seems extremely incoherent.


- If you want a card game in which the Commander deploys units and does useful things by playing cards, both sides should start out on an equal footing, with nothing on the battlefield but identical Commanders differing only in the contents of their card deck. Commander experience should give only cards, not troublesome advantages.


This is the Magic: the Gathering approach: everybody begins with 20 life, 7 cards and nothing else, any difference between players would be an almost unheard of handicap match, and a disadvantage of 1 or 2 cards often means defeat regardless of decks and player skill.

Fixed starting conditions allow players to optimize decks for a single scenario, rather than being forced to do everything (badly). For example, suppose you want to make an all-in aggressive deck (i.e. one that forfeits defense and runs out of resources to kill the opponent with cheap cards before he does much): should it reliably do 15 damage by turn 2, 20 damage by turn 3 or 30 damage by turn 4? Starting at 20 life means that the first deck is too weak, the second is the right target, and the latter is too slow; starting anywhere between 15 and 30 life means that all-in aggressive decks cannot operate properly against most opponents. 


- If you want a grid-based, turn-based tactical combat game in which "health, toughness, strength, resource income, certain spells or abilities" of the Commander matter, the Commander is only one unit in the player's army and there's no reason not to begin the battle with more units, their equipments, already cast spells, etc. Cards could still have a role, for example to determine which special combat actions are available, but the CCG aspect would be limited.


A recent particularly pure example: Chaos in the Old World, a strategic game in which Chaos Gods conquer and corrupt regions of the Old World. Every turn, each player spends resources to place units in some region and to play cards from a god-specific deck,  which have local effects (one region, or even specific units in that region) and are aligned with that god's specialty and victory conditions (e.g. Khorne, god of slaughter, who scores points for killing others' minions, has many cards to fight more or to win fights).

There is no "commander" (major demons are merely middle-late game expensive units, not leaders) and no deckbuilding (the four gods are already very specialized, while selection and placement of units is the backbone of strategy); cards cause uncertainty and offer an opportunity to make the difference with dirty tricks, putting the right amount of Chaos into what would otherwise be a small scale hybrid of Risk and Diplomacy.

#5110126 Some questions regarding texture generation

Posted by LorenzoGatti on 18 November 2013 - 02:57 AM

- Why don't you like downscaled normal maps? If the 8K ones are normalized, why should they be normalized again?

- What's a cavity map? Are you sure it's directly related to the normal map?

- If you don't like a specular or roughness map, what prevents you from retouching it with an image editor?


#5108940 Version Control and programming with a team

Posted by LorenzoGatti on 13 November 2013 - 05:28 AM

Wouldn't the size problem be reduced if you avoid putting continuously updated precompiled binary files into git/mercurial and dont add all kinds of external stuff you depend on into a single repository but instead have some sub-repositories?
You could also split it up to put the source art files, the compiled art files, the compiled code into 3 svn repositories, to reduce the load in the dvcs further by only having source code inside. Or add some custom merge tool for some binary files or convert them when storing into the repository to make them mergeable.
Maybe on bigger projects people have some buildserver already that compiles everything for testing commits, that could also update the separate svn repositories for compiled things, for the artists to avoid having to compile code and the programmers avoiding to convert art files themself?

Compiled binary files have no reason to be in SOURCE control. Important ones, such as public packages of release or beta test versions, should be archived to Dropbox, network shared drives, or other types of "dumb" storage by build managers to let others download them as needed.
Old compiled binary files, as opposed to compiling the game by themselves, are needed by developers only for unusual reference purposes (e.g. testing that building the appropriate revision of the sources reproduces what's been released), not to be routinely updated, compared, and be copied to or from their personal workspaces like sources.

Correctly managed binary source assets are unlikely to be troublesome: they should be available to everybody (enabling all developers to build the game), which is a good reason to make all revisions easily available, and they should change only rarely and in meaningful fine-grained increments (for example, repainting a 3D model should change that model's texture maps, not a big texture atlas containing lots of unrelated images; the big texture atlas can be kept outside source control and rebuilt automatically).
A sane organization of assets and build tools is an opportunity, not a cost incurred because of source control; setting up an easy, automated and effective workflow using source control should be compared to skipping the initial effort, sinking into progressive complication and confusion, and throwing the towel (or wasting a lot of time) because of errors in manual builds.

#5108929 Version Control and programming with a team

Posted by LorenzoGatti on 13 November 2013 - 04:45 AM

You can run Git on your web server, with authentication to restrict repository access to your colleagues. It isn't difficult; I set up Git as a CGI (using Apache on Windows) with SSPI authentication (Windows network domain) and a whitelist of allowed Windows users without any trouble.

#5108926 Programming a "TV"

Posted by LorenzoGatti on 13 November 2013 - 04:27 AM

But is it really faster to use real time calculations instead of a pre-rendered texture for the distortion offsets? I always thought it was the other way around - texture sampling should be faster than these calculations, at least. You're doing the calculations every frame, whereas for the texture - it is only filled with the distortion offsets once.

Don't guess, measure. Run benchmarks with both versions of the shader applied to a set of computationally heavy cases of your game (e.g. multisampling and unusual amounts of overdraw to stress fragment processing, lots of geometry to stress vertex processing, artificially inflated texture number and sizes, etc.)

#5108648 Question about Program Counter

Posted by LorenzoGatti on 12 November 2013 - 04:20 AM

From what I read the Program Counter can hold the address of the current instruction or the next instruction.

1) Does that mean it can only hold one of the two at one time? If so, why is this?

The program counter and the accompanying notions of current and next instructions are abstractions, very useful to define what the various jump instructions do (choose the next instruction to execute, overriding the default of the one after the current instruction) but not necessarily related to how a processor actually works. Instructions can be executed out of order and simultaneously, making these concepts something that is merely emulated from the point of view of the program.
You can trust a processor to hold the address of an instruction it's fetching for as long as it's needed and then forget it, but there can be a queue of instruction addresses to fetch (possibly shared by multiple hardware threads or multiple cores) or something even more different from a program counter register.

I also read an instruction needs to get fetched, is the program counter doing the fetching too? I thought it was its job is to hold address of an instruction. blink.png

Fetching data from memory is the job of specialized hardware, including the instruction cache. Registers simply hold addresses, which are sent to the appropriate parts of the microprocessor.

2) When an instruction gets fetched: what does it mean for a program counter to increased its stored value by 1? Is it as easy as adding the number 1 to this value?

If you pretend the program is a sequence of instructions, you go to the next one; at the abstraction level of memory addresses you need to account for the length of encoded instructions, which is often variable.

3) Is the address of the instruction binary or hexadecimal? Is it encoded beforehand before the program counter fetches it?

Circuits and registers count in binary (high/low voltage); hexadecimal is only a human-friendly representation of binary numbers that, unlike decimal numbers, doesn't involve carry. But actually it's none of your business, the only addresses you need to read and write correctly are the ones in your program (which can have a far more complex structure with segments, offsets, implicit or discarded bits, etc.).

4) If the program counter is holding the address of the next instruction, is the instruction register holding the address of the current instruction?

The IR is an abstraction (what's the processor doing?) that doesn't correspond directly to microprocessor operation; the instructions being executed are represented implicitly in the configuration of what each register and execution unit do at each clock cycle. Moreover, what's executed is usually a sequence of low-level operations, not the complex instructions in the program.

5) Who does the decoding of any of the two addresses of the instructions?

Usually, dedicated address decoding units (hence the famous historical repurposing of the x86 LEA instruction to do arithmetic); on the cheap, the same ALUs used for general arithmetic (a lot slower). The result is the same, so it doesn't matter for the programmer.

#5108640 Mechanic for internal struggle of an empire (strategy)

Posted by LorenzoGatti on 12 November 2013 - 03:35 AM

On a more serious note, just managing nobles seems meh to me. As King of Men said, if you want to manage nobles go and play CK2, it portrayed it very good. I don't think I woulod be able to do it much better than they. Plus, I lean more towards a bureaucratic empire, like there is this emperor and organizations, guilds, corporations, social struggle, spreaders of dangerous ideas. Less feudal and more modern (not that they can't be nobles there, I don't have anything agains them, but just limiting it to nobles seems not so great to me).

You imply that managing nobles in a bureaucratic empire is inappropriate, but you can focus gameplay on handling specific important people (as opposed to giving abstract orders to faceless organizations) in any social structure.
If nobles have a limited importance for the Empire and the Emperor (e.g. as sources of succession by assassination plots, as marriage fodder and as trusted diplomats), the game can bring to the forefront other types of important people: generals and heads of bureaucracies, political or religious leaders, scientists and artists, entrepreneurs and managers, and all other relevant types of powerful or influential special persons (e.g. fairies or alien visitors, artificial intelligences, superheroes of all sorts, wizards...).

#5106878 Can programming screw my computer

Posted by LorenzoGatti on 04 November 2013 - 04:25 AM

I would recommend the latest version of Python 2 (currently 2.7.6) rather than Python 3, simply because most of the libraries you might be likely to use still support the older version, and because there are still currently more resources available for learning 2.7.

I prefer the opposite perspective: use the latest Python 3 version because the language and standard library are improved, and you don't want to depend on third party libraries that are demonstrating obsolescence and lack of maintenance by not having a Python 3 version.
Enough time has passed since the introduction of Python 3 to give library maintainers a fair chance, and important libraries like Numpy and PyOpenGL have been ported without trouble: libraries without a Python 3 version are either abandoned, developed by someone too clueless to care, or legacy software that should only be used for maintenance of projects from the Python 2 era.

#5104286 Strictly Dominant Strategies and the Tech Tree

Posted by LorenzoGatti on 25 October 2013 - 02:55 AM


Some tech trees offer 'upgrades' that serve the same function and are an improvement in every way to their predecessor -- a strictly dominant strategy, and therefore it's not a choice, it's a no-brainer.

No, not really. For example, miniaturized weapons that perform as well as the respective older models but use less spaces, crew, energy etc. are strictly better, but they are dominant only if they are the only weapon type in the game.
Ordinarily, rock-paper-scissors structures are perpetuated with better rock, better paper and better scissors.

Upgrades often provide a tradeoff between quality and quantity (do you want to win battles with more casualties or with more expensive ones?) and a reason to invest enough on technology to keep pace with enemy developments that could make player assets suddenly obsolete (e.g. you'd better invent Teleporting Nukes before the enemy improves Point Defense Lasers enough to make short work of your stealthiest Nuclear Missiles).

#5103605 What dev tools should I use ?

Posted by LorenzoGatti on 23 October 2013 - 01:47 AM

Nope, I'm not regarding to the language. I'm pretty versatile, i just need something solid enough to make my game run fine. I'm even ready to drop dollars in the engine if I need too. 


My game is not that complex, it's pretty similar to Street fighter 3 third strike, with more animation. I think that should help you to answer my question ^^ 

Any good 2D engine should be appropriate for a fighting game; genre-specific features are something you can develop gradually and iteratively on your own. Therefore, to select a particularly suitable engine and ensure the project is feasible, experiment with the general-purpose features you are going to rely on, for example:

  • How do you import, organize and edit sprites? You'll need an awful lot of them. (While you are at it, include your graphics editors and file organization in the evaluation.)
  • How do you define and use collision silhouettes? You'll need to tweak them a lot, and every pixel counts.
  • How do you author and preview animations? They are going to be at the top of the complexity scale, with state management, branching, timeouts, etc.
  • How are collisions handled? You are going to process and prioritize a lot of different event types. 

#5103060 Metagame in Competitive FPS

Posted by LorenzoGatti on 21 October 2013 - 02:47 AM

What you are describing is not metagame, it's only the layering of "scientific" learning (weapon data) and advanced team skills (tactical awareness, communication) over basic single-player skills (running, shooting). All this knowledge, and all skill layers you describe, apply strictly to the game itself. Metagame, on the other hand, is outside the scope of the game's rules. For example, knowing how and when and where and why you should use various kinds of anti-tank weapons is a game skill at all level of sophistication; equipping your team with a lot of anti-tank weapons because you expect the other team to use a lot of tanks is a metagame decision. So the real question is whether, for players, figuring things out for themselves is fun and/or instructive (how do you ensure that they learn from expert players but have fair fights with someone at their level?) and whether the things to be figured out are worthwhile (for example, if your M16A3 is so good, maybe you should remove other disappointing assault rifles, or explicitly demote them to handicap weapons that nobody should use competitively, or nerf the M16A3 to make the choice of assault rifle more difficult and important).

#5102072 Any ideas for the "perfect game design tool"?

Posted by LorenzoGatti on 17 October 2013 - 02:25 AM

You might want to revise your thread title, because from what you ask you seem to be concretely working on a practical tool, not daydreaming about a meaningless perfect one (as is typically the case for "I have an idea" forum threads). While you are at it, can you narrow your generic request for feature suggestions by explaining what does your "game design and non-linear writing tool" do and how does it compete with pencil and paper, with spreadsheets, with text editors, with diagram-drawing software, etc.? Telling which features could be appropriate is very difficult.

#5101756 My quick RPG storyline

Posted by LorenzoGatti on 16 October 2013 - 01:50 AM

1. A woman named Sheila is born in a tribe of only women and is to be eaten by a dragon because she is a virgin.

If women do it to each other, it isn't sexist! Just kidding, of course: this virgin business remains quite inappropriate for a game that's presumably meant for a younger audience and likely too silly for a kinky "adult" game.
You might keep the rather traditional human sacrifices to appease the monster, but why and how Sheila has been selected as a sacrifice? Who is she?
Is the tribe of women important or just a simple way to preserve Sheila's virginity? Did you consider the implications and complications, like disposing of male children, finding men in order to reproduce, and unavoidably common homosexuality?

She must travel to find someone to lose that quality to so she doesn't get eaten.

Traveling to put some distance between herself and the dragon and/or her tribe seems simpler and far less silly (not to mention more adventurous if someone is, or might be, following our heroine).

2. A warrior has the power to slay the dragon and is the Chosen One, but his fear of ghosts holds him back.

What chosen one? What does it take to kill a dragon? For example, Siegfried kills Fafnir because he is well equipped and, more importantly, he doesn't know fear; your dragon and your warrior need to be at least as meaningful as them.
There's also the unfortunate implication that if the dragon is an important force of nature the warrior that can kill it is somehow evil and unnatural.
What do the ghosts do, other than hanging around the dragon?

What he doesn't realize is the ghosts are on his side because they are all the souls of women eaten by the dragon.

Not obviously important: how can the ghosts be a threat to the dragon?

3. The dragon is eating women because their beauty he consumes gives him the energy to keep the world beautiful.

Extremely bizarre, both for the jarring dissonance between a story of normal or slightly special folk and this cosmic mystical power and because it makes little sense. If the dragon is portrayed as evil, he should do something worse than "keeping the world beautiful"; if he is portrayed as good, people would be proud to be a human sacrifice and there would be no reason to fight.

The characters decide to kill the dragon anyway.

Then the dragon should be evil and/or dangerous. But apart from consuming sacrifices, what has it done? Also, what ties Sheila and the warrior together? Romance is implied, but how does the plot require them to join forces?

4. At the end of the game, Sheila decides to split her form in two, and morph one of the two forms into a dragon, and eat her other form, to restore beauty to the world.

Horribly cheap, and implying that, all along, Sheila was a goddess or the like, the dragon's equal at the very least. Can I suggest gods turning either Sheila or the warrior into a new dragon instead?

#5101236 Illegal Instruction, possible causes?

Posted by LorenzoGatti on 14 October 2013 - 04:08 AM

A function pointer into garbage memory, as pixelartist suggests, seems the most likely cause: from your description, you seem to be compiling the program properly.

Can you detail the difference between a test program that runs and a test program that crashes? Do you link to different libraries? Do the two development environments on your two computers produce different programs? (They shouldn't.)

#5099849 how to write a mind blowing Technical Design Document?

Posted by LorenzoGatti on 09 October 2013 - 02:05 AM

thanks, seeing as this is my first official project that counts towards my final marks i want it to be perfect / mindblowingly so, biggrin.png  i really appreciate the help and direction im getting here, thank you, 


question... would a TDD contain example coding for say some sort of AI and then explanation of why i have structured certain aspects in such a way? 

Excessive details about how the game works are going to be worthless in a TDD, because they are volatile and because they are only interesting for coders who are going to work with the authoritative actual sources and data files, not with your incomplete and potentially obsolete quotations and summaries.


Provide an overview of the important technical choices and their reasons, without neglecting the options you discarded; you'll need such "theory" as a starting point to revise those decisions (possibly in another project) and/or as evidence that your decision-making process was sound and diligent (both to convince yourself that your TDD is finished and down the road when your technical choices turn out to be disappointingly bad or unfit for unforeseen requirements).

For example, suppose that at the beginning of development you chose a middleware that does what you need, and then halfway through your project the company that should provide updates and support for it suddenly evaporates. Can you show your manager that when you researched that solution you found nothing but popularity, customer satisfaction, timely updates and good support? Or does your TDD show that you neglected the less technical aspects of the software selection process?