• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.

Soaps79

Members
  • Content count

    50
  • Joined

  • Last visited

Community Reputation

116 Neutral

About Soaps79

  • Rank
    Member
  1. I learned tons reading Game Coding Complete and the blog at [url="http://gamearchitect.net/"]http://gamearchitect.net/[/url], then also digging through the XNA engine at [url="http://xnafinalengine.codeplex.com/"]http://xnafinalengine.codeplex.com/[/url]. Thank you for showing that diagram of C4, I'd love to read more about the high-level overview. Does anyone have more links to discussions or breakdowns of engine designs? I have implemented small ones in different school projects, but am now looking to really cement the same concept as the OP; the separation of graphics and game logic.
  2. When you go to serialize, you would transfer the Dictionary into a List, then serialize the List instead. When you deserialize, you pull the data into a List, then move it into a Dictionary for your game object to use. I don't know your program setup, but this could either be done in the object that is going to be serialized, or in whichever object is handling your serialization.
  3. The problem is with your Dictionary, which is not a serializable object. I had the same problem a while back, and ended up transferring the data into a List before serializing, much like this: [url="http://www.dotnetperls.com/convert-dictionary-list"]http://www.dotnetperls.com/convert-dictionary-list[/url] This was not a problem for me because it was during a larger load time, but may hurt performance if it's a regular operation, you'd have to investigate that.
  4. Sounds like your jargon is a bit mixed up, but I think we get the point. You're looking to create game assets in 3DS Max for use in an XNA project? Yes. There may be other ways, but the one you see used most often is to export a Max model as a .x file, which XNA can easily read from. I use Pandasoft's exporter. You install it, then open your model in Max and go to Export and choose .x. http://www.andytather.co.uk/Panda/directxmax_downloads.aspx
  5. I did something similar on a project in the past, but what made it easier was a modifier in the middle denoting their "Rank". I had 4 Ranks: Minion, Lieutenant, Boss and EliteBoss (was a CoH fanatic). So I had their base stats, then ran them through the Rank modifier, then through the Level one. I was trying to recreate what you see in a lot of games, where the first time you fight something, it's pretty hard, then before you know it that same enemy is one you mow through in droves. To get this effect, you would spawn him the first time as a Level 1 Boss, then you can reuse him as say a Level 3 Minion. Don't forget, throwing a different color into your Draw routine can go a long way for variety too. For your specific case, you could probably get more effective answers your question if you gave some idea on what kind of stats you have and how they work.
  6. I grabbed the Boost library and am working on extracting shared_ptr using the BCP tool. My teammate is a good guy and programmer, he's just a bit obsessed with work only counting when you do it from scratch. We're starting our Senior Project 6 months early, but I'd rather spend the time on architecture than troubleshooting a homemade smart pointer. It's my first stab at a large MVC project, so I've got my work cut out for me. Thanks for the input guys. I'm glad to know I shouldn't feel like I'm "cutting corners" using the library. If programming for a good sized game company, what's the likelihood that they'd be using smart pointers? Are they everywhere, or just quarantined to systems that make the most use of them? Also, are you guys using the use std/boost implementations, or in-house versions?
  7. I thought the same thing, about it being AFTER VS2008, but then I read that it was included in a [url="http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6922"]Feature Pack[/url] and a few [url="http://www.codesynthesis.com/%7Eboris/blog/2010/05/24/smart-pointers-in-boost-tr1-cxx-x0/"]sources[/url] say it should be included in SP1. I just wasn't sure if there was a header I needed to include in the IDE settings that it may not have added automatically. My problem is, this is a school project, and worked on on school desktops often. This kills any thoughts of Boost, since we don't have admin privileges to install anything. Could I download the library and just include the appropriate headers locally, or would this cause problems? Also, I have a teammate who is always trying to stay "pure", and after the barking about smart pointers. trying to talk him into using an outside library may be more trouble than it's worth. I'm just bummed because I love the system I wrote, but it is very dependent on smart pointers, and it would require a lot of (hackish) rewriting if it had to manage its own memory. Thanks for the input guys, I'll have to look into using Boost classes without installing it.
  8. Sorry for the lame question, but I can't find a definitive answer anywhere. I wrote a system that I really like using C++ in VS 2010. I #include'd <memory>, and had access to std::shared_ptr. I am now trying to bring the system into a team project I am working on in VS 2008. I read that shared_ptr and other classes/libraries were not originally in VS2008, but were added in SP1. My VS About window says: Version 9.0.21022.8 RTM Microsoft .NET Framework Version 3.5 SP1 Shouldn't I have access to shared_ptr's? I tried: [source lang="[b]cpp[/b]"] #include <memory> using std::shared_ptr; [/source] and [source lang="[b]cpp[/b]"] #include <memory> using std::tr1::shared_ptr; [/source] Both told me that shared_ptr is not a member of the namespace. Any help would be much appreciated, thank you.
  9. I am not familiar with the disease, so if is more crippling than I am seeing it, I apologize. I started programming about two years ago, after being out of high school and away from math (which I never shined in) for almost 15 years. For a lot of programmers around me, it seems like math is a reflex while I have to walk through it all step by step. It can slow you down, sure, but approaching code as problem/puzzle solving and just putting the time in has served me just fine. And, if you read these forums at all frequently, knowing Apoch has it should be inspiration, because that guy comes off like a guru in these parts.
  10. I've been on this mission for a long time as well. One can't argue with the suggestions to use other GUI libraries to get a handle on different API's. Once I did this, I found the GWEN UI. You can grab the entire codebase, I learned tons sifting through it. http://code.google.com/p/gwen/
  11. Great explanation of friend classes thank you. That is exactly what I thought they did, but I did not realize that you could get around variables being private through pointer use (as bad practice as it may be). [quote name='A Brain in a Vat' timestamp='1313357150' post='4849109'] In this case, I think you're safe as long as you make sure that Object maintains strict ownership over the Tween objects. I recommend you enforce this by making tweenVec a boost::ptr_vector, but in the absence of boost I'd just make sure you're deleting each tweenVec object in the Object destructor. [/quote] Yes, the object itself will instantiate the Tween objects, add them into its vector, and delete them when they finish (and delete any remaining when the object's destructor is called). No other objects will have access to this vector or the individual Tweens. [quote name='A Brain in a Vat' timestamp='1313357150' post='4849109'] I'm having trouble thinking of [b]good[/b] ways of doing this without breaking encapsulation. You could do something with shared_ptrs and boost::functions to retrieve and set the current value, surely, but I don't think it would end up being very nice.[/quote] This was somewhat like an approach my partner and I discussed, where upon Tween instantiation you would pass it a function pointer that would later be used to pass the tween'd value back to the object every Update(). This approach would have worked, but I am trying hard to maintain the simple/clean interface for the Tween class, and felt that the function pointers made it feel sloppy and unnecessarily abstract. Thanks again for the assistance. Also, is this concept something that is done regularly but I just never ran across? It seems like a real handy class to have around, but I have never seen it before.
  12. The protected data that I was talking about would be members of an Object or Sprite class, like its (protected) position or scale variables. I was looking to give the Tween a reference to a member variable at the Tween's instantiation, and just let it run until it dies. Then on each render cycle, the object would be drawn using its member variables, which have been manipulated by the Tween in its Update() function. The idea of using the abstract base class is something I will explore when I go back to it tonight, thanks for your help.
  13. I have an idea for a Tween class that looks great on paper, but I am running into trouble trying to implement it. I want to be able to create Tween objects that take in a variable, and adjust it in different ways across a given time span. I then want to be able to have objects instantiate Tweens which will run automated. Essentially I want to be able to: [source cpp] // give object a Tween* vector vector<Tween*> tweenVec; // somewhere within the Object's code // to tween position from its current (1, 1) to (100, 100) over 1000ms Tween<float>* tempTween = new Tween<float>( &m_position.X, 100, 1000 ) tweenVec.add( tempTween ); tempTween = new Tween<float>( &m_position.Y, 100, 1000 ) tweenVec.add( tempTween ); // then in the Object's update code: if ( !tweenVec.empty() ) { for each tween t t->update( currentTime ) if t->isFinished // delete the object and remove the pointer from the vector } [/source] I thought, through my limited understanding of friends, that if I specified the Tween class as a friend in the Object's declaration code that it could access protected members. I tried making a Tween<T> a friend, but then it wanted me to also make Object a template, which is understandable but very undesirable. How would someone go about implementing this so object could have a vector of Tween pointers that have access to its protected data? Would knowing which data types it will work on be helpful? As in, explicitly making it friends with Tween<int>, Tween<float> etc? Also, will all of this be undone when I make derived Tweens with specific agorithms?
  14. [quote name='XXChester' timestamp='1311347273' post='4838956'] Okay that makes sense. So you are looking at it from a input perspective and that makes sense. [/quote] If this is the case, and the game is for personal use only, you could get an adapter: http://www.amazon.com/PS2-USB-Dual-Controller-Adapter-Converter/dp/B000F6BGXY/ref=sr_1_1?ie=UTF8&qid=1311372622&sr=8-1 Here is someone getting the controller to work under DirectX: http://www.gamedev.net/topic/552685-directx-input-with-ps3-controller/
  15. I understand that my approach could be brittle, I haven't worked on any huge projects. [quote name='ApochPiQ' timestamp='1311217743' post='4838269'] I'd just have a boolean flag in the update dispatcher; if the flag is cleared, do a normal update, otherwise look at a "short list" and only update objects in that list. When you enter limited-update mode, you copy off the last known state of every object that shouldn't be updated and render/etc. based on that state; when re-entering normal updates, you merge the updated objects' states back into the main simulation state and off you go. [/quote] I guess what I don't understand about this approach is how you fill the "short list". Would you have the entities that want to continue updating make a call to say "Add me to the short list," before switching to updating just that one? I'm just thinking that you won't know at the start of the program who would be in there, because for instance, maybe the player has a party consisting of 4 characters that would need to be in there on their own when they level.