• 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

3002 Excellent

About Sik_the_hedgehog

  • Rank

Personal Information

  • Location
  1. The usual suggestions for localization will do (they apply to all languages), look them up. Put all strings that could show up on screen into a file and let the game load them from there, and try to avoid making strings on the fly as much as possible (better to repeat text than to risk ending up with something that isn't gramatically correct in another language) (???)   Probably the biggest thing to worry about (aside from text itself) in your case is space. English is going to take more space on screen and likely in memory as well, so you need to account for this issue (if it doesn't allocate enough memory as needed then at least make sure it allocates a lot of it, better to waste than having the text not fit). Some other languages are even worse at this.
  2. Press Shift+Space in the browser to scroll up instead of down.   Not sure on which browsers it works but I can confirm it works on Firefox and somebody said it works in Chrome too.
  3. I think the check was that if the size is zero, then the data doesn't exist (hence no pointer is needed).
  4. I can't believe I just fell for it again   (waiting for the code in that post to load... then I remembered it shouldn't take even a second and then what software this was from)
  5. Yeah just make your own. It's essentially just a tilemap, with your tiles being each glyph. May want to take advantage of that to do Unicode as well (getting access to a lot more of useful glyphs in the process). The downside is that you'll have to provide the glyphs =P (I have a bunch from an old project, 16×16 per glyph though)
  6. Guys, I'd already go bonkers if a full rebuild took over a minute for me =/ (and of course I normally build like after about every change so in practice it's more like 3 seconds since only one or two files need to be rebuilt)   I once did this but because the IDE was broken (no idea what happened) and was refusing to take my static libraries so I went the overkill way of literally #including them. Also for whatever reason it wasn't keeping track of headers so I had to do full rebuilds no matter what (it was an awfully broken install, OK?). Then I noticed that if I just had a single file that #included every other file (which happened to work in my case) the build time would go down from over a minute to like 5 seconds. I have no idea what's going on but I guess that spawning the compiler process is even worse than the compiling itself.
  7. Does the shortcircuiting matter here actually? I imagine the compiler should be able to optimize out cases where it notices that operations can be done in either order and it not affect the outcome.   EDIT: did some quick tests myself and... well, GCC does indeed fail to optimize that out. Whoops. Also pretty disappointed overall this time, GCC really didn't try to do anything clever regardless of what I threw at it. I guess there isn't much else to be done about it (assuming the code is already cache coherent). Then again I recall reading that CPUs now try to keep track of where recent branches tend to go? On code that's run on a tight loop that should already help reduce branch mispredictions after a few iterations.
  8. Wait, that parser can only accept the options if they come in that exact order? (even though each line starts with the name of the relevant setting) Yeah, especially if you changed something that keeps crashing the game miserably and want to undo it. Being able to edit the settings directly makes this task easier. It's also a good place to put obscure settings that normally wouldn't be useful (i.e. extremely advanced stuff) but that somebody may want to give a try.
  9. As has been said before the current format is already much simpler than XML... I wouldn't bother with XML unless you end up with complex enough structures to warrant deep trees. Doesn't look like that's the case here.   If you really want to switch to something more standard, I guess you could go with INI files, though there's a bunch of libraries out there to look for... and it may even be feasible to just write your own parser (the main reason they took off back then is that they're that simple, after all). Or even modify your own, I mean, replace the space with an equals sign and you're halfway there =P
  10. The problem in many cases is that you read what you think you wrote, not what you actually wrote. That tends to contribute to typos being so hard to find. Once you're tired of looking for an obvious mistake you'll just start rereading everything carefully again just to try to overcome that issue.   Of course there's also the complementary problem where you waste the whole day looking for a dumb typo, and then you realize the problem is that the algorithm is broken in the first place...
  11. Reminds me of what Nintendo did with the Wii (for context: they compared keys using strncmp instead of memcmp, so all you needed was to use a key that's all zeroes and the console would take it as a valid disc) http://thedailywtf.com/articles/Anatomii-of-a-Hack
  12. Don't forget about overcommiting. Enjoy processes dying out of nowhere without any warning or explanation.   As for speed, reminds me of a situation I had with memcmp. Apparently at least on some implementations it's optimized for comparing large chunks of data when I was using it to compare a few bytes instead - but not a fixed amount so the compiler can't just unroll it. And this was in a tight loop. Turns out that the overhead of preparing for a large comparison outweighted the benefit, to the point that simply adding a simple check for the first byte (since most comparisons would fail) would speed it up like crazy.   Just because the standard library is probably better optimized than what you can do doesn't necessarily mean it'll be best optimized for your actual case.
  13. Yeah the multiple formats one is intentional, for example you can have both rich text and plain text too, that's how programs don't barf when trying to paste text from elsewhere.   It actually goes all the way back to Windows 1. The original idea was basically the Unix philosophy but in GUI form: each program was good at handling one task, and they communicate with each other through the clipboard (much like the pipe does on the command line in Unix). Just look at this presentation (skip to 3:29 if needed), dBase handles a database but can copy an entire field into Write as text, Chart can generate a basic pie chart but not much more but it can copy that chart into Paint as an image (which you can use to make it prettier). Write then can also take the image from Paint to embed it into the document (and if you didn't care about making the pie chart pretty, you could just copy from Chart directly into Write, again as an image).   Kind of amusing how we settled on mamooth programs that try to do everything on its own instead when that was the very thing Windows was intended to prevent.
  14. Yeah, converting the PNG to 8-bit with dithering is another option (that turns out to save a lot of space), though not everybody likes the dithering and also has a serious potential to backfire if there are too many hues. Still probably the best option when you have control over what images are processed though, especially at high resolution. As for JPEG 2000, I think it also has the issue of nearly nothing supporting it, at least as far as everyday use goes (IIRC it has way more support in the professional side of things).   In any case the original point wasn't so much this but rather the suggestion of using javascript for an horrendously expensive operation =P
  15. PNG compresses much worse for things like photos or the like (PNG is good at flat shades and gradients), but JPEG can't support transparencies at all so you're forced to stick with the rectangular shape. JNG is meant to be a middle point that uses the best part of both (see how its name is a mix of JPEG and PNG, even). Browsers don't support it though, so probably your best choice here is to split it into two files (a JPEG and a PNG) and merge them in a canvas. Or you can be careless, parse the format yourself in a script, then bring the browser to a halt because of how much CPU time and RAM you're hogging by doing that. Especially if the image is large.