• Content count

  • Joined

  • Last visited

Community Reputation

1154 Excellent

About nfries88

  • Rank
    Advanced Member
  1. The only Windows clone being actively developed is ReactOS, and it's unstable as hell. Windows is still the de facto standard OS for PC. This is like telling hardware guys back in the '80s that developing an IBM clone was a waste of time. As braindigitalis said, you need an awful lot of work to get to the point of displaying graphics. Even writing your own 2D framebuffer drawing code is a considerable challenge, but you also need to write your own graphics driver.
  2. Is it real?

    First, you have to learn programming. #1 takes about 4 years. And how do you learn? Through practicing? But to practice you firstly need to know the syntax. And to know the syntax you have to read a book usually of 1000 pages, where i will just assume, you need somewhere like 300 pages for gamedev, which are scattered through the book.   Tutorials on the web are a good place to start if you need to self-teach.
  3. Time - the most important factor.

    I primarily work on 2D and intentionally retro-styled 3D games. I develop on a PC I bought for $150 in 2013. I test for low-end performance on a mid-range PC from 2005. In a few years I'll probably retire the older PC and use my current machine for low-end performance testing. I've never paid for developer tools, either. Spending a small fortune on development PCs and software is a waste of funds better spent on paying someone for work (once you get to that point) Game development takes an incredibly long time to learn to do well. Individual games take a long time even for the experienced.
  4. If you want cross-platform internationalization, use UTF-8. You can convert UTF-8 to Windows wide strings (and the reverse) using MultiByteToWideChar (WideCharToMultiByte) with CP_UTF8 for use with Win32 APIs. If you're only developing for Windows, with no plan for porting, just use Windows wide strings (UTF-16). If you're not internationalizing your project, all this talk is pretty pointless; just enforce your native character encoding for internal strings, try to use the ANSI versions of Win32 functions, and if there is no ANSI version just tack L in front of the necessary string literals (IE L"I really hate that windows doesn't make ANSI versions of some new functions."). :)
  5. Most celestial bodies orbit their star(s)/galaxy/etc in a disk. This means that from a distance, a galaxy or star system would appear to be a 2-dimensional object. Even inside a galaxy or star system, they're so relatively 2 dimensional that a quadtree probably makes more sense than an octree. Since objects with fixed orbits on the disk should rarely collide, you only need to worry about objects that have been shifted from their orbit (IE an asteroid the player pulled with their ship) and objects with orbits that cross other orbits (IE comets), maybe this is a better case to optimize for as far as collision goes. Also, you'll need to adaptively load/unload nodes as the player approaches/leaves them. The number of stars in a galaxy, and the number of objects in a star system, it would be impossible to keep them all in memory. You need to keep as few as possible in memory. Ideally you'd use a PRNG to generate them, and then they can be reliably stored as just the PRNG seed. Then to show the node at a great distance (size <= 1px), you just need a cached hue and absolute magnitude. About Oort clouds, Kuiper Belts and Astroid Belts - I'd generate them with a PRNG each time the player approaches, separate from the rest of the system. Too big and too much stuff to keep loaded when the player's nowhere near them. You actually have several "space systems". You don't need to account for all of them for every object. Ignoring the player for a second: 1) Satellites (moons, orbiting ships, etc) only need to worry about their location relative to their planet. This can probably be on a 100km scale. Justification: accuracy of IEEE single precision ("float") is 7 digits. Mean distance ISS to earth is 400km = 4.0; mean distance moon to earth is 370,300km = 3703.0; mean distance Callisto to Jupiter = 1,833,000km = 18330.0 [Jupiter has satellites 10x more distant than Callisto, but they're all less than 200km diameter and boring]. This leaves a couple accurate digits behind the decimal point too. 2) Planets and inner solar system interplanetary objects only need to worry about their location relative to their star(s). This can probably be on a .1AU scale. Justification: same as above. Mean distance Mercury to Sun is .39AU = 3.9. Mean distance from Neptune to sun is 30.1 AU = 301.0. Fits very well in single precision. 3) Oort cloud constrained objects only need to worry about their location relative to local objects. This is probably best accomplished using a bounded volume heirarchy, where the bottom-level bounded volume contains some maximum of N objects, and you only compare each of those N objects against objects in the same bounds. 4) Kuiper belt constrained objects only need to worry about local objects. They also need to keep track of their orbit, but this can be a single value (eg in Radians). 5) Oort cloud and kuiper belt objects that enter the inner solar system during their orbits need to worry about inner solar system objects *ONLY* when they're in the inner solar system. There's numerous ways to implement this behavior. 6) If you want high def views of the planets surface from low orbit/high altitude, objects on the planet might also need to keep track of their latitude and longitude, OR you'll need to rig up some clever way to project surface geometry on a sphere. 7) On the galactic scale, you can probably get away with a 10 parsec scale (milky way is 30,000parsecs across = 3000.0; the nearest star to the sun is Proxima Centary, 1.3parsec = 0.13). Adding in the player, you ALSO need to translate every object visible to the player into "player space" for rendering, culling, etc. Player space while in a ship will probably have a scale of ~10m (the USS Enterprise NC-1701 from the original Star Trek was supposedly 289 meters long=28.9, the T-65B X-wing from the original Star Wars trilogy was 12.5 meters long = 1.25). Of course I'm assuming here you're going for a hard sci-fi game. If you're looking for mass appeal, using realistic coordinates is counter productive: nobody wants lightyears of nothingness before they hit their next star. So instead, you can probably use double precision and a 10km scale for a solar system which only has a diameter slightly larger than Jupiter (140,000km = 14000.0). For interstellar coordinates, you could just use the same scale, and add an int64_t in front of it (maximum size of galaxy = 9.2*10^18 jupiters), and for intergalactic coordinates just use a single int32 representing n*maximum_galaxy_size = n*9.2*10^18 jupiters = already crazy huge.
  6.   15% of share (a lot more if we speaking about gamers) is not bad at all if we consider that Windows 10 was released less than a year ago.   When Microsoft decided to abandon a technolgy, usually it continues to work without any issue on future versions of Windows. Keep in mind that UWP on C++\CX and WinRT, are actually all based on COM and Win32. This mean you can target UWP with "pure" C++ if you want, however this need actually a lot of work and you can also use the WRL template library to mitigate that. On Windows platform Win32 is like the CRT: they are both the meaning of life for the Windows platform itself, you cannot kill Win32 or the CRT without killing the entire Windows platform.   A guy called Kenny Kerr started writing a pure C++ library called "Modern" to target WinRT without C++\CX and to replace WRL. It also joined later Microsoft, so hopefully Microsoft will release in the future a complete version of "Modern" to target WINRT and create UWP application using pure C++ without the proprietary component extension (C++\CX) or the usage of WRL. A library like that would solve all kind of issues regarding targeting both UWP and Win32 desktop application.   15% - you're right, it's not bad, it was just a point. And it's likely to go up quite quickly. I hear it's a pretty solid OS, but I'm sticking with Win7 for now. You're also right about marketshare among gamers probably being higher - but that's only because it's the version of Windows that's already installed on their gaming rig (I imagine DirectX 12 might be another reason. Was there some technical reason for Microsoft not backporting DX12 to Windows 8 and 7, or is this just an "upgrade already" thing?) As for Microsoft abandoned technology continuing to function properly on new versions of the OS - try playing an old game using DirectDraw on Windows 8 or 10. Heck, they messed with DWM in Vista and 7.
  7. Where to learn 2D Math for game dev

    derivatives can be used to calculate surface normals from a displacement map. I suppose integrals could be used to do the reverse. You've almost certainly used Euler's method in the form of velocity += (acceleration * time); position += (velocity * time); etc. It's a method for solving differential equations quickly. I've used Taylor expansions to implement extremely fast trig function approximations. Taylor expansions represent functions as a series of infinite sums (but in trig functions, only the first few are of significance for 0 < x < pi/2) calculated from its derivatives. As for the OP, any math site should be able to teach you the concepts. For 2D games, you only need trig and geometry, although basic linear algebra wouldn't hurt.
  8. Is making game with c possible?

    I use C quite a bit, personally. It doesn't really provide much benefit over C++. I like it because not having classes handy can push me to think about different ways to design code. I don't think I've figured out anything novel yet, though. There's only two reasons why I would recommend anyone else use C over C++: 1) You don't want to, or can't, link to the normal libraries. 2) You're considering working with a C purist. The second reason might come up in game development. There are some C purists in the hobbyist crowd. Usually their reasons for being C purists are pretty pointless, but in my experience they're usually crazy good and worth working with just to learn a thing or two. The first reason is not likely to come up in game development *anymore*. Even cheap low end computers have enough hard drive space and memory to make saving 1-2mb fairly pointless (this was not the case 15 years ago). The first reason *might* come up if you're doing other sorts of programming. For example, the C runtime isn't available in an OS kernel, or on a custom OS. The C runtime might not be available in certain embedded environments. If you're writing web services using CGI (common gateway interface), cutting out some of the pre-main work might be worth it. Like Norman, a lot of my code winds up looking like C code even when I'm programming in C++. The "C way" of doing things is usually (but not always) more efficient, but you can always do the "C way" in C++, and still get all the advantages of C++.
  9. It depends - are you willing to lose a significant portion of your potential customer base by using a newer technology (UWP requires Windows 10 - less than 15% of the internet marketshare for PCs)? Microsoft also tends to create abandon rarely used technology after a few years. If UWP doesn't catch on, in 5 years it might be worthless knowledge. But they can't really abandon Win32 - it's core to their platform.
  10. I Have a Problem in "char *" & "LPCWSTR"

    Most Win32 functions that take a string argument actually have two different versions for two different string types - ANSI strings and WIDE strings. ANSI strings use some sort of multi-byte encoding (or just plain old ASCII) and resolve to char*. WIDE strings use UTF-16 encoding and resolve to wchar_t *. For example, there is no actual MessageBox function. It's actually a trick that the Windows headers play - when there are ANSI and WIDE versions of a function, the windows headers automatically choose the right function for MessageBox to resolve to, based on your project settings. It looks something like this: #ifdef _UNICODE #define MessageBox MessageBoxW #else #define MessageBox MessageBoxA #endif Usually I just use the ANSI version, unless I have reason to believe I'll translate my project into a language other than English. Working with WIDE strings is more work. :)  
  11. Website / forum development - you're a web developer? In that case, you can probably learn to contribute to the development, web development requires some degree of skill with either coding or using tools. Of course you mentioned "posting, moderating" -- that's not a contribution to the game or company in any significant sense, and any of your team can do it just as well. If that's all you meant by "development", doesn't count. Business Transactions and Finance - Not much work to do there if you don't have money. But if you're saying that you're an actual accountant, then that's something you can actually contribute to the company later on, and might actually be worth some share in the company's profits. Marketing / Press Releases - not much work to do there until the game is ready to ship Setting up for Funding Push - be more specific. Are you a skilled orator? Do you know many VCs personally? Does your day job require giving presentations on a regular basis? Do you just look really damn good in a suit and tie? What makes you better suited to this work than the typical game developer? Anything?     Well, I believe that you think you do. And perhaps you actually do. But you don't have the scope to actually know that you do. If this is core to your current strategy, I wouldn't even bother with the game right now - I would find an expert in developing security-related software willing to sign a NDA and work a few hours a week on that in exchange for a share in the company you'll create. If it's as simple as you believe, there shouldn't be much work involved compared to developing an entire game; if it's as effective as you believe, the potential rewards will be much larger than you could expect from developing a single game. It makes much more sense to focus on this than the game.     There's your pitch. You want to make a game that not only fills the horror/survival niche, but also fits the needs of four distinct types of gamers. We can get the gist of your game concept from the names of games you're referencing (even without having played them) through pop-culture lenses. But the specifics of how this game will be different from any other game in the genre is how you're going to get funding, developers, etc for the game. This is clearly something you care a lot about, and have done some research on. I realize that this isn't a recruitment post, but give us the details - it might actually help us recommend a specific game engine, it might get some of us interested in the project, etc.     "People don't know what they want until you show it to them" - Steve Jobs I understand that meeting the wants of your players is important. But you absolutely should not change direction based on input before the game has actually been played. Compromising your initial vision to satisfy a potential customer is foolish. So you already know what customers want and can include it in your plans before development even begins. This makes me wonder why you talked about splitting the company between yourself and your programmers, without even a mention of content creators though - obviously content is very important to players in this genre, this makes getting content creators very important.
  12. 1) If you're not a developer, and you don't have startup capital to pay any livable wage, what do you bring to the table? And not the BS about industry experience and customer base knowledge - I mean actual work that you can do. 2) If you're not paying, and you're not developing, and you're not a lawyer/accountant/etc who can manage some major aspect of the potential business by yourself, you're going to have to accept lower equity than any developer -- you're essentially getting equity for nothing, so it's still a good deal for you. Capitalists get away with making money from others' labor because they have the capital to pay wages while waiting on the returns from that labor. It's a matter of material convenience for the laborers - steady, consistent pay. That's the only way that arrangement works in practice. 3) You're asking people to spend considerable time (probably thousands of hours) on this idea of yours, for no pay, but you want 100% control? You're never going to get anyone talented to stick around with that policy. 4) About the 50hr guy and 5000hr guy - there's no accurate way to quantify time spent. If you ask the developers to log it; some will lie, otherwise will neglect to log time they spent just thinking about something. If you try to count lines; you lose time spent testing, chasing bugs, profiling for optimization, etc - all necessary, often difficult, sometimes requiring advanced knowledge - and all impossible to guess by anyone but the developer themselves. If you try to factor in communication by formal lines (IRC channel, meetings, we) you might miss a quiet, diligent worker and reward a gab. 5) If I take a day off from work to implement some feature in one sitting, I may only be investing 8 hours of work more than usual, but I'm also losing 8 hours of immediate pay to do this. How do you propose to handle this type of investment in the form of lost wages?
  13. Apparently this is a common problem with old games using DirectDraw, including Age of Empires and Age of Empires 2, which have sentimental value to me. Perhaps use GDI instead? It should be fast enough.
  14. Best sequencing/format for a game development course?

    Yes. And as a teacher, you should have already known this. You have about 180 days in the school year, and if you're lucky you have them for an hour each day. That's 180 hours to cover the 4 units you're planning, or 45 hours for each unit. That's barely enough time to drill core concepts into their heads and test them on it. This won't leave any time for them to experiment on their own and really [i]learn[/i] the material.     [b]Probably[/b]. At least they'll enjoy it more, which might make it more likely that they'll spend time learning more outside of school, and maybe even after the class is finished.
  15. Best sequencing/format for a game development course?

    Unit 4 is redundant. Use unity or use game maker. They both serve the same purpose, and you'd waste their time (and require more time to prepare yourself) by teaching both. I'm not familiar with Game Maker, but it's almost definitely the least technical of the two, making it something you could get a handle on easier yourself.