• Content count

  • Joined

  • Last visited

Community Reputation

432 Neutral

About ajones

  • Rank
  1. Text sanitization

    May be a silly suggestion, but could you write an XML schema for the sanitizer, then just validate the XHTML against that? Of course, this implies that you're happy with the sanitizer stage doing: invalid content -> error message, rather than: invalid content -> valid content.
  2. Books you cannot put down

    I've found Robin Hobb's novels particularly difficult to put down. Reading Magician also involved many overnight reading sessions!
  3. I just wanted to say that I loved Watchmen. Different strokes for different folks, I guess.
  4. Left 4 Dead

    Quote:Original post by curtmax_0 Quote:Original post by trasseltass Quote:Original post by curtmax_0 .. I haven't even played Fallout 3 since the demo came out. Fallout 3 is still GOTY in my book :) Closesly followed by LBP and WAR.. I didn't stick with Oblivion for some reason, but F3 is just great. LBP looks fun but haven't played it yet. I played WAR during beta and for about a month after release. I quit because the T4 RVR was retardedly unbalanced, and nobody fought in RVR areas because it was pointless. Also, in T4 the only secenario is Serpent's Pass. I swear, I played T4 scenarios for two weeks and got to play 1 or 2 of the other scenarios once. Also, don't get me started on the LOLBWIB order teams... I'm probably gonna go back in a few months and see if they patched away the retardness. Seeing as how the V.P. is such a V.I.P., shouldn't we keep the P.C. on the Q.T.? 'Cause if it leaks to the V.C. he could end up M.I.A., and then we'd all be put out in K.P. Left4Dead is on my Christmas list [smile]
  5. getting exports of a dll

    Take a look at Scott Bilas' FuBi stuff (see this page for a list of Scott's publications). A summary from here: Quote:At runtime FuBi will iterate over the Win32 export table, and extract name, type and calling convention information from each entry. Other subsystems can look up functions by memory address, name, or serial ID and call them generically using one of the blind call utility functions. HTH
  6. Thinking before coding

    Try sitting somewhere other than in front of your PC, and illustrate your complete solution on paper before coding anything out. The illustration then guides the definition of core concepts and behaviours, which then translate to API documentation (e.g. javadoc comments), unit tests, pseudocode and then code. If you can't illustrate your solution, then it is unlikely that you entirely understand the problem and/or your proposed solution. Sitting away from the computer helps to resist the temptation to start coding. By 'illustrate' I don't necessarily mean a UML diagram - an annotated box and line drawing is fine. The idea is to put everything on paper in order to close the semantic gap between your mental pictures and the programming language.
  7. RPG: Creeping jumps

    I'm a big fan of the old 2D Black Isle D&D RPGs, so I'm used to RPGs with jumps (i.e. levelling up). Here's a response to your thoughts in that context: +) Player can feel the progression. -) Longer periods of time between them. Neither of these are bad IMHO. I'll agree that the progression is easily noticed in most cases, especially if the skill is used frequently (e.g. ability to hit a creature) or an essential part of gameplay (e.g. movement speed). The player often needs such rewards in order to justify spending points in one area rather than another, and to indicate that the player character is in fact progressing. The progression of other skills that aren't used as often (e.g. persuasion or pickpocketing skill) may not be noticed as much, so it may be important to indicate to the player that something has improved (e.g. by biasing toward success first time after levelling up) in order to get the same effect. The longer periods between jumps as your character improves are to be expected, and in my experience increase the appreciation of such skills. You have to be fairly committed to forcing your player down the fighter route, slowly building up the points until he's a complete tank able to smack down even the biggest nasty. It _should_ take a while, or there's no appreciation when the nasties get clobbered. There should be a connection between nasty gets clobbered -> because I've invested in appropriate skills over time -> I'm responsible for my character being able to clobber this nasty -> OMG I'm so 1337! Contrast this with nasty gets clobbered -> because I chose the correct stats five seconds ago -> whoopie it's like playing championship manager. +) Friends and foes are easier to "understand" and measure. -) Less diversity in friends and foes. I think the former comes from allowing the player to recognise how other characters have been assembled. In Baldur's Gate, for example, I knew that most wizards would be physically weak, because I've been developing a mage character myself and know that I've spent most points in intelligence rather than constitution. I know that the wizards will be using magical spells to protect themselves, and depending on the levels of my own characters, what protections are likely. I know that stripping the protections with my mage and then bashing the mage with my fighter is likely to kill the mage. The point is that this has nothing to do with jumps or creeps - it's an appreciation of how the game world works that leads to an appreciation of the characters in it. I'd argue that a creep-based game will have roughly the same level of understanding of other characters as long as the game's underlying mechanics are visible to the player (in this case, the stats and strategies required to build and play a mage character). Diversity isn't used enough. In the RPGs I've played, you rarely get a complete mix of skills and character types as NPCs. Instead, you get the most successful combinations of the skills and characters - stereotypical mages, clerics (or druids), assassins (i.e. backstabbing thieves), archers (i.e. ranged thieves) and tanks (fighters). There's plenty of opportunity to give diversity to characters if your character creation and progression system is complex enough, regardless of the level of said characters (again, note that jumping and creeping has little to do with the diversity here). Diversity will depend on the available options and useful combinations available to the player. More interesting characters (i.e. those further from the stereotypes above) tend to be less effective (e.g. due to spread of skills), or take longer to build (e.g. battle mage). A better selection of available skills, and an emphasis on their combination might improve diversity (e.g. allow skills to affect one another so that the mage is still improving his casting abilities by spending points on combat abilities). +) Much easier to balance the game. -) Player can more easily get in over his head with tougher enemies. I'm not sure I agree with either of these. How does creeping vs jumping affect game balance? Surely game balance is going to focus on the available skills and abilities and their combinations (i.e. aiming for player skill and progression choice to determine success in the game world), rather than how often one levels up? What are your thoughts here? I guess you might encounter an enemy character with one more point in their combat skill than your character, and if each point gives a big boost, then you are going to have a problem (especially if you're building a more diverse character). However, a good game should be about more than the abilities themselves - the game should be about players using the skills and abilities appropriately in order to affect his success - for example, using a taunt skill to anger the enemy and thus reduce the affect of his additional combat point. Quote:I was mostly referring to skills. Attributes like strength and speed would most likely keep creeping, if they even become progressive at all. ...People in real life can have major breakthroughs in their skills. ...The only way to really be happy with your progression is to measure yourself at some point and keep comparing to it. ...One thing that I've considered is to have creeping with rewarding jumps. Dungeon Siege had a great system whereby your skills improved through use, and once they reached a certain point, you got to spend points in order to guide further progression. I really liked the idea, and I think you're working along similar lines. I think a mix of creeping of jumping is the right way to go, especially with strength: you would expect one's strength to improve quickly at first, and slower later. Having certain points where one realizes that progression has been made, and makes decisions regarding further improvement ("I'll try heavier weights") allows the player to remain in control. My 2p (sorry it's a bit long-winded - I'm bored!).
  8. Quote:Original post by Trapper Zoid The questions I'm unsure about are: is this actually a problem? and if so, what is a good way to fix or get around it? - If you can guarantee that the memory pool is being created before any Signal0 objects, then it will also be deallocated after any Signal0 objects, and in this case you don't have a problem - static objects "are destroyed in the reverse order of the completion of their constructor or of the completion of their dynamic initialization" [C++ standard 3.6.3]. - If you can allocate a Signal0 object before the memory pool, then you're opening a potential can of worms, as these objects will be deallocated after the memory pool, leading to bad juju. Some possible solutions off the top of my head: - Ensure that the memory pool will always be created before any Signal0 objects (e.g. the construction of a Signal0 depends on a memory pool object being available). - Allow the memory pool to remove any dependency on itself from the Signal0 objects (e.g. in the memory pool destructor, go through each associated Signal0 object and reset any connections to the memory pool). - Replace static Signal0 lifetimes with something you can explicitly control (e.g. pointers to dynamically allocated Signal0 instances). I hope this helps... if not, then it's a free bump at least! [smile]
  9. Gigantor supernova!

    Quote:Original post by _neutrin0_ This should put things into perspective. :) Comparison video linked from ApochPiQ's Wikipedia post
  10. I'm in a bit of a hurry, so sorry if I haven't applied enough thought to this and my suggestion isn't very helpful after all... Have you looked at possible boost::variant applications (with an appropriate visitor) here?
  11. Game: Halo (1 and 2?)... and many others 'featuring' a torch Feature: Torch battery drains Comments: It's dark -> I can't see anything -> slightly annoyed. TORCH ON -> okay, continue... Torch battery expires -> TORCH OFF -> WTF. Wait until torch battery recharges... TORCH ON-> okay, continue... [rinse, repeat] I know the torch is intended to increase the sense of atmosphere in dark, scary games (I see the point), but [1] I don't have a torch in real life that dies every minute or two, [2] surely the designer could have added the intended atmosphere another way (sound, gameplay, story...?), and [3] all the designer has achieved is for me to sit and wait for the recharge anyway... grr! [Edited by - ajones on April 20, 2007 7:43:23 AM]
  12. Spell names

    Quote:Original post by Kylotan There's also the idea of referring to them by their component parts, which may have functional names or somehow embellished names. Four Crystals Of Trazere: spellcasting system This works best with a create-your-own-spell system, though the Ultima spellcasting system was similar, I believe. OMG! I used to play that game when I was a kid! Awesome!
  13. Spell names

    My first impression was to KISS: the straight to the point style is simple, descriptive, provides enough<i/> information for the user, and can even be generated (e.g. "cone shape" projection + "cold" effect = "cone of cold"). To be honest, unless the game's back story and history are interesting already, I don't really care about spell/item/character/place names that much. D&D and MtG are two noteworthy exceptions: some of the characters have the occasional spell/artefact named after them, which begin to hint at something more interesting and involved. For example, the brothers' war in MtG is only hinted at across many different cards, and you can slowly build a picture of the history through snippets from individual cards. The legendary style isn't actually a big step from the straight to the point style: simply presume a number of major history events/characters exist, and add a twist to the straight to the point name to provide a reference to that history. Again, this could be generated fairly easily. For example, keep a small database of magical "inventors", including the time (years) they were around and the areas they were interested in (cold,fire,levitation,etc). Then, for each spell, look for the most recent or relevant inventor for its components. "Ursa" interested in "fire" components? "arrow projectile" + "fire" = "Ursa's Flaming Arrow"! It would be easy to add pre and post fixes to the spell names to add a little flavour (e.g. "Ursa's Flaming Arrow of Doom/Death/Halitosis"). The poetic style requires each spell to have a creative process, including knowledge of the game world's history, races, characters, settings, etc... too much work IMHO, particularly if you're hoping to have a lot of spells. - my 2p. [smile]
  14. Notepad - WTF!!!

    Here's another one: 1. Launch notepad 2. Write some text spanning multiple lines (or open an existing document) 3. Hold Right-Control and press Right-Shift (just like any other windows key combo) 4. Text jumps to be right-justified 5. Try adding some more text - non-alpha numerical characters have odd behaviour... 6. Hold Left-Control and press Left-Shift to revert back to left-justified First time I did this I was selecting whole words using right control and shift characters + left and right cursor keys. Somewhere in there I did a Ctrl-Shift and my text changed to right justified - it took me a while to find out why!