Reputation: 579 Enlightened
- Active Posts:
- 1,286 (1.46 per day)
- 24-April 12
- Profile Views:
- Last Active:
- Today, 06:29 AM
- OS Preference:
- Favorite Browser:
- Internet Explorer
- Favorite Processor:
- Favorite Gaming Platform:
- Your Car:
- Who Cares
- Dream Kudos:
- Expert In:
- Game Programming, XNA
Posts I've Made
Posted 19 Sep 2014Set a break point on line 16. Does the code ever get there? If not why? If so, watch all of the variables. You should be able to hover over them and get their values. Is the texture null? Is the position valid (on screen, etc.)? I assume the rectangle is on the sprite sheet and you're using a sprite sheet? I assume the SpriteBatch is valid.
Also, since line 16 is in a foreach loop, you'll have to ask this question for every iteration of the loop and especially with the slot in question. So, you'll want to set a watch on slot to make sure you're working with the slot in question. You really need to kind of step through the loop until you get to the slot in question and then ask the questions above. You could probably move that section of code out of the loop temporarily and just set it to the slot in question to see what it does when you tell it specifically which slot rather then going through a foreach loop and looping through every slot.
You want to do as much as possible to isolate the problem and ask one question at a time.
Posted 19 Sep 2014Yes, I don't do much 2D. So, I'm maybe not the best person to ask about 2D.
I know Unity has some pretty good 2D features. It maybe focuses on 3D, but they've done a lot to make their 2D better. There are a lot of options open for 2D from what I hear. I think even HTML5 allows for some pretty good 2D.
But maybe some of the other guys here can tell you about some of the options available for people wanting to get into 2D game programming.
Posted 17 Sep 2014Any place where you're getting some experience is good, especially starting out. It also has a lot to do with what you find comfortable and what your long term goals are. Really, the only way to know what's right for you is to go out and try it. There's probably 1,000 different ways to get started.
Another thing to consider is whether you want to do 2D or 3D and whether you're wanting to develop for mobile or PC. Different platforms have different advantages in those areas.
Early on you'll be learning the basics such as "what is a sprite" and collision detection. If you do 3D it will be "How do you make models" and "How do matrices work" and so forth.
You might want to look at Unity. It's a free download and probably a pretty big step up from Game Maker. You can learn a lot about art assets and how to bring art assets into a game on these platforms. You can probably even make serious games with them. The downside is that engines like Unity don't necessarily teach you what's going on under the hood, not to mention it's easy to buy your whole game in Unity and not learn much of anything. Not to mention that even if you spend a fortune on art assets, you may find you still don't have all the art assets you need.
Of course, you may want to get more into the programming side. Some people like Java. Others C++ with something like SDL. There are others.
I'm still a huge fan of XNA which has basically become MonoGame, especially if you're wanting to learn 3D game programming and I think it's an excellent stepping stone towards C++ with DirectX or OpenGL. It's a great environment to learn the fundamentals before you try and jump off the deep end into DirectX or OpenGL. It's like "DirectX with training wheels". All the tedious and really difficult stuff that has little to do with making games is taken care of for you in XNA while at the same time you can get pretty deep into the technical stuff at your own pace when you're ready in XNA. Then if you do DirectX, or even OpenGL, later you'll have a very solid foundation of the fundamentals which will make the very difficult subject of C++ programming in DirectX make a whole lot more sense.
I've been meaning to build kind of a prototype for a DirectX project of mine in XNA because I can and it's easier before I tackle in in DX. And C# programming teaches you object oriented programming better then anything I've seen in C++. So, it helps you get into the object oriented mindset before you even start C++ where it's easy to program in a non-object oriented fashion if you're not careful.
Anyway, you might check out the pinned threads on the subject and my website.
Posted 9 Sep 2014I'm going to take an educated guess here and say you don't want multiple swap chains. I haven't done this in DX11, but I have done it in XNA, which is heavily DX9 based.
The reason I'm guessing you don't need multiple swap chains is that the purpose of the swap chain is to avoid screen tearing when you draw directly to the screen. So, it's there to allow you to not draw directly to the screen. But even with multiple camera views on one screen you only need one back buffer.
So, the way I would approach it if I were going to try this for the first time is to use render targets. Let's say I want the screen split 4 ways so that 4 players playing at the same time get their own quarter of the screen. Each player has a completely different view of the game each from their perspective.
First, I would setup 4 render targets (you might figure out a way to draw one of them directly to the backbuffer without an intermediate render target but this is the easiest way to go). The render targets are just picture buffers like you would store any picture in. They probably need to be the size of 1 quarter of the backbuffer/screen each. They don't need a swap chain because they won't be visible by themselves anyway.
Then I would define 4 view matrices, one for each camera/player. I would "probably" only use one projection matrix unless there was some special effects need that would prevent all 4 from sharing the same perspective.
I would draw the scene to each render target using that render target's view matrix, but otherwise you're drawing the same thing 4 times.
Then I would draw the render targets to the backbuffer as if they were sprites. So, probably draw 4 quads and texture each with the appropriate render target. This probably needs to be done with a 5th camera using an orthographic projection matrix and probably a 5th view matrix.
So, the backbuffer still has a swapchain and it's the only thing the end user will see when the backbuffer presents and becomes the frontbuffer.
And to answer your question, you technically don't have a swapchain without a backbuffer. At a minimum, a swapchain is a frontbuffer and one or more backbuffers. But without two buffers (front and back), it's impossible to swap and therefore there is no swapchain.
I would be interested in seeing the code when you get it working. You could create the first tutorial for it.
P.S. I just went back and reread what you wrote and I think I answered the wrong question. Sounds like you want to draw 4 separate windows. Ouch.
Yep, there you're probably going to need 4 separate swapchains. I would think it would be the same as drawing to 4 separate monitors although I haven't done this in any platform. I would imagine everything has to be duplicated for each window as if it were separate monitors.
For separate monitors you need separate swapchains because there's probably no way to do it without separate backbuffers. With separate swapchains, you shouldn't need render targets at all but you likely may still need separate view matrices. And yes, you would probably need separate backbuffer descriptions unless they are identical descriptions and then you might be able to reuse one. Again, I haven't played with this at all, so I'm just guessing. The description is probably just used for initialization and is probably reusable assuming you never want to change anything... but with separate windows you may have to match it to window size and stuff that may be separate so that may require separate descriptions.
Oh. Another distinction I might make is that a CAD program likely manages its own windows. So those windows are owned by the application and not by the OS. I'm assuming OS windows for what I just said there. If they are app managed windows then you're back to the first solution with render targets and one swapchain. I think that's what made me go for that solution first.
Posted 6 Sep 2014I didn't mean to be such a downer and just totally kill the thread with my "healthy dose of reality". I suppose my point is that game programming is unbelievably difficult and you need a passion that will never give up just because of adversity as well as the willingness to put in the hard work it takes to be able to do it. If its really the right field for you, you won't take no for an answer and you'll do what it takes in spite of the unimaginable obstacles ahead in getting there. I'm just warning you that if you choose to be a game programmer, you're choosing a very difficult path and the only way you'll make it is if you enjoy doing it without pay, without glory, and without recognition, because even if you're amazingly successful, you're not likely to get any of those things for years or decades until you actually "arrive".
Of course, there's nothing wrong with encouraging people along the way. And I think the more we work together, the more we succeed.
- Member Title:
- Here to help.
- Age Unknown
- Birthday Unknown
- Dallas, Texas, US of A, Planet Earth, Sol System, Milky Way Galaxy
- Rock music composition and performance, Grunge Music, Bebop (think Thelonios Monk), Swing (think Cab Calloway), Gaming, Astronomy, RPGs, Scuba, Sail Boats, Furniture Building, Cooking, Rocky Patel Cigars, Character Driven Dramas(like HBO's Deadwood), Story Telling (plot writing), Linguistics, Economics, Target Shooting, Electronics (don't know as much as I'd like to), all aspects of 3D game programing including music, physics, modeling, texturing, annimation, probability, AI, lighting, etc., Texas Holdem' Poker, Learning, Dogs, the love of my life (my pit bull), guns (especially 19th century black powder), putting make-up on ogres, etc.
- Programming Languages:
- C, C++, C#, Visual Basic, Java, Pascal, T-SQL, HTML, FoxPro, ASP.Net(very little), Assembler, Machine Code(conceptually anyway)
- Website URL: