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


  • Content count

  • Joined

  • Last visited

Community Reputation

347 Neutral

About greggles

  • Rank
  1.   The first thing to understand is that B (a bernstein polynomial) determines how much each point contributes to the final p(u, v) point. The value it returns is between 0 and 1, with 0 meaning that the point won't affect the final output and 1 meaning that it completely determines the output.   The "simplified" equation you give is just that... a simplified version of B when n = 3. You can do the math yourself if you want to take the time. Just take the equation for B, make n always 3, and compute the result for every valid i, j, k combination. Then with a bit of algebraic manipulation you could get the same equation. But the way this equation is written is only true for n=3. Breaking down the case of seven control points into a single equation is going to be too unwieldy. Instead, I would suggest trying to understand how to use: which works for any n, before trying to simplify it.   Let's look at how this will be used:   Let's say that we have a triangle patch with n = 5 and are trying to determine how much point p301 will contribute to the output point at (u,v). We would use the "big B" to determine this. B of 3,1,1 at u,v. The equation would be:   ( 5! / (3! * 1! * 1!) )   * (ui) * (vj) * (1 - u - v)k = (5*4 *3*2*1) / (3 * 2 * 1 * 1 * 1)  * u3 * v * (1 - u -v) = 20*(u3) * v * (1 - u - v)   This means that when u = 0.1 and v = 0.5), the point p301 would contribute to the point: 20*(0.001) *0.1 * 1 * (1 - 0.1 - 0.5) = 20*(0.0001)*(0.4) = 0.0008   Then back in the for-loop I had talked about before, p(3, 0, 1) would be multiplied by 0.0008 and added to the output point.   Note that B can be created as a function in code somewhat easily once you have a factorial function (something that can also be created easily) and a power function (should be available in your favorite programming language's standard library). All that it needs to do is take in multiple parameters (n, u, v, i, j, and k) and output a double value.   ...well, that was a long explanation. I probably got something in there wrong :) Let me know if something needs to be clarified.
  2. First of all, the bold vs. not bold: Anything bold is a point, anything not bold is a number. So when you see p(u, v), it means the Point at the barycentric coordinates u, v.   Secondly, the sigma notation used in the article means "sum together all of the values where this equation is true." So, for example, the equation i+j+k=n could be true when 1+0+6=7 or when 0+3+4=7, and so on.    Let's look at the first equation you have posted:   When determining how to create the loops, I found the picture of the triangle very helpful. Lets assume that each digit in the point corresponds to the variables i, j, and k in order. Thus, the lower left point of the triangle p003 means i=0, j=0, and k=3.    The first thing that I notice is that i increases from 0 to 3 from bottom to top of the image. This is a basic for loop that we can easily handle.   Next, I notice that for any i, the j value starts at 0 on the left and increases until i+j=n on the right. This is another loop we can handle.   Finally, the original equation gives us k via algebra: i+j+k=n can be rearranged to k = n - (i+j). That is the final value we need to know.   This gives us our final form: Point p; for (int i = 0; i <= n; ++i) { for (int j = 0; i+j <= n; ++j) { int k = n - (i + j); p += B(i, j, k, u, v, n) * p(i, j, k); //Probably not quite what you want here, but this is an example of what this might look like. } }   Now, the B() function refers to the function on the Gamasutra page and the p function here means "give me the point with i, j, k index." For example, p(0, 6, 1) means p061.    Does this help? The partial derivatives would then be created in a very similar way.
  3. First of all: great post! I like that you brought up such an interesting topic and it got me thinking a bit more about permadeath as another tool in a game designer's arsenal. Some things that I considered and thought I would share: As was mentioned, permadeath forces the player to concentrate and rely more on strategy. This makes it harder for a player to sprint into the action with a shotgun or try a crazy move just to see if it succeeds. It adds the thrill of thinking through your actions and being correct, but reduces the possibility of the thrill of "I can't believe that worked!"  It makes the player more protective of his character, which can lead to a stronger emotional attachment. If a player is going to perform an action, he must be confident it will succeed. I think this is where THPS3 utterly fails as a permadeath game, since it is built on repetitive skill honing (eg. keep practicing until you are able to perform the required steps to reach the secret tape). It can be used to help produce a strong sense of accomplishment ("I can't believe I've made it this far!"), which continually pays off in thrill and feeling of achievement. If the game requires repetition, it may be good to help the gamer have an enjoyable fresh start by producing a new gameplay experience (through procedural levels, changing gameplay, or some other way). Note that cut scenes can become dull because of reduced suspense and surprise. The other option is to build levels in a way that it is exciting to play through again, maybe the earlier parts become easier after repetition. Replay ability becomes paramount. Permadeath isn't necessarily all-or-nothing. Consider games like Super Mario Bros. (first example that popped in my head, though many games fit this description). When considered from the big picture you wouldn't consider it a permadeath game, but inside individual levels it is; hit the lava and you must start back at the beginning. If you wanted to make it more permadeath-esque it could be that each world must be replayed if you die in any level. Take it to the extreme and you must always restart from level 1-1. So death can be considered a bit of a continuum from restart from your last save to restart from the beginning.
  4. [quote name='BobXIV' timestamp='1352385937' post='4998874'] [quote name='greggles' timestamp='1352084345' post='4997410'] Maybe I'm missing something, but what is wrong with (0, 20)? Although it is not one of the vertices, it [i]is[/i] on the bounds of the minkowski difference. My understanding of the GJK algorithm is that it should still work correctly. [/quote] Greggles maybe I'm misunderstanding you, what you say is correct but the vertex (0,20) or any support point is indeed one of the vertices... if you mean the vertices of the Minkowski difference. [/quote] I think you may have misunderstood me. Let me clarify the calculations: The original shapes are define by vertices (-5, 5), (5, 5), (5, 15), (-5, 15) and (-5, -5), (5, -5), (5, 5), (-5, 5) We know (intuitively, but this can be determined algorithmically with more calculation) that the resultant diffence will be a square, so finding the four vertices of the difference: (-5, 5) - (5, 5) = (-10, 0) (5, 5) - (-5, 5) = (10, 0) (5, 15) - (-5, -5) = (10, 20) (-5, 15) - (5, -5) = (-10, 20) So there is an edge from (10, 20) to (-10, 20). (0, 20) lies in the middle of this edge instead of one of its endpoints; thus it is not a vertex.
  5. Maybe I'm missing something, but what is wrong with (0, 20)? Although it is not one of the vertices, it [i]is[/i] on the bounds of the minkowski difference. My understanding of the GJK algorithm is that it should still work correctly.
  6. [quote name='MattProductions' timestamp='1349715613' post='4988038'] Thanks guys, but now another question. What is the difference between Java SE/FX/EE/ME/... I have to choose a version of Netbeans to download What's the best one for game development? [/quote] SE = Standard Edition ([url="http://en.wikipedia.org/wiki/Java_Platform,_Standard_Edition"]http://en.wikipedia.org/wiki/Java_Platform,_Standard_Edition[/url]) FX = Java FX ([url="http://en.wikipedia.org/wiki/JavaFX"]http://en.wikipedia.org/wiki/JavaFX[/url]) EE = Enterprise Edition ([url="http://en.wikipedia.org/wiki/Java_EE"]http://en.wikipedia.org/wiki/Java_EE[/url]) ME = Micro Edition ([url="http://en.wikipedia.org/wiki/Java_ME"]http://en.wikipedia.org/wiki/Java_ME[/url]) I suggest the standard edition.
  7. Looks good. I really liked the education level of the janitor: Sweeping 101, Advanced Sweeping, and Sweeping with a Passion. The first name I thought of when I saw the game is Big Huge Evil Company Inc. Another idea is to play off of telephone/telemarket, like using Telemagnate, Telemogul, or Telemarketeer. Or maybe stick with a basic name like Com Command or Call Center Command.
  8. It's been a while since I used it, but I believe the javax.imageio package should have what you need. There is a function in the class ImageIO called [url="http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#getImageReadersByFormatName(java.lang.String)"]getImageReadersByFormatName[/url] that returns an Iterator of [url="http://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageReader.html"]ImageReader[/url]s. The ImageReader class appears to contain some functions that allow you to read multiple Images from a file.
  9. [quote name='way2lazy2care' timestamp='1335683599' post='4935773'] Get fish thrown at/over you and go to the glass museum in Tacoma and watch them blow glass. Those were my two favorite things when I lived there. At least things that are very seattle-y. [/quote] I think it is awesome that a well known attriction in a town could be seeing people throw fish [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]. [quote name='blueEbola' timestamp='1335749098' post='4935958'] I've lived in the PNW all of my life and just recently moved up to Seattle to start a new web developer position up here.. and it rocks! [/quote] First of all, congrats on the new position! [quote name='blueEbola' timestamp='1335749098' post='4935958'] Seattle is split up into several districts (sometimes called neighborhoods): Fremont, Ballard, Magnolia, Queen Anne, U-distict, Belltown, West Seattle, Green lake.. and the list goes on. Each district kind of has its own vibe. I live in northern Magnolia just south of Ballard, and it's got some amazing views and a "residential" kind of feel. Works for me because I came from kind of a country town and living on a busy street in downtown Seattle probably would've been a bit too hectic for me. Ballard is the condo part of town, there's tons of development going on up there and lots of young professionals living in that area. [/quote] I'll be working in the South Lake Union district (at Amazon.com), but I've heard it's not the best area in which to live. I don't think I'd mind a busy street, but I'm probably looking for an area that is (relatively) close to work and has a decent number of young professionals. From the sounds of it, Magnolia sounds like a good place to include in my search. [quote name='blueEbola' timestamp='1335749098' post='4935958'] There are several music venues and big acts roll through all the time. I've gone to 4 concerts in the past month so far [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] [/quote] I've heard good things about the music scene, which is exciting. As for sports in the area, how difficult is it to get tickets? Having lived near Pittsburgh, PA for several years, it has always been hard for me to get good, cheap tickets for football and hockey games, but baseball is pretty easy + the Pirates have a beautiful stadium.
  10. After much work, college is finally coming to a close: in just a few weeks I will be graduating! I am looking forward to starting a job in the Seattle, WA area this July, and I, as someone who grew up on the East coast and doesn't know much about Seattle, was wondering if anyone from the area would be willing to share their wisdom. I would like to get suggestions on things like: good areas to live, fun hangouts, interesting places to visit, gamedev groups, game jams, etc.
  11. Static variables must be initialized outside of the class definition, like this: [code]#include <iostream> using namespace std; class A { public: static const int i[]; }; const int A::i[] = {1, 2, 3, 4}; int main() { cout << A::i[0] << endl; return 0; }[/code]
  12. The extraction (>>) operator will not read in the \n after date. So when getline is called, it reads in an empty string. An example (with endlines shown as \n instead of whitespace): John \n 300 \n 3/3/2011 \n Ed \n 300 \n 3/4/2011 \n Your code will read in the first set of data correctly, but this is what the file looks like after it is done: \n Ed \n 300 \n 3/4/2011 \n So the next name will be "", the next score will be "Ed", and the next date will be "300". Obviously this isn't correct and will cause an error.
  13. You can download it on the javase download page: [url="http://www.oracle.com/technetwork/java/javase/downloads/index.html#docs"]http://www.oracle.com/technetwork/java/javase/downloads/index.html#docs[/url].
  14. The college that I'm attending supplies tablet PCs to all of the students. I work at the help desk for diagnosing and fixing problems for the tablets. They have been getting HP computers for several years now and they tend to work well. The major thing that we see coming in to get fixed is hard drives, so I would suggest an SSD for your tablet. The model I have is several years old (I have a Compaq tc4400--which I love). I take all of my notes using the pen in OneNote (the pen is especially nice for Math classes). It takes some time getting used to it, but you start to love it after a while. I would strongly suggest buying a tablet pc. The current model that the school is buying for freshman is the HP EliteBook 2740p, which has worked pretty well so far. The only problem I've seen with them is some problems with the keyboards, but that is because our college got the first batch of laptops produced. I think that they've fixed things since then.
  15. Your right, they are both symptoms of the same problem. The problem is that frames have borders. So, when you add the panel into the frame, it is added within the borders. But your frame is 800x600 including borders, so, when the panel is added to the frame the bottom-right part of it is obscured. So, the paddles are actually in the correct spot and stopping at the correct time for a 800x600 panel. So, now for the fix: remove this.setSize(Globals.getGameWidth(), Globals.getGameHeight()); from Main and add this.pack(); just before this.setVisible(true); in makeGUI. This will force your frame to be a little bigger than 800x600 so that the 800x600 panel will fit inside of it.