• Content count

  • Joined

  • Last visited

Community Reputation

45181 Excellent

About frob

  • Rank
    Moderator - Mobile & Console Development

Personal Information

  1. Production in the AAA scene

    Also note that you are talking about massive projects. AAA games these days are hitting 9-figure costs. "Big" games are hitting $50M and more. It is sometimes easier to forget about that. Today's AAA project's total cost is becoming more easily measured as a fraction of billions rather than millions of dollars. While there are many steps that are common, there is much that is unique and different about each project. Much like other enormous projects there are similarities between projects but none are identical. Creating enormous skyscrapers or airports or major buildings have many steps in common, but each has unique building schedules and procedures. Building a large road network or rail infrastructure has many steps in common with similar projects, but each is quite unique. Individual teams have common elements that they do every day, as described. Many of those are common between everything; teams who create code, teams who create models, teams who create animations, teams who create object designs. But the questions regarding broad schedules and executive tasks over the entire projects, those elements are quite unique to each. The biggest publishers have somewhat refined their processes, but they mostly only bear superficial similarities at that level.
  2. MUDs also enabled mix through shared actions. As you write the resources were limited, but you could form campaigns and groups and parties who traveled out together. While each could be their own character type already, further specializations could be possible. You could have three different fighters in a group but each with different sub-specialties. One common factor was limiting inventories to the alphabet letters. You get 26 things, or if case is considered, 52 things. Some give an additional slot for money (the $ character) and there were also containers that could boost your number of distinct items, but the types were limited. Another was weight, if you carried around a fortune in cash you will be burdened by weight; if you carry heavy armor and heavy weapons you will be burdened by heavier weight; if you carry heavy spellbooks and you will be too burdened to cast spells. So include in your party a few people willing to be mildly armored to serve as pack mules, or get some pack mule MPCs while in town. There are many great MUDs out there still today, I strongly recommend spending time on them. You may be pleasantly surprised with what you find.
  3. My personal opinion is complete indifference about TTS. As I wrote above it depends entirely on the game. Some games with enormous budgets and high-end designs require voice acting that truly does need professional voice actors, speech coaches, and high-end recording studios. Other games can use -- and already use -- rudimentary audio tables for TTS that fits their game design wonderfully. Naturally the course of software is that it offers more options, higher audio fidelity, and more choices for encoding and use, but that is not an issue of the tech being suitable for gaming in general. To me the actual issue is the cost of a tech solution versus the cost and the (potentially enormous) benefits of the customized voice acting. If you've got the budget to create a game worth tens of thousands of lines of voice acting, or even hundreds of thousands of lines of voice acting, then you've got a budget to use a wide range of voice synthesis systems. At that point you can study what is out there, the costs involved, the benefits of the actual actors, and decide based on the details of the game itself. I already gave the example of Animal Crossing that has been using very simple TTS for nearly two decades with great appeal. For another example, when I worked on Tiger Woods golf there was an enormous corpus of audio from the announcers, carefully edited so it could be pieced together based on any situation. There could be comments about the distances, the lie of the ball, the quality of the shot, the wind and other environmental factors, and much more. The benefit of having specific well-known individuals far outweighed the costs. Even if we could have used a high end TTS system that made realistic tones and inflections it would have been a terrible mix. On The Sims series we had a wide range of audio. We had Simlish clips put together by real humans speaking nonsense syllables, but these could have been strung together by anybody and may have been a good fit for some TTS systems today. However, since the middle of the original Sims 1 series they have brought in big-name musicians to record their own music in Simlish. Bringing in Katy Perry, Lily Allen, Depeche Mode, Annaca, and other singers is not a choice about the quality of audio technology, but about the singers themselves. Bringing in the big-name singer is far more valuable to the game than any TTS system would be. In the Littlest PetShop series series we used a system similar to what Animal Crossing used. Players commented on how they loved it, it gave a great style to the game that a Simlish-style speech engine could not have used. These depend entirely on the game, not the quality of the TTS system. Some games have more than enough with yesterday's technology. Some games can use today's technology. And some games would not accept the TTS technology no matter how advanced it became, because the voice actors themselves are necessary. It is all about the games, not the tech.
  4. I don't know of any game that does that, for several reasons. First off, games don't actually cover that much area. Game worlds are substantially smaller than the world around us. WoW is around 60 square miles of actual content. Dragon Age 3 and Skyrim were both about 20 square miles of content. I'm not aware of other mainstream games that have more actual content. GTA5 is the still the biggest mainstream game area with about 100 miles (so in the 5000-8000 square mile range) yet mostly cookie-cutter buildings plus vacant areas. The actual modeled content covered under roughly 10 square miles divided into many small zones. Enormous worlds are difficult to fill with interesting content. If you are thinking about multiplayer games, population is also an issue. If you've got 27 million square kilometers and want people to interact with each other you'll need to cluster them together tightly and still be mostly vacant. Even if you had 27 million players spread evenly that means one person per square kilometer. Being a kilometer away from your nearest neighbor doesn't lend itself to interactions, an 27 million players is hard to come by. For reference, WoW hit 12 million active subscribers at its peak. Even if you decide to build up a giant world like those games, you still are unlikely to need a system like HPA* (Hierarchical Pathfinding A*). In the large games they build out by zone, and have each zone connect smoothly with each other. Generally the games are built so pathfinding of in-game objects stays within a small area within a zone. Players can travel between zones, but usually only through designated areas. Those areas follow a hierarchical system, but there are normally very few transition points so the connectivity graph between zones is extremely simple. Instead of a more complex HPA* system, the games typically use A* within the zone, and for inter-zone travel use a pathfinder on a larger (one, not hierarchical) graph that is carefully built by designers. The map designers designate a single point for each zone transition. So the inter-zone pathfinding might say to travel to zone 4, zone 19, zone 43, zone 76. The player would use a lookup table to find the transition point between zone 4 and zone 19 and route to it. Then after traveling there, they'd find the transition point from zone 19 to zone 43 and route to it. Repeat for the transition point from 43 to 76, and finally from that point to the final destination. And if you're looking for purposes other than games, I imagine there are better systems like those used by navigation programs. But they also probably rely on hand-edited transition points by the people who build the maps.
  5. Different systems support different things. Various tools from the day supported different things. The better engines supported fully-designed, partially-designed, and fully randomized areas. Fully designed areas were carefully mapped out. Partially designed areas had regions you would carefully map out, and others you could leave as open to fill out procedurally. Then you could also have towers with rooms and zones that were fully procedural. The fact that you mentioned Roguelike in your description generally implies it is nearly all rooms and mazes. Those are the easiest to automatically generate. Most Roguelike worlds are randomized levels of rooms and passageways, with small areas defined as special rooms, and occasionally as special levels. A special area may have wide areas of pre-defined stuff yet also have wide areas of procedurally generated stuff. There are (and were) many MUD and MUSH worlds that work that way. Hundreds of players in the same room rarely means hundreds of people in the same small area of the dungeon at once, they don't get too crowded.
  6. I think you just described the MUD and MUSH world. Some have been running for decades with hundreds of players online at any time, such as this one. I've heard compelling arguments that the MMORPG games of today are little more than highly graphical MUDs.
  7. Some games have used TTS for quite some time. It isn't fancy, but consider how Animal Crossing has done that for more than a decade. The text doesn't sound like professional voice acting, but when you've played for a while you can understand every utterance. There are many games where TTS is thematically appropriate. Games set in computerized worlds would be a great natural fit. Also less natural, but many text-based games have used it for years, particularly with vision-impaired players. So I think there is an item 0 on your list, the context of the synthesized speech.
  8. Be careful with what you described. The only reason the A* optimization works is because of the geographic spatial format of the map matches the heuristic function. The heuristic provides a sort, allowing the first match to be the best match. The more the nodes drift away from the actual map distances, the more the optimization breaks down. With a regular grid where cells represent motions exactly, A* works great because the heuristic is ideal. You can always estimate the amount left to reach the target by using the map distance. With nodes representing areas, the heuristic is more difficult because it no longer perfectly represents the sorting criteria. When the heuristic breaks down so it no longer represents the approximate best remaining solution, then you need to revert back to plain old Dijkstra's shortest pairwise path algorithm.
  9. Leaving a company at a critical moment

    For the ethics component, I don't think the things you mentioned are a concern. In my view, workers should be just as loyal to the companies as the companies are loyal to the workers. 50 years ago corporate loyalty meant pension plans for life, insurance for life, and contractually guaranteed partial plans if you were laid off, and workers were generally "company men", loyal for life. 30 years ago that meant companies giving heavy investments in retirement plans and good benefits, but nothing permanent with an expectation of a few months or perhaps a few weeks notice from either side. These days company loyalty means I'm loyal all the way up through payday, and I know I may be called into a layoff meeting because the corporate earnings call is next week. Why were you offered another job? Were you looking for another job? Did they headhunt you? If you were actively looking for an exit strategy anyway then take it. Are you happy there? If you find joy in your work you may discover the new workplace does not fill the same needs, leaving you better paid but unfulfilled. On the other side, if you aren't happy with the work you've got then a change may be good. The fact that you don't think your current company will be there in a year is a major issue. While it can sometimes pay to be the last person in the office, usually it means getting burned. Having a good job lined up means you don't end up unemployed with an emergency job search, so that's a good reason by itself. The extra 12K per year is good, and depending on your location on the globe that can be significant. But I'd wonder why the higher pay and better benefits? Is your current company that much below market? Have they not given promotions up at market rate? Is the new company more desperate? But be careful, you could be walking into a bad situation where they're looking for an emergency person to do a Herculean task. Go in with your eyes open looking for issues. Sometimes good deals and offers are made out of desperation instead of the much better reason of the company actively growing and looking for talent. If generally want to stay leave your company and are otherwise happy there, you might also consider another tactic. Without mentioning the job offer, tactfully ask your boss for a raise similar to what you expect at the other job, plus some extra as a buffer in case the company closes up within a year. Given wages and benefits, that may be 25K, or possibly higher, plus the additional time off. Be extremely careful about approaching it, the same as you would any other raise or increase. Do it in the morning, with mild trepidation, explain that a new project is coming up, you've got a new baby in the home, your wife is through maternity coverage, and you feel it would be fair given your needs, your past contributions, and your expected role on the new project. Make a case you think you're worth that much. Just be careful not to mention the other job, and do not make it to be a threat. Giving in to demands while finding a replacement is a common tactic for companies, they'll dump you when they get the replacement. Let the boss think you have some good reasons for needing significantly more money, not that you're about to bolt. Assuming you want to stay there and your current boss accepts the wage increase, congratulations, you'll be making more and staying where you are happy. If he says no or doesn't accept it well, that's another good reason to accept the new job offer.
  10. C++ precision

    Truncation like that is one way to do it, but most applications don't want that. For an example, a value of 123.000001 that has a floating point rounding error beyond the value would be truncated to 123.00. However, a value of 122.9999999 that has a rounding error below the intended value would unexpectedly go to 122.99 instead of the correct 123.00. There are several different rounding modes. The ones typically used in computers (and supported by hardware) are: Round to nearest, ties to even. This is also called "banker's rounding". Round to nearest, ties away from zero. Round up Round down Round to zero, aka truncation. This is the one you're doing. The default mode -- which is also the version humans typically expect -- is the first. The programming language provides string manipulation functions that correctly round the value. The printf family, the stream family precision functions, and Boost's string manipulation families all have the code to correctly round the result. The first two are part of the language directly, there is no extra cost to use them. The Boost version is an extremely common library I've had available in most professional projects. They are already present and included in the code. Use the tools that are available to you.
  11. As far as I can see, there is nothing specific on the matter. It looks like the standard defines several critical aspects, such a the numeric base (either 2 or 10) the sign/coefficient/quotient requirements, ranges, and so forth. Looks like you've got that covered. Section 5.3 covers the conversion, but doesn't provide a specific process. The conversion merely needs to happen and be properly rounded if narrower, exactly precise if wider. Nothing specific about denormalized numbers so I presume the rules are the same. I'm not exactly sure about your example values since an implementation MAY use reserved exponents used for +/- INF, SNAN/QNAN, +/- zero, and denormalized values, using the two lowest values for the markers. That's why 8-bit coefficients have a range of -126 to +127 instead of the more typical -128 to +127, 11-bit coefficients range from -1022 to +1023 instead of the more typical -1024 to +1023. Implementations are allowed to extend beyond that because the standard is careful to define the represented values rather than the encoding. In your example you give a 16-bit float with a 5 bit coefficient, but I think the representation allows for e-05 instead of e-08 since the two lowest values are reserved (excluding denormals). The 7-bit coefficient would have values -64 and -63 reserved so range from -62 to +63, meaning the lowest number would be e-19 rather than e-28 (excluding denormals). In that regard I agree with your assessments. Denormalized numbers aren't treated differently other than a special value for the coefficient. For a denormalized number I'd expect the mantissa to be extended or reduced in the same manner, rounding the mantissa if narrower, extending with zeros if wider.
  12. Registering your own copyright won't help with that. For that concern you need to talk with an actual lawyer, and do research on things like legal clearance, legal risk tolerance, and documentation trails that are legally acceptable. Everybody's situation is different. Laws vary by location so advice you get on the Internet probably has differences with the law in your spot on the globe. Those are why you need an actual human lawyer who understands your actual situation and your actual laws, your actual needs and concerns. Advice from strangers on the internet, even lawyers on the internet, don't know all those details without in-depth discussions.
  13. Why A.I is impossible

    The biggest problem here comes down to definitions. What is an AI? What does it mean to have an AI that is learning, or that is self aware? What is a "real" AI? Turing's original question was "can machines think?", and his interpretation was that if a human could successfully imitate a human. Even though his question asked one thing, the test he proposed was if the machine could convince an interrogator that it was human. Later papers he asked similar questions about if a machine could demonstrate intelligent behavior. The original Turing Test has been passed and exceeded many times over. People create newer and bigger and better tests. Each new test tends to be: the things we have today are not AI, but the promise of the future is an AI. As for consciousness and awareness, that's a very tricky one. I had one presenter on the topic present it this way: Let's not look at today. Let's look at a machine built in the future. Imagine a machine of the future that is built to look exactly like a human, designed to move exactly like a particular human. The machine has input that mimics human senses in all ways, not just smell and touch and vision, but input that responds as hunger and thirst and pain and space and motion and everything else. Imagine the AI for the machine has been trained specifically based on that human's entire life experiences. The AI can recall all the things the human can recall, it has imprints but cannot recall the things the human has forgotten. In all measurable ways the AI and the human are identical. Given identical stimuli the AI would behave identically to the human across the human's lifetime up until that time. When the experiment begins the AI can continue to learn from new experiences and modify its behavior in a fashion similar to actual humans. The two are placed side by side and the experiment begins. Up until that instant they are effectively the same person. As far as we can externally observe, the machine believes itself to be that human standing next to it. When that experiment begins, anyone questioning or observing the two would say they are identical. For a time they behave nearly identically, with the first divergence being the moment they stand next to each other. The two will drift apart as their inputs change and time passes. Since the machine behaves in all ways the same as the human would, is the AI alive, or is it a machine, is it both, is it something else? Is that machine actually thinking, or is it simulating the process of thinking, and is there a difference between the two? Since it seems to believe it is conscious and believes it is self aware, is it actually self aware and conscious? On the topic of souls, does the machine have a soul, why or why not? Those definitions about what it means to be human (or not) become very difficult to answer. Going further, Turing's original topics were to see if an AI could perform as a human. But later people asked if an AI should be exactly as good as humans to be considered intelligent. Does that include human failings? Personally I want a self driving car's AI to be far better than humans. I want a medical AI to far outstrip any physician today, being an expert on all fields. I expect that incorrect judgments will still be made because we cannot predict all things perfectly, but I want most AI systems to be far better than humans would ever be. In games, I want my AI to provide an entertaining experience, but I want it to perform worse than humans. I absolutely do not want an AI that always makes perfect headshots, always moves to precisely the correct locations, always responds with the mathematically ideal way. As the game begins I expect the AI to be very forgiving so the game is approachable. As the game progresses it increases in difficulty. After time I expect the AI to provide a difficult challenge and (depending on the game) defeat me occasionally, but I also expect to be able to win the game and have a satisfying experience in the process. So much depends on the definitions and the context. What makes a good AI in one situation is a terrible AI in another situation. Calling something a machine or an algorithm versus calling it an intelligence is a very difficult line to draw, and in some viewpoints that line does not exist at all.
  14. You talk to a lawyer because you've created a bit of a mess. In the mean time while you wait to talk to a lawyer, keep documentation of where you got every single asset. Keep documentation of the license you acquired it under, the website and URLs or people you obtained it from, the original author listed in the web site, and copies of the license. It is sadly common for people to get content under one license and then re-release it under a different license. Many photographs and designs that are licensed end up getting re-distributed where someone claims they are freely available. Having a documentation chain that shows you obtained the file from a specific source under a specific license can help you avoid costly problems later. If the file was owned by someone else and unlawfully redistributed the license trail shows you still acted in good faith, then you get to negotiate new terms with the proper owner. Be wary of sources that claim to be put into the public domain. Some "anti-copyright" statements are not legally binding. Others correctly release economic and property rights but fail to release rights like moral rights for attribution, integrity, or author's reputation, and more. While the person releasing the content is unlikely to sue, there are legal rights that are tricky to revoke. They can be an issue if someone wants to buy/license your game outright or buy your company. If you don't have documentation that you have the proper rights, you're asking for trouble if you use them. Keep them documented. As for the act of registering a copyright, that part is easy. Go to, fill out some forms, include the first 25 and last 25 pages (usually that means the file with main() and another random file), and pay the $35 fee. It's $55 if certain other conditions apply. Wait a few months, get a certificate. File the certificate in a drawer somewhere. Your copyright is registered. Enforcing your registered copyright is much more difficult. That requires going through the courts, which is expensive and time consuming, winning the battle or negotiating a settlement, and extracting money which often requires collections services.
  15. I think a high number of applicants points the other direction. They're applying for jobs. That could mean the people are struggling to find jobs, or are having trouble keeping their jobs. It may mean they're dissatisfied with something related to the job, such as lower wages or difficulty getting promoted. People who are comfortable in their careers (getting responsibilities and wages they prefer) tend to stay in the jobs as long as they are able.