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

Jacob Jingle

  • Content count

  • Joined

  • Last visited

Community Reputation

226 Neutral

About Jacob Jingle

  • Rank
  1. Quality control. The menu should look and behave like its counterpart in other operating systems. Annoyance factor. You shouldn't have to click on a menu 3 to 4 times just to get rid of it if after you change your mind and decide you don't need it. It makes the menu(and app by association) seem buggy and slow.
  2. Your question kind of got me my answer: their menu isn't a menu, it's a tool bar(command bar). I don't believe they had that back when they made notepad. Thanks for your help.
  3. I dunno, minus little things like 'GetMessage' not dealing with -1, Microsoft's code looks ok.   Microsoft's 'Win32 Project' wizard generated code: // crapcrap345.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "crapcrap345.h" #define MAX_LOADSTRING 100 // Global Variables: HINSTANCE hInst; // current instance TCHAR szTitle[MAX_LOADSTRING]; // The title bar text TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name // Forward declarations of functions included in this code module: ATOM MyRegisterClass(HINSTANCE hInstance); BOOL InitInstance(HINSTANCE, int); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM); int APIENTRY _tWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPTSTR lpCmdLine, _In_ int nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_CRAPCRAP345, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_CRAPCRAP345)); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return (int) msg.wParam; } // // FUNCTION: MyRegisterClass() // // PURPOSE: Registers the window class. // ATOM MyRegisterClass(HINSTANCE hInstance) { WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_HREDRAW | CS_VREDRAW; wcex.lpfnWndProc = WndProc; wcex.cbClsExtra = 0; wcex.cbWndExtra = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_CRAPCRAP345)); wcex.hCursor = LoadCursor(NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1); wcex.lpszMenuName = MAKEINTRESOURCE(IDC_CRAPCRAP345); wcex.lpszClassName = szWindowClass; wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL)); return RegisterClassEx(&wcex); } // // FUNCTION: InitInstance(HINSTANCE, int) // // PURPOSE: Saves instance handle and creates main window // // COMMENTS: // // In this function, we save the instance handle in a global variable and // create and display the main program window. // BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) { HWND hWnd; hInst = hInstance; // Store instance handle in our global variable hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL); if (!hWnd) { return FALSE; } ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } // // FUNCTION: WndProc(HWND, UINT, WPARAM, LPARAM) // // PURPOSE: Processes messages for the main window. // // WM_COMMAND - process the application menu // WM_PAINT - Paint the main window // WM_DESTROY - post a quit message and return // // LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { int wmId, wmEvent; PAINTSTRUCT ps; HDC hdc; switch (message) { case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections: switch (wmId) { case IDM_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About); break; case IDM_EXIT: DestroyWindow(hWnd); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: Add any drawing code here... EndPaint(hWnd, &ps); break; case WM_DESTROY: PostQuitMessage(0); break; default: return DefWindowProc(hWnd, message, wParam, lParam); } return 0; } // Message handler for about box. INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { UNREFERENCED_PARAMETER(lParam); switch (message) { case WM_INITDIALOG: return (INT_PTR)TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL) { EndDialog(hDlg, LOWORD(wParam)); return (INT_PTR)TRUE; } break; } return (INT_PTR)FALSE; }
  4. How does Microsoft achieve their more responsive window menus?     Standard win32 app project in Visual Studio for desktop: Debug/Retail, it doesn't matter, If I double click(left mouse) on 'File' in the menu bar only one of the clicks registers. The second click is always lost. vs. Any Microsoft product: If you double click(left mouse) on 'File' on the menu bar the menu quickly opens and closes. Registers all my mouse clicks.    
  5.   Well first off I don't think any billionaires are going to waste their money making a nuclear bomb. Not even Bill Gates would do that. I think it's a bogus argument.   Second, for the sake of argument, I would hold them to the same standard as our government. Do you trust your government with nuclear missiles?
  6.   I can see the difference, but I can also see that if your neighbor is going to spend hundreds of billions of dollars to develop and build a nuke...He could probably find another way to do the same damage. If you can't trust him with a nuke then you can't trust him with anything. He needs to be locked away.
  7. Regulations or not, your neighbor could murder you with both, right?
  8. In the US this has morphed into "Give me positive liberty or give me death."
  9.   You could do this for just about anything.   5 members of SoCal family killed by alleged drunken driver ID'd
  10.   If you can't trust a sane person with a <any hi-tech weapon here>...Why can you trust them with a car, plane, pressure cookers, and the like?
  11. No, I'm pretty sure the majority of the people here know what I meant. Like most Americans, Canadians, Eurabians, and the like, I don't know enough about the people to wager on a war or not.   Note: the last time America thought they knew the people of that region, it walked into another world war and a nuclear bomb being dropped. Both events(War with Japan) were completely avoidable. (Plus let's not forget how our ally in that region at the time was Mao)   Rude/Off topic??? Do you really mean this or is this just fake PC outrage?   In the context of our conversation I wasn't talking about assimilated people. I also wasn't saying they were actually insane or that they were actually aliens. I apologize to anyone who thought I was.
  12. I'm a newbie to OpenGL, so here it goes: How do I remove one fragment shader stage for another? Would I just use glUseProgramStages(...GL_FRAGMENT_SHADER_BIT...) on the new fragment shader and would it then remove the other one? Can a pipeline have more than one fragment shader in use? :/ Like this? Draw call: glUseProgramStages(vert shader) glUseProgramStages(first frag shader) draw stuff; glUseProgramStages(second frag shader) draw stuff
  13. I'm kindof confused over the std::tie function. Is my return code safe? Or is this a local variable error?     std::tuple<std::array<int, 2>, std::array<int, 2>> FunctionThatReturnsTuple() { std::array<int, 2> buff = {1, 2}; std::array<int, 2> buff2 = {1, 2}; return std::tie(buff, buff2); <---- safe? }  
  14. DLNA seems to be downgraded in win 8! :o   It's so bad that I've kept win 7 installed just so I can use it instead. It's just horrible.
  15. My shader worked perfectly before recent Nvidia Update. Now I'm getting the error "ARB_separate_shader_objects requires built-in block gl_PerVertex to be redeclared before accesing its member." I'm new to GLSL shaders, and I just don't know what to do...Any help is greatly appreciated.   If I add: out gl_PerVertex {   vec4 gl_Position; };   It compiles with no errors but nothing is drawn.   //geom #version 430 #define POSITION 0 #define GEOMUV 1 #define INDEX 2 #define FRAG_COLOR 0 layout(points) in; // x, y, width, height layout(triangle_strip, max_vertices = 4) out; uniform mat4 MVP; in Data { ivec4 pos; // x, y, width, height vec2 UV; flat int Index; } vdata[1]; out Data { vec2 UV; flat int Index; } gdata; void main() { int x = vdata[0].pos.x; int y = vdata[0].pos.y; int widthx = vdata[0].pos.z + vdata[0].pos.x; int heighty = vdata[0].pos.w + vdata[0].pos.y; // bottom left quad gl_Position = MVP * vec4(x, heighty, 0, 1); gdata.UV = vec2(0.0, 0.0); gdata.Index = vdata[0].Index; EmitVertex(); // bottom right quad gl_Position = MVP * vec4(widthx, heighty, 0, 1); gdata.UV = vec2(1.0, 0.0); gdata.Index = vdata[0].Index; EmitVertex(); // top right quad gl_Position = MVP * vec4(x, y, 0, 1); gdata.UV = vec2(0.0, 1.0); gdata.Index = vdata[0].Index; EmitVertex(); // top left quad gl_Position = MVP * vec4(widthx, y, 0, 1); gdata.UV = vec2(1.0, 1.0); gdata.Index = vdata[0].Index; EmitVertex(); EndPrimitive(); }