• 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

273 Neutral

About gretty

  • Rank
  1. What kind of document documents the following team practices/rules/procedures? Coding practices and syntax Directory structure and file naming conventions Testing plan (Unit, Integration and System) Logging rules and procedures Backup (of database, etc.) rules and procedures Adherence to module/component scope (functionality) I am starting a new role that doesn't have any of these procedures. So I want to produce a document that says 'Every new software project needs to start with a Software Architecture & Design Document that explains and plans the ABOVE_THINGS' where ABOVE_THINGS = my bullet points above. If I know the term for such a document I can google some templates to start me off.
  2. Can you think of a project that would expose someone to a broad subset of Computer Science topics and features? Obviously there is no silver bullet but there are some projects that would expose the developer to a wide variety of CS topics (design patterns, data structures, algorithms, architecture etc.)   Ie, throughout your whole Computer Science bachelor you are working on 1 project. Each course/unit you learn, you apply that knowledge to this one project.   Things I can think of: Develop a simple Operating System Develop a cross-platform cross-application API (by cross-application I mean; desktop application, web application, smart-phone application) Develop a programming language (incl compiler) I'm thinking one of the above is suitable but maybe you could expand/elaborate that project/objective to ensure that it targets a large subset of CS topics.  
  3. Hi, I recently applied for a job and there was an option to get a free CV/Resume assessment/advice done so I said what the heck I'll try it. I got a response back and it's made some assertions that I'm not quite sure are relevant to Software Developer/Engineer's CV's (I'm thinking more so to sales, business, etc. CV's) so I wanted to get other dev's opinions on its assertions. *I'm aware/of the opinion that these assessments most likely contain 'cookie-cutter' paragraphs and are not individually assessed with much seriousness so I should maybe take the critique's not too seriously.   Do you agree with their assertion that Software Dev/Engineer CV's should mention/focus on results/achievements rather than (what I believe to be the technical) tasks and duties?   Full assessment:
  4. Apologies if my post is not quite according to the standards of this sub-forum but.. Would anyone want to take the time to do a code-review of my c++ code. Not a standard time intensive review, just review the main/only header and cpp files and review format, c++11 standards, idioms and any big no-no's that stand out? The application is for my github portfolio.   The main application code is found in the Components folder. The bulk of the code resides in another repository (the CBA API) which please take a look at also although this hasn't been refactored in a while.   https://github.com/sazr/WindowTiler
  5.   I am compiling just using the 32bit static libraries (on my 64bit Windows 8.1 OS) in the hopes that I can just cover everyone (correct me if I am wrong about this?). My application is a simple WinAPI c++ utility application. So it's small (<800kb) so it doesn't make sense to distribute the visual c++ redistributable package with my installer. What I am hoping is to package all dependencies (I only use static libraries) into my .exe if possible.
  6. I am linking the static OpenSSL libraries so shouldn't I not need to distribute the dll with my installer? Shouldnt it be packaged into the exe?   My Linker->Input->Additional Dependencies are:   C:\OpenSSL-Win32\lib\VC\static\libeay32MTd.lib C:\OpenSSL-Win32\lib\VC\static\libeay32MT.lib C:\OpenSSL-Win32\lib\VC\static\libeay32MD.lib C:\OpenSSL-Win32\lib\VC\static\libeay32MDd.lib C:\OpenSSL-Win32\lib\VC\static\ssleay32MTd.lib C:\OpenSSL-Win32\lib\VC\static\ssleay32MT.lib C:\OpenSSL-Win32\lib\VC\static\ssleay32MD.lib C:\OpenSSL-Win32\lib\VC\static\ssleay32MDd.lib
  7. I thought if you compile a Visual-studio 2013 Win32 project using `/MT` Code Generation->Runtime library then it will automatically package all dependency dll's - including 3rd party dll's - into the executable? Currently certain users get an error when running my .exe. Its related to not having a 3rd party dll (OpenSSL):   This error has occurred for users using my .exe on Windows 10 OS's. How can I ensure all dependency dll's are packaged into my .exe? I currently compile my application on my 64bit Windows 8.1 OS. The win32 visual-studio project is compiled using the following project properties: Character Set: Unicode char set Use of MFC: Use standard windows libraries Whole Program Optimisation: Use Link Time Code Generation Debug info format: none Code Generation->Runtime library: /MT  
  8. Whats your strategy when you run into a road-block when coding? When I say road-block I mean the bug you cant fix, you've just discovered that your approach/design wont work because the drone you ordered only has Bluetooth and not WIFI so you need to rethink your whole approach, your call to GetWindowRect is returning illogical numbers that don't seem possible (right is 100 and left is 1000) and without fixing this you can't test that your task bar docking component works. I have about 3 hobby projects going a once and I tend to find when I encounter a road-block in one project about 50% of the time I move on to a different project for a while then come back and revisit it and 50% of the time I go full OCD and devote hours to fixing/solving this road-block (which sometimes is not the most time efficient), trying every little tweak to figure out if this fixes it and getting grumpy as shit with life.   Explain what actions you take from the technical to the mundane, ie, 'move on to another feature and revisit the problem with a fresh perspective (of time)' to 'get up and go make a coffee or shoot the shit with co-worker x'.   I'm interested to know if you say 'I'm not going to work on anything else till I solve this road-block and get it working' or 'I am going to start on a different feature/project and come back to this' or etc.
  9. I am attempting to create a unique WinAPI control and I am struggling to pick the best/least effort intensive solution to create it.   Its essentially a Horizontal Listbox (HLB) of WinAPI Button controls (see the control at the bottom of the following image). The user scrolls the HLB by left mouse button down (anywhere inside the HLB HWND) and moving the mouse horizontally anywhere (even outside the HWND bounds). The buttons have up, down and hover skins/images.     Each solution has its drawbacks, maybe there is a Common Control I dont know about that I could subclass?   Solution 1: Sub-class a static control as the HLB. - Make the subclassed static control the parent of each of the buttons and space out horizontally - Static controls can't have scroll bars (AFAIK) or atleast they don't receive scroll messages. - Set the buttons skins using Button_SetImageList(). - Buttons steal the focus. Meaning if the user left clicks down on the button and mouse moves  with the intention of horiz scrolling the HLB, the HLB wont receive any mouse move messages because they all get dispatched to the button until left mouse button up is fired. I guess I could also subclass the buttons to dispatch their mouse messages to the HLB - unless there is a better method you can suggest? - Horiz scrolling will only work when the scroll bar is clicked and dragged. If the user clicks inside the main HLB HWND no scrolling events are fired.   Solution 2: Use a Pager control? Not exactly sure this will work. - Pager should align and space out the buttons for me which is good. - Unsure if the control allows for horiz scrolling by clicking inside the Pager HWND and dragging the mouse? Do you know? - The Pager has arrows on the left and right of the control (to scroll left and right). Is it possible to hide these?   Solution 3: Create my own Owner Drawn window and draw the buttons also (so they wont be WinAPI Button controls). - Requires me to do lots of hit testing and painting; 'Is the mouse over button x and is left mouse button down: paint down image to specific region', same again for hover, have to detect WM_MAXIMIZE, WM_MINIMIZE and repaint the window, detect WM_SIZE and rescale buttons. Ie lots of work. - I can rather easily detect when the user intends to scroll and when they intend to click a button because all events are sent to the one HWND.   Solution 4: Sublcass a Scroll Bar and add WinAPI buttons to that - Not very familiar with these controls. Any advice? Can you see any problems I could run into?   Solution 5: Make the HLB a custom class window and add WinAPI buttons to it - This is the solution I am tending towards. I add a scroll bar to this control (and hide it). Add buttons to it. - I run into the same problem of buttons stealing the focus.   Any advice how you would implement this?
  10. Looks like I was using the wrong flag. The following works: APPBARDATA barData {0}; barData.cbSize = sizeof(APPBARDATA); UINT_PTR res = SHAppBarMessage(ABM_GETTASKBARPOS, &barData);
  11. I am trying to determine which side the Windows Taskbar (System Tray?) is docked to - so I can position my popup window above/below/left/right of the taskbar. I am using SHAppBarMessage(ABM_QUERYPOS, &barData) to obtain this information but it always returns ABE_LEFT for me when my taskbar is ABE_TOP.   What's going wrong? Maybe I cant use that function to determine it? Maybe my APPBARDATA params are wrong? Its difficult to check whether the function call is successful, see MSDN documentation for return value - not quite sure what the successful value should be. HWND taskBar = FindWindow(_T("Shell_TrayWnd"), NULL); // taskBar is valid and not null APPBARDATA barData{}; barData.cbSize = sizeof(APPBARDATA); barData.hWnd = taskBar; barData.uCallbackMessage = 0; //barData.uEdge = ABE_RIGHT; //barData.rc = RECT{0,0300,300}; barData.lParam = (LPARAM)FALSE; UINT_PTR res = SHAppBarMessage(ABM_QUERYPOS, &barData); // barData.uEdge always equals ABE_LEFT // Unsure how to check res for error: see MSDN documentation - not very helpful
  12. I have a tricky circular inclusion issue that I dont know how to solve. To sum up: What technique or method can I use to fix/avoid this circular inclusion? class Component; class IApp; class Component {     IApp* app;          // Error: Invalid use of incomplete type 'class IApp'     template<typename T>     void registerEvent(const int& evtId, Status (T::*func) (int))     {         auto res = std::bind(func, (T*)this, std::placeholders::_1);         app->registerForEvent(evtId);     } }; class IApp : public Component { public:     void registerForEvent(const int& evtId)     {         printf("IApp::registerForEvent\n");                  // ...     } };
  13. I'm trying to link an outside library in my C++ VS2013 project. Upon compiling the project I get the error:   I have setup Configuration Properties->C/C++->Additional Include Directories to point to the outside library folder`$(PROJECTDIR)/../Foo/`. Is there anything else I need to do? The project/directory structure is very simple   Projects:     Foo:         foo.h         foo.cpp     IncludeOutsideLib:         // contains C++ VS2013 project         main.cpp foo.h:    #ifndef FOO_H     #define FOO_H     #include <cstdlib>     void bar();     #endif // FOO_H foo.cpp: #include "foo.h"     void bar()     {         printf("bar\n");     } main.cpp: #include <iostream>     #include <cstdlib>     #include "foo.h"     int main(int argc, char** argv)     {         bar();         system("pause");         return 0;     }
  14. I know this is a long shot but does WinAPI have Sortable List functionality similar to JQuery's Sortable Lists? And to push my luck even further, does similar functionality exist for a vertical list of Button controls (as opposed to ListBox items)? Could I possibly use Drag and Drop for this? Or possibly DragDetect()?   If there's no native functionality, do you know of any 3rd Party libraries (C WinAPI). Without knowing the proper name for this functionality (sortable lists?) its hard to search for a 3rd party library.    
  15. After extensive debugging I have found the problem and solved it. It's actually quite interesting what went wrong. The problem was here... struct IEventArgs { }; struct WinEventArgs : public IEventArgs {     WinEventArgs() = delete;     WinEventArgs(const HINSTANCE& hinstance, const HWND& hwnd, const WPARAM& wParam, const LPARAM& lParam) :         hinstance(hinstance), hwnd(hwnd), wParam(wParam), lParam(lParam)     {}     const HINSTANCE& hinstance;     const HWND& hwnd;     const WPARAM& wParam;     const LPARAM& lParam; }; class EventDelegate { public: // the problem is here: the parameter should be 'const IEventArgs&' typedef std::function<Status(IEventArgs)> EDelegate; EventDelegate(EDelegate delegate, GUID gUidContext); Status operator()(const IEventArgs& evtArgs)     {      return delegate(evtArgs);     } private: GUID gUidContext; EDelegate delegate; }; I've produced a simple example of the problem that people can reproduce. Whilst I've fixed it, what exactly was going wrong, was it that a copy was being made and I hadn't implemented a copy constructor? struct IEventArgs { }; struct WinEventArgs : public IEventArgs { WinEventArgs(const int& a, const int& b) : a(a), b(b) { } const int& a; const int& b; }; class Component { public: void test(const IEventArgs& evtArgs) { const WinEventArgs& args = static_cast<const WinEventArgs&>(evtArgs); printf("a=1 is: %d, b=2 is: %d\n", args.a, args.b); } }; int main() { WinEventArgs args(1,2); Component cmp; // Note Component::test's parameter is 'const IEventArgs&' and that the std::function parameter is just 'IEventArgs' std::function<void(IEventArgs)> func = std::bind(&Component::test, cmp, std::placeholders::_1); func(args); // When std::function parameter is 'const IEventArgs&' the cast inside Component::test succeeds std::function<void(const IEventArgs&)> func2 = std::bind(&Component::test, cmp, std::placeholders::_1); func2(args); return 0; }