• 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.

clickalot

Members
  • Content count

    17
  • Joined

  • Last visited

Community Reputation

177 Neutral

About clickalot

  • Rank
    Member
  1. http://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/
  2. [quote name='Stormynature' timestamp='1340314223' post='4951506'] And above all if you do find the holy grail of generating defiinitive emotional contexts then you will find yourself in an enviable position of unravelling a mystery that has been haunting the entertainment and marketing industries for a very long time. [/quote] You need to believe in that sort of holy grail in order to go search for it ). I will start my studies with some courses from here: http://ocw.mit.edu/courses/#brain-and-cognitive-sciences
  3. [quote name='Legendre' timestamp='1340302726' post='4951445'] Of course there are. Your best bet would be to look up undergraduate psychology textbooks. I think I know your train of thought: "psychologists say X stimulate fear" and "I put X in my game", hence "my game is scary". Unfortunately, "what to put in a game/movie/book etc to make it scary" is a deep topic that will take a long time to unravel. The shortest answer from biology would be to pump the body with chemicals that induces fear...sell drugs lol. [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img] [/quote] As I said I'm not looking for a recipe.I am aware there isn't one because of two things because if it somehow existed then everyone would be doing it. I'm just a bit confused on where to start reading about these things, and very much afraid on loosing time reading irrelevant things. I am trying to make a game in my free time because I want to explore some ideas, so i need to optimize everything. I am aware that I can do a google search about this, witch I did, but I found unsatisfactory results in tings related to psychology and games. The answer to what I am trying to find out more about seems to be more in the psychology field rather than in game development. Of course If i find a paper that says that x stimulates fear, I will try to see if it works in a game and how it can be improved upon:). @ Tom Well I was kind of optimistically hoping for a shortcut or some sort of tutorial (like the ones you find for programming subjects) Nevertheless it seems that I need to explore this path on my own.If I find things that I consider relevant I will share them [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. Thanks for all your replies.
  4. Thanks for your responses. Well I'm not really looking for mathematical formulas or as well defined things, nor do I search for a recipe of triggering emotions in players, but somehow I am hoping that there are some studies about emotional responses to certain stimuli. For example let's say that I was a scientist and I wanted to study fear. I would pickup a series of photographs that are considered "scary", get 1000 subjects, and then make them rate each one's level of scariness. In the same time I would measure their response to the stimuli checking their heart rate, etc. Then I would take another 1000 subjects and measure their response while I would show them the same pictures with the lights off. Another measure could be by associating some creepy music with the pictures and rate their response, etc. I would conclude that pictures depicting humanoid faces with exagerated features generate the most powerful responses while viewed with the lights off and preceded by certain sound types. Also It would be interesting to compare what the machines measured about their fear level (heart rate, etc.) and compare with what they thought was their fear level. This is more or less the type of study that I am hoping to find at some point. It would be especially interesting to have a study that can check if no matter the culture the same things are scaring us in the same way or not.
  5. As a disclaimer, I am work as a programmer in the game industry so I might have missed or misunderstood some things concerning game design. I've read some papers on game design and psychology but they seem unsatisfactory. Before I will proceed with my questions and issues I shall list the articles here: [url="http://www.gamasutra.com/view/feature/166972/cognitive_flow_the_psychology_of_.php?page=1"]http://www.gamasutra..._of_.php?page=1[/url] [url="http://www.gamasutra.com/view/feature/3085/behavioral_game_design.php?print=1"]http://www.gamasutra...ign.php?print=1[/url] [url="http://www.gamasutra.com/php-bin/news_index.php?story=23724"]http://www.gamasutra...php?story=23724[/url] Valve has some interesting papers even if their focus is more on playtesting rather than the design process before the playtest. [url="http://www.valvesoftware.com/publications/2009/GDC2009_ValvesApproachToPlaytesting.pdf"]http://www.valvesoft...Playtesting.pdf[/url] [url="http://www.valvesoftware.com/publications/2011/ValveBiofeedback-Ambinder.pdf"]http://www.valvesoft...ck-Ambinder.pdf[/url] The gamasutra articles seem a too shallow in my opinion. They don't go into detail and I feel that they just scratched the surface a bit and established some "rules" and "tips" by oversimplifying everything. Most of the time I feel that the way they use to model a player is a super simplistic state-machine. In reality we are really complex creatures, and even if you can trick us into certain things because of some hard-wired connections in our brains caused by evolution I feel that the players should be treated with more respect and research in these areas should explore further than skinner box examples or models.(something more complex than what zynga or the casinos are doing [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img]). For example I am interested right now in how can I raise certain feelings in my player. Let's say I want him to feel vulnerable and afraid. But I don't want him just to feel the fear of dying and starting over again, I want him to be afraid on a deeper level. Or If I want him to have a feeling of hope how can I do that without using some cheesy flowers blossoming and trees growing and other similar childish things. I want to do it in a more subtle way. Are there resources where I can learn about psychology and the ways humans tend to respond to visual and audio stimuli? I think that games could go a level further in exploring these areas because unlike movies, the person interacts directly with the medium and is not only a receiver, so if you have any studies that involve games it would be even better [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. Thanks in advance for at least reading this huge post [img]http://public.gamedev.net//public/style_emoticons/default/tongue.png[/img].
  6. Clipping occurs in DirectX after the view transform. So the World*View will still be computed for all the vertices in the scene, even if they will eventually be clipped. In order to further optimize this you need some sort of spatial partitioning. Since you have a 2D game here, a simple distance function from the camera could be used to reject objects from being rendered. If you want you could use a grid for to split your scene into multiple areas and only render objects inside the viewable grid locations. This assumes that each grid cell is composed out of multiple objects.
  7. I think that iterating on it is the best possible thing you could actually do it. For my home project I try to be as scientific as possible with removing/adding or changing mechanics in my game. Everything must be playtested ideally by guys who did not see the previous versions, I usually try to keep a close tracking of their in-game actions and behavior by filming them and taking notes, and take my decisions based on that. Of course I will be biased towards a idea or another, but I try as much as possible not to take any decision regarding the mechanics design without showing it to other people. On other parts of design I tend to start from an abstract idea ( for example making the player think about a certain subject, or making him feel a certain feeling ) and then shape that idea in something more and more detailed, with a storyline, some settings, etc. I usually bounce these ideas back and forward with friends. Once these have been thought over and over again I will go deeper and try to discover an even more details about the game. As a disclaimer I am a programmer so I might not have enough knowledge on the subject as people that are trained in this field .
  8. Instead of listing all the popular languages in a post, I will try to make it a bit easy on you [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. Well the only thing future-proof are algorithms, or computer graphics theory. If you understand algorithms you are set to go. Most languages can be learned in a relatively short amount of time. It is just a language after all and there are many similarities between them. So If you know let's say C# you can learn Java super easy, or if you know c++, learning C# will just take a few weeks. You won't understand all it's fine details, but you can get your algorithm to work relatively easy on any of them. I don't know what experience you have but I can direct you to Cormen's book Introduction to algorithms or any other good theory book depending on the field that you want to study.
  9. The only issue with over-using smart pointers is that they will make you feel safe while coding. That feeling of safety might lead to a messy flow in your game. Using normal pointers forces you to have a clean flow in your code, a flow of initialization, the ownership for each object is clearly defined, etc. I've seen this a lot in school projects (university), and to some degree even in some engines used to make games . You can end up with some object shared between two or three others, with no clearly defined owner and this might give you a lot of headaches.
  10. [quote name='slicer4ever' timestamp='1340034444' post='4950292'] [quote name='clickalot' timestamp='1340033939' post='4950286'] One potential reason is that I believe that you want to scale it correctly for the 2.5D scene, but the *20.0f doesn't do that. [/quote] this is exactly what the 20 is suppose to be for, it's just a hard coded number at the moment, which is probably why it's confusing, what is your suggestion for scaling back to the 2.5D scene?, my originally thinking was taking the half width/height would do it, but it doesn't sound like it. [/quote] Ok so instead of multiplying by 20, it would make more sense to multiply by BoxWidth/OldBoxWidth. OldBoxWidth = width of box (in pixels) enclosing the object when the 3 textures are saved. NewBoxWidth = width (in pixels) of the box enclosing your object during the game rendering. So the whole pipeline would be like this. Instead of saving positions you save Position / MaxPosition. So you don't have pos.xyz normalized, instead you map them from [-ObjectSpacePosition...ObjectSpacePosition]->[-1..1]. You can also pack them to [0-1] if you desire, but i don't see much gain in this. ObjectSpacePosition's is defined in the interval [-MaxPos...MaxPos]. In the game you reconstruct this position back, multiplying in.xyz to MaxPos. (and unpacking them from [0-1] to [-1..1] if needed). Ok so the only thing that remains to be done is scaling it, that can be done by the procedure that I described above. Btw OldBoxWidth is in pixels and represents let's say the texture width, while NewBoxWidth represents the item's box in-game dimension in pixels. These have nothing to do with MaxPos. MaxPos is in some abstract units, def. not pixels. Your scaling, even when you added the [-16...16] interval, will be 20 times bigger , while you actually want a smaller object in the game.
  11. [quote name='slicer4ever' timestamp='1340031857' post='4950276'] the 20 is derived from the quad's size i use to draw the final image in the scene. i believe the issue is with how i store the length, since anything that is above a unit size is going to be clamped to 1 in the final output, i did this: o_PosBuffer = vec4((normalize(o_Vertex.xyz)+1.0f)*0.5f, length(o_Vertex.xyz)/16.0f); //should allow objects within 16.0f size to map correctly vec4 o_Vertex = vec4((o_HeightMap.rgb*2.0f-1.0f)*(o_HeightMap.a)*16.0f*20.0f,1.0f); //unmaps the height map.a but this produces weird results, even with the ball, and i'm not certain why(the resulting image's alpha channel looks correct. [/quote] Maybe I am not paying enough attention, but I still don't get the need to multiply by 20. First of all you store the position like this: o_PosBuffer = vec4((normalize(o_Vertex.xyz)+1.0f)*0.5f, length(o_Vertex.xyz)); So basically you have .xyz a normalized direction vector and some length that may be clamped to 1 depending on what format you're using. I don't understand the need to multiply this by the arbitrary value of 20. in order to get the position in object space back. I call it arbitrary since that 20 was not used to encode it in the first place. You just get position vectors that have a correct orientation, but all will have the length of 20 that will be then transformed with the view-world position. This is why I believe the sphere example seems correct, but it's not. You can try taking a cube and test with that. One potential reason is that I believe that you want to scale it correctly for the 2.5D scene, but the *20.0f doesn't do that.
  12. I find it kind of strange that it's working even for the sphere since the object's normal map and position texture seems to be the same. I'll just suppose that you just pasted the wrong picture. [CODE]vec4 o_Vertex = ViewModel*vec4((o_HeightMap.rgb*2.0f-1.0f)*20.0f*(o_HeightMap.a),1.0f);[/CODE] Shouldn't it be * o_HeightMap.a instead of *20 since that is where you stored the length? I don't understand why enclosing it in a box would help. You can just save the positions be ok. Just storing the depth is another optimization, but first you should get it to work by saving positions and then you can try the thing mentioned in that article. p.s. szecs's advice about not normalizing the position is valid. Since you store the length in alpha I assume that you can store the x, y, z in the rgb channels without normalizing them, thus not needing the alpha-channel anymore. (saving memory and avoiding the operation of multiplying the normalized vector with the length when rendering the lights)
  13. So from what I see in the position map you have X=Red, Y = Green, Z = Blue, Because you take the position after the view transform, you have no Z. This is why there is no blue in your picture). That doesn't really help, because the way you take the position now it basically just tells us this: [quote] ...................................... - Y ......................................... ^........................ [b][color=#FF0000]Red [/color][/b]( the negative Y will just make the green component 0) ......................................... |[color=#ff0000].................................[/color] ..........................................|[color=#ff0000].................................[/color] -X -------------------------- Zero------------------> +X [color=#008000]..........................................[/color]| [color=#008000].................[/color][b][color=#008000]Green............[/color][/b] |..............................[b][color=#FFD700]Yellow[/color] [/b]from the positive Red+Green ( you can try this in paint) [color=#008000].........................................[/color] |........................................ [color=#008000]..........................................[/color]|........................................... [color=#008000].......................................[/color]+ Y [/quote] I think it would be more useful to have your position taken from the local space of the model.(don't multiply with the world and view mtx). This way when you compute the light amount you have more or less a position that can be used to correctly determine the light intensity at a certain point in your model. An alternative would be to save only the depth and reconstruct the position from it. Here is the process in more detail. http://mynameismjp.wordpress.com/2009/03/10/reconstructing-position-from-depth/
  14. Your idea sounds nice, but most ideas do sound nice. The execution is almost all that matters in the end [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. Concerning the technical side of things: Battlefield had somewhat a big development team, but not all of them were working on the network side of things [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. You can achieve something like what you want with a decently big enough map and good map design, and game mode design. The biggest problem in multiplayer games with tons of people (let's say 64) is synchronizing everything between all the players. The trick in doing these kind of multiplayer games is making sure a small amount of players are relevant one to another at any given point. Let's say that from the 64 on the map, you rarely see 16 at a time. So the rest don't need to be synchronized to you, because you don't care what their position is or what they are doing at a certain time. They will become relevant to only if they shoot you or get in a certain range, or satisfy some other conditions. Beyond this main point you also need to hide the lag between players, having a nice prioritization system ,etc. You could look into commercial engines(Raknet had some interesting api, I did not work with it directly, but rumors say it's nice), Unreal Engine has some surprisingly nice network capabilities, not as fancy as the ones from valve where they rewind time on the server but cool nonetheless. Or you can get a coder to work day and night on this [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. As a positive and non depressing example I'll give you Mount and Blade. They have servers with up to a hundred players(sometimes more), with a quite high density of players in a map (unlike battlefield 3 where your team of 32 is spread among a huge map), and the multiplayer feels pretty nice. Keep in mind when comparing to valve's or Bf3's multiplayer or that Mount and Blade was made by a ridiculously small team of people.
  15. Maybe there is also a cultural factor in our love to left->right. Since we read from left to right, doing certain things (like playing a platformer) in the other direction seems a bit unnatural.