• Content count

  • Joined

  • Last visited

Community Reputation

643 Good

About Talonius

  • Rank
  1. Building the SlimDX Installer

    To install assemblies into the GAC at work I use the CmdHelper utility produced by Stephan Brenner. It requires a custom step using InnoSetup, but because of it's flexibility in how you register assemblies it's fairly simple. In my installer if the user selected GAC Installation the custom script is fired at the end of the install process. The script first uninstalls all assemblies that have been signed using the appropriate key (allowing for rapid development of the assemblies without eight hundred copies of minor versions) and then installs all of the assemblies in the destination directory. With CmdHelper this is two lines of shell code; CmdHelper itself is included as part of the installer, and extracted to the Windows temporary directory. I'm surprised that the installers haven't made more progress in integrating managed code management into their feature suite.
  2. Free RPG rules for use in a game?

    Quote:Original post by Kylotan Personally I would always recommend writing your own rules since most rulesets are biased towards a certain way of playing which won't necessarily fit your style of gameplay. But if you don't feel comfortable with statistics and probability, I suppose borrowing some other rules is better than nothing. To expound on this, consider the AD&D rules system: it was designed to allow a Dungeon Master to intervene (bad roll at level 1 causes your character to get killed; a DM would step in and negate the roll, a game is going to let the roll stand and irritate the player), was not designed for "hack and slash" play (in Neverwinter Nights the XP gained for each creature was 10% of the actual value [could be wrong on the percent, but it's in that ballpark] because the characters advanced too quickly), and can make things difficult by attempting to implement the rules system without change (what do you mean I can't climb this pile of rocks with no enemies around because my climbing skill isn't high enough? Given enough time, it should be possible!). If you can find a copy of the original, 1st edition Dungeon Master's Guide Gary Gygax has a section on probability and dice rolls and how it all fits together. It's an interesting read.
  3. Quote:Original post by Wavinator Armor Configuration: They're using axes, so you choose hide; they're using proton beams, so you choose boson shields; they're shooting with flak guns, so you choose kevlar... etc. etc. Do you think this is really a good mechanic? In theory, what you're asking the player to do is to choose a damage minimization strategy if they themselves can configure their armor; and an attack strategy if the enemy either can do the same or comes in a variety of armor flavors.No, because it favors the AI too greatly. The AI is able to make these types of instant decisions, can be able to assign individuals (versus large pre-organized groups, e.g. CTRL-1, CTRL-2, etc.) to combat those which it is most effective against, and because it simplifies the mechanics of combat too far. You choose hide armor against axes; a semi intelligent person is going to recognize that hey, my axe doesn't work against their armor - I'll start swinging at their exposed arms. Or, as mentioned later, the deficiencies in your choice aren't presented well enough in terms of movement restrictions, etc. (I have a similar problem with unit level abilities which require you to manually invoke them. That's well and good with a group of the same unit, but if you've played Warcraft III the computer has no problem invoking the special abilities of all of its units without slowing down... and my guys are dead long before I get the chance. :)) === Edit === Forgot to list my idea of a better system: resistances. The hide armor grants you a percentage of resistance to slashing damage, and provides a penalty for crushing damage. The idea of resistances allows you to fine tune the amount of damage resisted, provides a mechanism for balancing the benefits, and allows 100 axeman to still take out 25 horsemen without too many losses. It's similar in idea, but not an absolute. More difficult to balance is armor absorption. Hide armor absorbs 1 point of damage (all damage types). Plate armor absorbs 5 points. Gives you the benefit of upgrading armor, without the added complexity of determining what type of weaponry your opponent is using. No, these don't correlate well to their real life counterparts. Then again, it's a game, right? :)
  4. XNA - The Future

    If you're looking for "easier" and "friendlier" you're probably better off starting your search in the applications development arena - technologies there tend to get refined, especially because there is so much money riding on them. With a game you're generally looking at math that most folks don't use on a day to day basis, the latest or nearly latest in hardware, and you've added in the complexity of developing for a different platform than what you're developing on along with a slew of verbiage that can make some folks run shrieking in terror. All of these combine to make the subject esoteric, and probably more difficult than it needs to be. (One difficulty factor that I personally find annoying is the evolution of software and hardware; when searching the Internet for information on a topic it's not uncommon to find advice which is now not only out of date, but plain wrong. Linux especially suffers from this.) With that said, I greatly enjoy working in C# and the .NET Framework and believe they represent the evolution you're looking for. .NET relieves me of the tedium of memory management, uses a full object oriented hierarchy, and requires me to know only as much as I need or want to (e.g., what objects sit in what namespaces and/or assemblies, etc.). Compared to my early days of C, C++, and Pascal it's a dream and allows me to get things done *much faster*.
  5. If you find yourself working with such code a lot, make sure you memorize PInvoke.net. It's a wonderful resource for determining everything you need to know for interop.
  6. Storing Resources in Executables

    Quote:Original post by LessBread My understanding is that resources are mapped with the image. The Pietrek article implies it as well. For more details on the image loading process, see: What Goes On Inside Windows 2000: Solving the Mysteries of the Loader. Useful tools for examining/modifying the resources stored in a PE file can be found at Heaventools Software and elsewhere on the www. Thanks LessBread. Time for me to go learn again myself. ;)
  7. Storing Resources in Executables

    You probably want to delve deeper into the file formats themselves. The Windows Loader will only load the executable image from the file. The resources are not part of that image. "Inside Windows: An In-Depth Look into the Win32 Portal Executable File Format" is a good starting place, if you want to determine on your own how the executable image and data are stored. Linux has a similar format known as ELF.
  8. SSE in .NET

    For C# to properly support SSE the Just In Time compiler would need to be modified to support the extensions. The JIT team has indicated that SSE is used for some manipulations (such as casting between a double and int) but not for general code gen. (This was some time ago; I'd be interested to see if .NET 3.0 or above supported it.) Any attempt to use an object to support these instructions would be inefficient at best.
  9. C# of C++ for senior project??!! HELP!

    Me too! *cough* I mean... you'll learn by using C++ -- but I doubt you'll get the project done. If you want to complete the project, use C#. Come back to it and rewrite portions of it in Managed C++ later if you want.
  10. GameInstitute.com

    I've taken several of their courses and been extremely happy with them. Their staff are congenial, the written material is good to great, and their support is more than excellent.
  11. software for exploring/developing ideas

    I like OneNote, especially with its ability to drag and drop files -- allows you to centralize ideas, along with screenshots of what inspired the idea. I was using a Wiki for things like this but I ended up concentrating more on Wiki markup, which detracted from its purpose.
  12. Non iTunes MP3 player for WinXP

    My opinions: iTunes is a resource hog, albeit one I use now. WMP 11 is nice; been using it a lot more recently even though it causes a pretty hefty resource hit as well. Foobar2000 was fast, but... either I didn't know how to efficiently use it, or the interface is annoying as hell. WinAmp is the one I prefer but it's getting harder and harder to strip it down to the bare essentials. I'm using iTunes right now only because I have a bunch of m4b (audio books) I'm listening to while I wait for stuff.
  13. Firefox about certificates

    Coldacid is correct; the encryption of the data being sent during that session is intact. It is only the identity of the web site owner whom you should be concerned with. When I last applied for an SSL cert (a while back, to be sure) I had to provide all sorts of credentials about who I was, who my company was (Articles of Incorporation, list of members of the Board, etc.), what domain we intended to use the certificate on, what purpose we would be using the secure transmissions for, etc. What the invalid certificate means is that the identity presented by the website could not be verified, or that the identity has been verified but not by a trusted root. Quote:Original post by Extrarius A certificate from an untrusted authority is vulnerable to man-in-the-middle attacks - eliminating that vulnerability is the whole point of public key infrastructures in the first place. With the recent DNS flaws this is more of a concern than ever before.
  14. Assuming you're doing asynchronous requests, since you're wondering what socket to reply back to... When you set up the asynchronous request you submitted a callback delegate and a state object, which are called and returned to you once the receive has finished. (Specifically, the IAsyncResult object will have a member named AsyncState. This can be converted back to the state object you passed to BeginReceive.) This object should hold identifying information that you then use to index into the socket collection. (This identifying information can be whatever you want it to be, including an index into a collection.) From MSDN: private static void Receive(Socket client) { try { // Create the state object. StateObject state = new StateObject(); state.workSocket = client; // Begin receiving the data from the remote device. client.BeginReceive( state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state); } catch (Exception e) { Console.WriteLine(e.ToString()); } } In the example above the StateObject() can be any object you designate or desire. Upon read finishing: private static void ReceiveCallback( IAsyncResult ar ) { try { // Retrieve the state object and the client socket // from the asynchronous state object. StateObject state = (StateObject) ar.AsyncState; Socket client = state.workSocket; // Read data from the remote device. int bytesRead = client.EndReceive(ar); if (bytesRead > 0) { // There might be more data, so store the data received so far. state.sb.Append(Encoding.ASCII.GetString(state.buffer,0,bytesRead)); // Get the rest of the data. client.BeginReceive(state.buffer,0,StateObject.BufferSize,0, new AsyncCallback(ReceiveCallback), state); } else { // All the data has arrived; put it in response. if (state.sb.Length > 1) { response = state.sb.ToString(); } // Signal that all bytes have been received. receiveDone.Set(); } } catch (Exception e) { Console.WriteLine(e.ToString()); } } Code was taken from the MSDN page for "Using An Asynchronous Client Socket".
  15. [.net] c# Arrays

    Quote:Original post by Daerax Does C# have array literals yet? Assuming you mean the declaration of an array using the syntax { 1, 2, 3} versus specifying the array type using int[] { 1, 2, 3 } or new [] { 1, 2, 3 } then no, C# doesn't support that. With the advent of the var keyword the infrastructure would seem to be in place to support them.