Jump to content
  • Advertisement


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by frob

  1. You know what the problem is. Don't mask it by locking the camera. Fix it by not relying on the camera's position, since you can be sure you'll be making even more cameras in the future.
  2. Used to be on the FAQ. The answer is: No. The Robin Hood defense does not work. It does not matter that you don't profit directly. Copyright infringement, trademark infringement, and similar IP violations are still unlawful even though you will never directly make any money from it. Imagine that in other areas "Yes, judge your honor, I robbed the place, but then I immediately gave it all to the homeless and poor, and to starving children, so it is okay. Think of those poor starving orphan children that I fed with stolen goods, so I shouldn't go to jail."
  3. frob

    about GOAP

    A series of nested state machines is a very direct way to implement it, but it isn't required. If you're feeling creative you could come up with other ways to do it. As nested state machines, If you have a goal, your character looks at the tasks it needs to do to accomplish the goal as a series of states and steps. Those can be applied recursively, looking at the steps to achieve a sub-goal, then the steps to achieve that sub-goal. Eventually all the sub-steps will be done and it will have accomplished the goal.
  4. frob

    questions about Utility AI

    Using that name is about 10 years old, but the model is much older. The Sims is a good example of a game that uses it. Every actor has a bunch of motives. You can see about 6 of them like hunger, bladder, energy, and social. When the AI runs, it scans for a list of all the potential interactions. They range from things like "go to work", "play chess", "watch TV", "go to bed", "eat", "call a friend", and similar. Each one looks at the motives and sees how well they can satisfy it, generating a score. When you're not hungry, eating won't satisfy any motives so it gets a very low score. When you are hungry, eating gets a much higher score. When you are dying of starvation food gets an incredibly high score. Taking a shower is normally a very low score, unless your hygine is bad. But taking a shower also has a tremendously high score when you catch fire, since it will put the fire out. All the motives can have their utility score tabulated very rapidly, and the top items are considered by the AI for the next action. More complex utilities can be developed in different games. In city building games, the utility of each building can have many different scores. It may have a score because of the direct effect, and it may have more score because of side effects. Sum them all together than that's the total utility. The choices with the highest utility should then be considered using additional criteria, such as the availability of resources. As an approach, there are basically two: ask the object for a score, or ask how they change motives. In the first you can query the object giving it the list of your needs and than asking a score as a result. It can be a single function that takes a collection and returns a float. Or you can reverse it, asking every object what satisfaction it provides and it returns a collection, then use the resulting collection of motives to compute the score yourself. Which is better depends on your game's plans, if and how you intent do expand your game in the future, the design of your game, what you use for utility functions, and much more.
  5. frob

    Graphics VS Story VS Gameplay

    There must always be gameplay, otherwise it is not a game. Graphics and story without gameplay are called a movie, or a graphic novel, or comics. Games like Mancala and Go have been around for millennia and have neither a compelling story nor graphics. They are two players with dots on the ground competing for stones, marbles, or other tokens. If gameplay is sufficient, then the importance of story and graphics depend on the game itself. Interesting gameplay is enough for Mancala and Go, not enough for today's action brawlers. Tetris is a modern example of this, it has no story, can be played on plain text or terrible graphics, and yet has decades of popularity. There are games with amazing stories and wonderful gameplay that are text-based, no graphics at all. For these games story and gameplay combine in critical ways to make a great game. In that case, graphics are meaningless. There are visually stunning games with so-so gameplay that have no story, but become best-sellers because they mesh well with the graphics. They can be absolutely beautiful but the gameplay core ranges from "red versus blue", to "match the things" to "find the items". In that case, story is meaningless. Then there are components like sound which is critical for many games, there are even audio-only games. Further, networking or multiplayer feeling is critical for others, where graphics and story can be so-so as long as the social aspects are wonderful.
  6. Orthogonal viewpoints mean that when you look out on the world, the viewport remains parallel. You don't see a wider view in the distance and a narrower view nearby, like you see with a camera. Something hidden (occluded) behind another object will not have perspective change so you can see it as it reaches one of the corners, it will remain hidden behind the object. It is most easily seen by always having a square view of the world. Consider the old tile-based games of the SNES era; they stacked tiles and gave the feeling of depth, but as you walked around the world, walking North would pan the items down the screen, you could see the same width of the world in the distance at the top as you could near the bottom of the screen, close to you. Even today in 3D games, some games use it. It works well in top-down games to help preserve a regular screen space. Whether that solves your problem or not we can only speculate, since you didn't share what your problem is.
  7. Edit: Sorry, misunderstood the response. Silence was a user name. Oops. Remember the Raspberry Pi is not a desktop PC, you cannot ignore that it has different hardware. The Raspberry Pi is a powerful device capable of running games designed for the hardware, including 2D and 3D games designed for the hardware. You're not on a 4GHz 64-bit x86 processor, you're on a 900 MHz 32-bit Cortex A7 processor. Some people have built those games. They exist. The better question is: do YOU have the time and skill to develop that kind of game for the device? We don't have the answer to that one.
  8. There are many ways to do it. An observer is one, particularly when all your events go through a central message bus or similar hub. Adding a few function calls at key points of the architecture where commands are processed is another approach. Sending deltas of a large state can work when the game state fits a table or tree format. Turn based games can update every turn. The details about if every game client should know about the entire world is highly dependent on the game you are making. Expansive worlds can't handle it, and games where occlusion or "fog of war" equates to zero knowledge mean cheaters can exploit it. But many game genres expose the entire world and the entire simulation to all participants, consider platformers or platform-combat like Smash Bros, sports games, racing games, and board games where the entire state is known and shared.
  9. There are many game engines that could handle it with very little coding. Construct, GameMaker:Studio, and Game Salad immediately jump to mind for smaller tools, Unity and Unreal can both be free but are substantially larger.
  10. You can design games so that they are always handled the same way. Whenever I review designs at work I frequently remind the team that if a game is single player, that means that TODAY it is single player, but might not be tomorrow. I remind them that a single player game should still be written as a multi-player game, it happens to currently have a player count of one, but designs can change over time.
  11. I think there were no replies because it was suitably addressed already. I often edit my posts in the minutes after posting, perhaps to fix a grammar error or expand on a thought. It gets an edited flag. It isn't a big deal. Sometimes it would be nice to have a short window, like how Reddit gives two minutes before adding the flag, but ultimately it isn't a big thing. Also, the field was not removed on your account. If it was changed, it was removed because of a site software update and the constant flow of tiny adjustments going on in the background workings of the site. Those who maintain the site software (not me) might know why it was changed, or possibly if removing it was a bug they didn't know about. Or maybe it was intentional, I'm not sure. Either way, if you're concerned about the edit reason field, feel free to ask about it instead of just declaring that it was removed.
  12. It isn't about the rep number, it's about how frequently it is brought up. People come in asking how they can integrate a solution that handles terabytes per second for their networking solution that would take a large team multiple work-years to implement, when they're unlikely to ever produce a finished project. They come in asking about "what is the best one", looking at online reviews. Perhaps best for a large business system distributed across cities, but not for small games.
  13. frob

    What is my ideal company (size)?

    Personally I prefer companies that are at least 20 people. No matter the size of the project, you'll still be divided up into teams generally ranging from 5-15 people. Companies smaller about 20 people tend to have stability issues. It is difficult to keep a steady stream of new work, and requires a growth mentality from everybody. Fewer than 10 people tends to have a too-frequent need for absolutely-must-do-it-to-save-the-company extreme work. Feast-or-famine at small companies tends to be common, and time off is difficult. Benefits are usually sparse or non-existent. If you have the option for something nice, take it immediately because it probably won't be there later. In the 30-50 people companies everybody is important, but not typically absolutely critical to success on a daily basis. They are large enough to provide good benefits and time off, but not so large that you are unimportant. There is opportunity to grow personally and grow in the career, and everybody in the company can know your strengths and rely on you while you rely on them. As the company grows to the 50-100 people range it gets harder to know everybody as there tend to be more projects; stability and some benefits are more reliable, but individual relationships and personality start to dwindle. Some people like being a cog in the large machine. Being large means one person's contribution is tiny, so sickness and vacation are statistical noise to the projects. Usually benefits are good and reliable. It allows a kind of freedom because the individual isn't particularly critical, and it is easier to become invisible. When I've been there, I didn't mind the freedom part but hated being invisible and seemingly unimportant. Some people like the tiny company. Being tiny means you feel critically important, and the potential for rewards can be highly rewarding if the structure is right. For well-thought businesses the first round employees are given time-vesting shares in the company to entice them to work through the stress and the difficulties of being a startup. If that's what you prefer it can potentially pay out big, but comes with risks of being broke and a rough work/life balance.
  14. Good to know. Too often that's a place where people make some serious mistakes, investing extended time and effort to plug in an architecture designed for millions of distributed transactions per second when a very simple data store is more than adequate. Very often this type of storage is best pronounced: std::map< std::string, std::string > And if you must back it up with a database, run an upsert on it every few minutes. For a simple server that's good for many gigabytes of information, assuming you're on a 64-bit system like your server probably is.
  15. You talk of multiple servers, and you also talk as though you are a single individual. Pick a solution that fits your actual problem. People pick something that is high performance for a different industry but terrible for games, or that scales to support thousands of machines when they won't ever need it. Consider your game at its most successful, but while still small enough to not hire anybody. How many transactions per second will it need to support? Realistically, for many games the peak rate is a single digit number of tiny transactions per second. Even if the game were to become successful and make enough money to start hiring additional programmers, the peak rate for thousands of users can reach tens of transactions per second. Typically games don't realistically need clusters of servers until they're also large enough to have large teams of developers. When they grow to that point it is easy enough to hire somebody to write that code. If your game is small enough you can't hire people to write and maintain databases, then it is also small enough that you don't really need that technology. And if you're the person hired to add that to a game that is large enough to require such a cluster, you likely don't need that kind of tech until you are reaching a thousand transactions per second or more. If you're in that boat, you'll have time to do a full evaluation of many technologies and probably wouldn't be asking here.
  16. You seem to be missing something critical: How much marketing did you do? Typically in a successful game, the amount invested in marketing is roughly equal to the amount invested in development. There are exceptions (just like there are lottery winners) but if you run like a business with reliable returns, that's the cost. For AAA games and major titles, sometimes there are cases where marketing greatly exceeds development cost. A major annual game may spend $15M on development, $20M on marketing, all to ensure they make a reasonable profit. That is on top of market research to ensure they've got potential customers, to ensure they're creating a game that has a viable customer market, and to ensure the marketing is hitting those correct customers. This article from the archives is 15 years old, but covers the topic relatively well even though some terms have changed. If you want to sell a product you need to have a product that can actually be sold, then you need to market the product effectively to potential customers, and do everything in your power to encourage them to spend money on it. Did you do market research? Since you've invested four years of effort in development, have you invested a similar amount in marketing? Or are you taking the "build it and they will come" approach? (Good luck on that one.) Occasionally somebody happens upon a hit with that method, but they are quite rare. For most people, the odds are better with the lottery than they are with "build it and they will come" game development.
  17. frob

    Moving to Game Programming industry

    Many non-game programmers jump in assuming it is an easy field, but when restated in their terms it takes on a different feel: SLA is typically in nanoseconds for individual tasks. Soft realtime requirements where 15 milliseconds is a soft failure, 32 milliseconds is generally a hard failure. Output is roughly 300 MB/second. Roughly a half million major updates per second, billions of floating point operations per second. Many algorithms are pulled directly from cutting-edge research, advanced mathematics, physics, statistics, and other fields. During the time a database programmer waits for high-performance latency for a single command, a major game typically performs over 20,000 major updates, has completed a quarter billion to half billion floating point operations, and has output several megabytes. Don't apply as a junior developer, because you aren't one. You've spent years doing desktop development in C#. That experience is transferable to tools. Apply to jobs as a tools developer. If you have done work on servers or database processing, that experience is transferable to back-end work and the business side of game processing, like accounts and user profile management. If you've got that experience, apply as a server or back-end developer. There are jobs you can fit, but the professional game industry is relatively small compared to business software, openings are relatively sparse, and there is competition for work. Expect that it will take time to find a job in the industry. Since you are already working you have time to hunt around for a good company that will hire you at a reasonable wage. Some (bad) companies will low-ball you claiming that you don't have experience and therefore don't deserve full pay, don't accept that. Know what the prevailing wages are for your experience in that location before negotiating wages, since salary is whatever you negotiate.
  18. I like A. Many games through history use a cover art that doesn't have actual game art, often dramatically different or completely unrelated to the actual game art. Even though C is a bit purple, if that uses your actual game style and coloring, it also seems like a reasonable image. It conveys a similar mood to me, and sets expectations about art style. Version D has a good visual style but way it cuts the tree doesn't work for me, nor does the font over the image. I like the colors and layout of E, but content is sparse and uninteresting.
  19. As a rule, both in real life and in games, terrain itself is very smooth and has low details. Objects on the terrain make it interesting. Those are among the "tricks" used for detail, add a bunch of modeled objects in the world near where the player is interacting. Trees and shrubs, rocks, grass, structures or buildings, and other objects. Similarly for cliff faces, waterfalls, or vertical surfaces. None of those are not the terrain, they are objects on the terrain.
  20. Yup, bad idea to put all your personal info on the public web. But whatever, it's a link to your site not posted here on the site. Programmers generally don't have a video demo reel, but it is somewhat common to have a portfolio of projects on the web site. You have that, and they look reasonable. For the CV, since you are in the UK there are regional differences. In the US I would recommend you eliminate the "skills" section, and use the space to describe what you did in your courses that are transferable to the job. You have a section incorrectly named "Experience". That is shorthand for "Work Experience" which means "somebody paid you a regular wage to do this work every day." Those are personal projects, which should be used as the section name. You have "Work Experience" later on the page which is used correctly. Intern and junior positions are relatively rare. You need to be looking at the same time that a local company happens to have a need. The few companies who hire them don't hire them legally as intern roles because of the legal requirements, instead they hire them as a junior developer over the summer or for a short contract. Legally, "interns" need to not do work that replaces a regular job, and they need to be supervised about the same as if they were a student, and in exchange they can be unpaid or paid less than the minimum wage. Generally it should also be affiliated with a school. Overall what you have looks reasonable for an entry-level programmer. The next barriers are simultaneous needs (you applying for the job at the same time a local company is looking for a worker), then being the best candidate among all those who are interviewed. Small studios are generally the best work environments but they rarely hire junior level or intern workers. Larger companies may hire a few entry level workers for a large project, but you're looking at perhaps one in twenty or one in fifty. The jobs are far easier to find if you have some connections within the industry who can put your name out to their teams and team leaders. They may be able to create the position if they were thinking about the role due to pressure but have not actually started hiring yet. That is the most effective way to get a job; I've read that working your social connections is about 9x more effective than basic applications directly through the company.
  21. frob

    Offers created in Games

    That is a marketing decision. Discounts and promotions are popular at certain times (like immediately before holidays or events). The goal generally is to help build hype, and to give a reason for a renewed advertising push. Advertising with "It is still $30" is less effective than "For a limited time, only $25!! Act now!!!!1!"
  22. frob

    What’s the future of internet?

    The Internet is far more than social media, cat videos, and what you can find on the Web. Big companies tend to push the model that that's all there is, content they produce and can sell you. The major ISPs who are also content producers tend to forget that the Internet at its core is nothing more than a means for transmitting data between two arbitrary endpoints, and decry that anything that looks like a "server" should be banned unless you pay for a premium business server account. As such, the Internet of Things (IoT) holds a lot of promise, as well as being ripe for abuse and commercial extortion. Many devices and tools in my life could benefit from certain types of connectivity. High-tech movies show sliding information from device to device seamlessly, and being able to predict what you want to do in helpful ways. Unfortunately too many companies see those as ways to extract money from people, either with or without the benefits they provide. My biggest worry is true electronic warfare, where everyone who uses it for anything instantly becomes collateral damage.
  23. frob

    FXML and CSS in JavaFX

    They are independent. FXML is a markup language used for JavaFX. Since you are trying to build a GUI in JavaFX you'll probably to use it. FXML describes what UI elements like labels and text boxes should appear on the screen, and where they belong. FXML allow you to change the layout without recompiling the code. You can design the application to manually place the elements in code if you prefer. You can define your dialog boxes and window layouts by hand although it is much faster using IDEs that have tools to let you position your UI elements easily using FXML files. CSS is a style tool for web pages. It is often abused in corporate environments because marketers and artists refuse to accept that CSS is often overridden by users and script blockers, and can be modified or completely ignored by web browsers and user. JavaFX allows you to include styles from CSS so that your application can have a visual style that matches your web pages. Mostly it was added to make marketers happy for consistent branding, and they are a thorn in the side of developers forced to use them.
  24. Is there a question in there that I couldn't find? Good luck on your idea.
  25. So much this. If you are making one version of your game for sharing with the world, and you're only on the PC you don't need to do anything fancy at all. Transmit the four bytes and be done with it. If you are sharing on multiple platforms that are using the x86 chipset (PC, PS4, XBOne) you can do the same. You will need to make certain your protocol works on all the devices, but can transmit the four bytes as-is for integers and floats and they are directly usable. What you do with the data may have other issues and trying to build a deterministic game is a massive undertaking, but that's not the topic. Serialization to the same chipset is not an issue. When you change chips it is an issue. Last generation of game consoles you would not have been able to share between PC and the consoles because they had different in-memory formats (in addition to the first-party companies rejecting the concept of cross-platform play). Tools and data typically cross platform boundaries, so those needed to account for the different ordering between the PC where the data was built and the console where the data was consumed.
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!