• 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

211 Neutral

About WillPash

  • Rank

Personal Information

  • Location
    Birmingham, West Midlands, UK
  1. [url="http://www.gamefromscratch.com/"]GameFromScratch.com[/url] is a very good website. Just had a glance, and very impressed , congrats to Serapth. Clean and nice introduction for C++ game programming with the underrated SFML. Yet to get the best of game programming tutorials you need to learn basic C++; and to understand the logic and the principles, like OOP (Object Orientation Programming), Templates, and others. Here are some good C++ tutorials to get started [url="http://www.cprogramming.com/tutorial/c++-tutorial.html"]CProgramming.com[/url] [url="http://www.learncpp.com"]LearnCPP.com[/url] [url="http://www.codingunit.com/category/cplusplus-tutorials"]CodingUnit[/url] [url="http://www.zeuscmd.com/tutorials/cplusplus/index.php"]Zeus CMD[/url] - Warning 6 years old, but in-depth concise and easy to follow tutorials to get started. And after all this time, as relevant as it has ever been. [url="http://www.cpp-home.com/"]CPP Home[/url] Hope that you enjoy your new task of learning C++,as Servent of the Lord mentioned; it seem boring at first, but if you have the burning desire to learn you will excell in time. When you do pick it up, the payoff will be immeasurable and allows you to do the game programming you want to do and enjoy in doing it. Regards
  2. I agree, for beginners C# forms is the way to learn. For C++ QT is very good, and it supported by all major platofrms; even mobiles. GTK+ is quite good, but more lower level and harder to understand at the beginning. With these GUI APIs you can create some really useful tools, which will aid you in the future when you develop games (making your own game editors, etc). Get to grips with raw C++; bare in mind as ApochPiQ mentioned isn't GUI development friendly. So write some console apps, and when you are ready and you have covered not only C++ programming; you have also learned the structure of a program. Once you get to writing GUI applications, knowing about message queueing, events, input, GUI interaction will come with patience and most importantly persistance. Agree with the previous posts MFC is absolutely terrible, do not bother. I've heard good things about WX as well. To be honest, there are plenty of alternatives; These GUI's are good bases to learn when you are ready. Just to add, a lot of in-game menus (HUDs) and GUI are usually done with [url="http://www.cegui.org.uk/wiki/index.php/Main_Page"]Crazy Eddie's GUI[/url], which not only uses C++, but also easier languages like C#, Python, and many more . Look at the video demos for now, once you get more acclimatised to more graphical programming, remember it and give the code examples a try.
  3. With intellisense it is quite buggy in Visual C++, as you say it is perfect in C# and moving to the C++ it can seem broken and poor in comparison. As you have intellisense on, it is no guarantee it will work 100% properly as sometimes the database that generates the auto-completion can get broken and corrupted whilst you are working with Visual C++. So I would recommend you if that happens, close Visual Studio. Delete your *.ncb file (in Visual Studio 2008), or *.sdf file (for VS 2010 if my recollection is correct!), the db files mentioned are noticeable as they are so huge (can be well over 60MB depending on project size and library dependencies); these files are the databases that hold all the auto-complete intellisense data. Once you have done that restart Visual studio with the project you are working on. Do not use it, as you allow VS to rebuild the database. It will show in a message at the bottom of the program that intellisense is being built, if you do anything, even edit code, you could easily corrupt it again. When that process is complete, intellisense should be okay to use. I found it can be flaky for large projects especially with VS2008, but it works way better for VS2010. As you are using VS2010, I guess you have enabled Intellisense; so remember what to do if it starts breaking down again.
  4. [quote name='MARS_999' timestamp='1315684980' post='4860101']Thanks that got rid of the warning... From the looks of it, this is cross platform ok?THanks![/quote] No problem mate... By the way, just to answer, yes It is multi-platform as it is written with pure C++ STL. You can easily compile with both Windows and Linux as I have.I have moved away from [b]wchar_t[/b], as there are inconsistencies with the size of the data type (Windows it is 2 bytes and on other OS it is 4 bytes, if my memory is correct). So in the latest C++standards, it is recommended to use a new data type [b]char32_t[/b], as it is same size on all platforms. The information on [b]char32_t[/b] is scarce, but out there. The first place to look is [url="http://en.cppreference.com/w/cpp/keywords/char32_t"]CPP Reference Link to char32_t[/url]. You can also use [b]char16_t[/b] as that is also new in the C++ standards. It may not be fully implemented on all compilers, so research on it before going into it 100% on any projects.
  5. Hi this may be a bit verbose, but i found it years ago on this site. Can't find where it was but I have a copy here. [code] string ConvertWideToString(const wstring &wideString) { vector<char> asciiCharacters(wideString.length()); const wchar_t *nextWideCharacter; char *nextAsciiCharacter; mbstate_t state; int res = use_facet< codecvt<wchar_t, char, mbstate_t> >(locale("C")).out( state, wideString.c_str(), &wideString.c_str()[wideString.length()], nextWideCharacter, &asciiCharacters[0], &asciiCharacters[0] + wideString.length(), nextAsciiCharacter ); if(res == codecvt_base::error) throw runtime_error("Wide to ASCII conversion failed"); return string(&asciiCharacters[0], nextAsciiCharacter - &asciiCharacters[0]); } [/code] It works from the times I've used it. Hope it helps...
  6. Have you ever thought of [url="http://www.khronos.org/webgl/"]WebGL[/url] for hardware accelerated 3D Graphics. It is based on OpenGL, and should run with the latest versions of Chrome, Opera, Safari and soon Firefox 4 (IE9 is out of the question for now!). The best site to look at for basic examples to get started with is [url="http://learningwebgl.com/blog/"]Learning WebGL[/url]. All you need is a good knowledge of OpenGL and Javascript and away you go.
  7. Another option, which can be used to display a robust GUI in OpenGL is Crazy Eddie's GUI (CEGUI). Try using this library as it is streamlined for good hardware performance. And it is multiplatform. Best thing is that CEGUI is open source (MIT), so you can configure it to your own needs.
  8. I have to admit, my favourite parser is LibXML2, which is very intensive, flexible (Multiplatform, very portable, uses Unicode by default) and most important free to use in either in closed or open source projects. It is included with loads of examples, mostly in C as it is easily integrate it to your C++ code. Best using a library file as are a few source files with the Libxml2 project.
  9. That sounds great Starfox. With the bugfixes with libspeex, point out the fixed bugs to speex.org as your contribution will be an overall help for the whole community. I'm looking on downmixing after your suggestion. I can get your suggestion on Sample type converting, but I will have to do more researching on what I have to d. On libspeex, which source files did you specifically work on.
  10. Hi There I am writing a audio program (using C++ and OpenAL), and I want to convert my PCM and format data on the fly (Goung from 44000 to 22000, or two channels to one, 16 bit to 8 bit, etc). Either upsampling or downsampling the audio. I like the function SDL_ConvertAudio, but I don't use SDL. Does anyboy know if there are algorighms, papers or libraries available for me to look at and give me an idea on how to approach this. Has anybdy had any experience with using PortAudio library. Regards
  11. Quote:Original post by simono but JS development is free and flash developer costs.. how much? If you use Adobe Flex SDK as the main codebase and use FlashDevelop (Windows only) as the IDE, which you can code, compile, debug and build your Flash application without the need for the full Adobe Flash suite for FREE. As long as you are happy to code everything, you cannot go wrong with both tools. HTML5 is a great technology (especailly when WebGL is fully implemented), but it is at its infancy. And not all game players will be warm with HTML5+javascript, as they are so used to playing Flash games. Remember think like an typical non-technical game developer. Are they really going to break their sweat to update to the latest web browser (in some cases beta). I have to admit, using the Free Flash tools i mentioned with Papervision3D and Jiglibflash is a good start, as I enjoy writing games in these technologies. I am also starting a HTML5+javascript project. I tried some case studies, and some browsers (firefox, safari, chrome, opera) have differing qualities in render. Some browsers render faster than others, so writing games in HTML5+JS is a shot in the dark at this current stage. Warning as well, JQuery is excellent for nice interfaces, but DONT try it to build games, it is so slow and cumbersome in performance, as remember it is another abstraction layer, which will slow down, or even crash your game if you go over-ambitious.
  12. OpenGL

    This article could give you a few suggestions on how to do api-independent selection Click Here!
  13. Quote:Original post by Hodgman Quote:Original post by WillPash All my models are loaded within this thread and I make sure its locked inside a mutex within the loading thread, once the loading is completed the real problem begins.What do you mean exactly when you say "it's locked inside a mutex"? Quote:As all the rendering and vertex/index/pixel buffer processing is in the main thread (OpenGL), passing the data requires me to create a lock which waits for the mutex from the loading thread using a condition variable.You can use a mutex to protect a queue (so only one thread can access the queue at a time). When the loading thread has done some work, it can simply put a pointer to the loaded data into this queue (load, lock, push, unlock). Every frame, the rendering thread can pop the entire contents of the queue and do the buffer processing work (lock, pop, unlock, process). The mutex should only be locked for the smallest amount of time possible -- it doesn't need to be locked during the actual processing, only during the usage of the queue. This "upload" (from one thread to the other) really shouldn't pause your program, all you're doing is passing ownership over a piece of data, which is as simple as pushing/popping pointers in a queue. Sorry for not being 100% specific, as I've only picked up multithreading recently... When I mean "it's locked inside a mutex", is that when I load data from a file, the Load() function is running in a queue in the Loading Thread. So for example if I'm running the Load() function I use boost::unique_lock inside the function to lock the data which the mutex is using. As you mentioned, I use the lock as quick as I can. For example rough algorithm to load the data which will run in the loading thread...bool Model::Load() { boost::unique_lock<boost::mutex> lock(loading_mutex); lock.lock(); //loading data here e.g reading model coordinates,etc lock.unlock(); loading_variable.notify_one(); hasLoaded=true; return hasLoaded; } Now after after loading the data, the main thread currently runs this function, which is where the data is passed through to the VBO... Again a simplified version of what i have done.. This function is in the main thread...bool Render()// This function is kept inside a render loop { if(!loading_complete) { boost::unique_lock<boost::mutex> lock(loading_mutex); loading_variable.wait(lock); if(model->hasLoaded) { if(!GenerateVBOData(model)) //WHERE DATA IS PASSED INTO THE VBO { loading_complete = false; } else { loading_complete = true; } } lock.unlock(); } return loading_complete; } Where the loading_variable.wait() is executed, it freezes the program. [Edited by - WillPash on December 9, 2009 10:34:30 PM]
  14. Quote:Original post by Erik Rufelt Quote: My least favourable solution would be to create a rendering thread, but that would be very advantageous for one major reason, when i want to upload the pixel/vertex data inside a VBO/PBO, it will not compromise the main thread's performance. I wonder that even though the main thread is unaffected, will it freeze render animation whilst the render thread is waiting for the object to be available from the loading thread. Do you mean uploading data to the VBO in parallel with the rendering, in a different thread? As a context can only be current on one thread at once, this requires that you create a second context which shares the VBO. Yes preferably uploading the data from one thread to another. Sorry I was considering whilst creating a dedicated render thread, uploading the data from the loading thread to the render thread. I want to keep the render design simple, thats why I mentioned that I dont want to create more contextes than the one in the render thread. Im wondering which approach i should take. I mentioned earlier I dont want to create more than one render context inside the whole application. I would rather prefer to render inside the main thread, but as I mentioned, it freezes whilst the mutex lock waits from the loading thread. Could I upload the data from the loading thread to the VBO in the main thread without the freeze, or should I just concentrate creating a render thread independent from the main thread which will upload the data.
  15. Hi At the moment I am writing a program, which i've just completed the first phase of a multithread engine (which I use Boost::Threads, and it works well), which at this time, there are three threads, one the main thread, with another which streams sound, and another which does the asset loading in the background. I'm currently in a dilemma, which brings new challenges. At the moment, the loading thread works well as it does all the data loading/processing (eg model loading, texture bitmap loading,etc), while the game is running, which was the main priority. All my models are loaded within this thread and I make sure its locked inside a mutex within the loading thread, once the loading is completed the real problem begins. As all the rendering and vertex/index/pixel buffer processing is in the main thread (OpenGL), passing the data requires me to create a lock which waits for the mutex from the loading thread using a condition variable. This is problematic, as this makes the program freeze whilst the lock waits for the data to be uploaded into a VBO/PBO/IBO. In the main thread, I have created a message passing technique which passes through a queue stack, which runs inside the loading thread. That runs well. I am wondering, what would you suggest? Would you create a dedicated rendering thread, which allows all rendering only in this one exclusive thread separate from the main thread. Or is there other ways to preserve the render inside the main thread. As it is in OpenGL (I'm keeping it in OpenGL 2.1 as I'm working on a OGL 3.2 renderer once I've completed the threading issues!), I dont want to create two GL contextes inside the application (one for each thread!). My least favourable solution would be to create a rendering thread, but that would be very advantageous for one major reason, when i want to upload the pixel/vertex data inside a VBO/PBO, it will not compromise the main thread's performance. I wonder that even though the main thread is unaffected, will it freeze render animation whilst the render thread is waiting for the object to be available from the loading thread. Has anybody had the same experiences, and what suggestions do you have... Regards