• 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

549 Good

About adeyblue

  • Rank

Personal Information

  1. I don't think there's a log of processes starting by default but you can use WMI to make one: Run wbemtest as administrator (it's in system32\wbem but search will find it) Click Connect, and Connect again in the new dialog Change Method Invocation Options to Asynchronous Click Notification Query Put "Select * from Win32_ProcessStartTrace" without quotes in the box and click apply Now go do what you're doing. The box will fill up with events for processes that are created, though it can take a few seconds after they're launched to be listed. Double click an event and scroll down the properties box, ProcessName is the process that was started and ParentProcessPid is who started it. If the window is created by an already extant process, you might have to write some code for that. SetWinEventHook(EVENT_OBJECT_CREATE, ..). or RegisterShellHookWindow/SetWindowsHookEx(WH_SHELL, ...) will get you notifications of new windows.
  2. I thought the whole point of the move to IPB in the first place was so you didn't have to have all sorts of custom code for things like this. Seems a bit weird that you're now moving back in that direction for essentially fluff things after the upgrading issues you had then
  3. I have no experience with D3D12 but if its headers are like D2D's then [url=http://blog.airesoft.co.uk/2014/12/direct2d-scene-of-the-accident/]the C interface is broken[/url] in respect to the interface functions that return structures. And they're not really bothered about fixing it
  4. When I play games I don't really play anything new. Heck, the last game I bought as it was released was Final Fantasy X, the original version. The one game I do play and perhaps play too much, is Intelligent Qube (or Kurushi since I'm a contrary European) on the PS1. I usually speedrun it, but then I found a high score for the game on Twin Galaxies of 1,244,800 with an IQ record of 506. This was achieved on the default / easiest difficulty, nevertheless if you've played the game you'll understand that they're both pretty great scores. The scoring mechanics for the game are relayed via the tutorial and otherwise easily observable so anybody doing a score attack can gauge how they're progressing and what they need to do. How the IQ score is calculated on the other hand is not public knowledge. So seeing as I like to know how things work, can read PlayStation (MIPS) assembly, and some clever people have fitted debuggers into PlayStation emulators, I went to uncover it. The results I found contained some rather unexpected information. Read the rest of this entry on Just Let It Flow
  5. It's well known that Visual Studio's C compiler hasn't progressed much beyond C89, save for things like variadic macros. What might not be quite as well known is that to rectify this a bit, somebody created a C99 to C89 converter. A decent tool to be sure, but it doesn't integrate well into Visual Studio. Being a seperate program means you have to fudge things to run it instead of cl.exe, or you have to set a pre-build step, save the processed output and then compile those files instead of the ones in your project. It's not terribly friendly for IDE purposes. Wouldn't it be nice if there was a way to intercept the compilation and process the source files as it goes? What isn't well known is that you can do that, with compiler plugins. The good news about these plugins is that unlike IDE ones such as Visual AssistX, the support is directly in the compiler so you don't have to have a pay-for version to use them. You see, not only does cl.exe have the plethora of options it displays as help, it has undocumented ones too. Ones which allow you to change or add compiler passes and pass your own arguments to them. Continue reading on Just Let It Flow...
  6. These functions don't like BITMAP type resource data, only RCDATA type resource data.   Change the IDB_BITMAP1 BITMAP "Image.bmp";   bit in the rc file to IDB_BITMAP1 RCDATA "Image.bmp";   The second stores a copy of the file as is; the first one strips off the BITMAPFILEHEADER from the start of the file. The WIC functions the D3DX functions use (specifically CreateDecoderFromStream) seem to require that header be present or they fail. It ain't there, so they fail which make the D3DX function fail.
  7. [quote] while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE | PM_QS_PAINT | PM_QS_...)) InputProc(msg.hwnd, msg.message, msg.wParam, msg.lParam); Still makes the program hang. It never recieves input [/quote] Nothing you can give PeekMessage will make it hang, so without being able to see the code it's probably one of a couple things: 1. Like in the first post, invalid flags are being passed to the only / all PeekMessages and the window hangs because no messages are being retrieved at all. You'd also see that if you run the message pump on a different thread to the one that created the window. 2. There's a rogue Sleep / WaitForSingleObject that rarely returns 3. It's working fine except that InputProc isn't calling DefWindowProc for some window or keyboard messages so certain things it does for you (like letting you double click the title bar to move the window or pressing Alt to start the window menu) aren't happening On a stylistic note, it's not the best idea to call your custom message dispatching function the same thing as the Windows one, especially when they share the same signature. At least, I thought the DispatchMessage in the snippets here was the Windows function before I checked your repo. Or maybe you changed back, and it is! [quote] Does this not imply that there's no need to call DispatchMessage in a PeekMessage loop? [/quote] You don't have to call it, but even if you only explicitly create one window things like COM or plugins (if you allow those) can create other windows that run on the same thread. Without a (Windows) DispatchMessage, any messages picked off the queue intended for them will never make it to their WndProc, unless you do it manually. It also does other stuff like translate unicode messages for non-unicode WndProcs and vice versa. It's not anything you couldn't do yourself though.
  8. You could also (ab)use the fact that accumulate is implemented in terms of addition and use that to concat a bunch of strings in a container. The need to provide the starting point takes away some elegance points but it's still serviceable. [code] // include <numeric> std::wcout << fieldTitle << L'\t' << std::accumulate(dest.begin(), dest.end(), std::wstring()) << std::endl; [/code]
  9. If you add dumpbin /exports $(TargetPath) as a post-build event for the dll/exe project generating the lib & exp, the build output will tell you what functions are being exported. I know VS 2008 has a bug where certain build options will cause the project to export std::_Init_locks which in turn will generate an exp & lib for otherwise non-exporting projects. I don't know if they fixed it though.
  10. There's nothing wrong really. If you convert that number to hex you get: [font=courier new, courier, monospace]0x80011000D008E ..8|17| 13| 142[/font] it's just packed into word sized values with the larger value. You can get the individual parts using the high and low parts of the large_integer with the word extraction macros: [code] std::wostringstream outs; outs << L"Your computer has " << num_adapters << L" display adapter(s). D3D driver version is " << HIWORD(lrg_int.HighPart) << L'.' << LOWORD(lrg_int.HighPart) << L'.' << HIWORD(lrg_int.LowPart) << L'.' << LOWORD(lrg_int.LowPart); [/code] It would be nice if the CheckInterfaceSupport help page documented this, but maybe it's dependent on what the driver vendor provides so there's no set format for it.
  11. std::get_temporary_buffer & std::return_temporary_buffer. I am convined nobody has ever used these functions for anything, ever.
  12. You can also set the _NO_DEBUG_HEAP environment variable to a non-zero value to stop it from occuring. You used to be able to set it from the Environment part of Project Properties->Configuration->Debugging but that was in VS2008, it may have changed in more recent versions.
  13. You (OP) have a problem everybody seems to run into when doing this at some point. You call CreateWindow: this->hwnd == NULL CreateWindow sends WM_NCCreate - you set the window data, this->hwnd still == NULL CreateWindow sends the other messages it sends - you call Wnd->WndProc, you pass this->hwnd to DefWindowProc but this->hwnd is still NULL CreateWindow finally returns, after a check only now is this->hwnd set to a valid value Long story short, you handle who knows how many messages by passing a NULL hwnd to DefWindowProc or to Begin/EndPaint. The easiest way to fix it is to assign this->hwnd in WM_NCCreate.
  14. [quote name='Ashaman73' timestamp='1350540264'] You may also know that what it doesn't have, is a defined API so us normals can leverage it programmatically. Us normals use normally [url="http://www.zlib.net/"]zlib[/url]. [/quote] Haha, yeah I'm well aware of that. It's not such a good tool to show how to simulate dragging and dropping in Windows though. The zipping aspect is just a useful angle a) to base it on and b) fit it in with the 'unseen side of Windows' theme of my blog.
  15. If you haven't been living under a rock (or in a non-Windows world) you'll know that since XP, Windows has had zip file extraction and creation. You may also know that what it doesn't have, is a defined API so us normals can leverage it programmatically. But there are ways and means. Think about it, the usual way you'd interact with zip files is through the shell. You'd highlight a bunch a files and "Send To" a Compressed Folder or drag them into an existing folder and voila. There's obviously some code behind that's actually doing those things, and since you can do them from 'Open File' dialogs and the like, it can't be code within the Explorer executable. You can search Google all you want, but you'll only find that MSDN isn't sandbagging and there are no directly exported functions to create zips. What you may find is that shell32 and friends do have functions and interfaces to duplicate the Shell's methods of dragging, dropping and sending to, so that seems a good lead to follow... Continue reading on Just Let It Flow