Jump to content
  • Advertisement


  • Content count

  • Joined

  • Last visited

  • Days Won


frob last won the day on July 16

frob had the most liked content!

Community Reputation

45371 Excellent

About frob

  • Rank
    Moderator - Mobile & Console Development

Personal Information

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. There are many ways, as many as your creativity allows. If you want the entire domain redirected to a different server, you might be able to handle it with a DNS entry and a line in your web server to treat one domain as the other. That is, set the IP address of a.com to be the same as b.com and allow the server for b.com to acknowledge a.com as the site's name. A more typical approach is the HTTP server redirect. This requires code on your server. Normally a page gives a 200 OK response. The 404 page you described usually isn't just the text, the server also sends a 404 NOT FOUND response code. Redirection response codes are 301 MOVED PERMANENTLY or a 307 TEMPORARY REDIRECT which will bounce a web browser to the new location. There is also the 303 SEE OTHER response which is usually handled after a POST, PUT, or DELETE and tells the browser to issue a GET request at that other page. Exactly how you do this depends on how you create your pages. If you watch a web debugger on large sites you'll see it is quite common to get a series of 3xx responses to move from a friendly URL name to a specific resource, or to bounce around on corporate servers to the final resource. If you're looking to do it client side in JavaScript, probably the best is to replace the window's location: window.location.replace("..."); to cause a redirect without a back-button trail, or window.location.href("..."); to leave a back-button history. Wrap it up in a timer if you want a short delay: window.setTimeout(function(){ window.location.replace("...") },3000); You could do something with JQuery if you want to. However, since this is all client side you have no control. Browsers with scripts disabled, web spiders, embedded browsers, and other systems may not redirect the way you expect. Each approach has different merits. Handling the entire domain is probably best at the DNS level. If you want to make sure everything moves the HTTP 3xx redirect responses are best done by the server. Relying on the client to do it with JavaScript will be the least reliable approach.
  2. frob

    AR Infused board game

    Basically: Go for it, but it probably isn't where the industry will end up. I've had many design discussions about it over the years. In tabletop games there is a strong physical component of manipulating all the little pieces, placing them in their spots, throwing the dice, and more. The physical presence is a draw. However, those small physical tokens are a cost. It takes effort to take everything out of the boxes, construct the play area, set out the pieces, sort through the cards. There are many tabletop games I'd enjoy far more if they didn't require an hour of setup and cleanup. From all the discussions the biggest factor of AR would be to have an open playing space with completely virtual tokens. This reduces the setup time down to nothing. Having the computers do that can reduce the slow parts of the game of counting out individual tokens, hunting for them in the token box, or searching for the corresponding card. However, it also removes the physical presence and physical manipulation that are a big part of the experience today. If you can find a good mix between the two then players will rejoice and you'll be swimming in well-deserved money. However, the industry will probably end up not a mix of the two, but instead being entirely virtual with only a physically-delineated play space on the table, or only with physical dice or similar minimal objects. Players can still sit together and enjoy their drinks and food while playing, but nothing gets damaged from unwashed hands or spilled drinks.
  3. For this type of strategy game a part of the fun is balancing combat strength and power against cost. Your list includes some of that, but it doesn't seem well defined. You mention "tech", you mention units having costs, you mentions melee and range. Those are part of the balance. It is generally good to have a mix of strengths and weaknesses, with the relative values depending on the cost of the unit. This gives the player the ability to create strategy. A good strategy game allows a skilled player to come up and win under difficult positions if they can exploit strategic weaknesses. You've started with five types, but you've not really figured out strengths and weaknesses. You'll want to start figuring them out with something like this: Peasants: Strength - cheap, quick to train, probably can build things. Weakness - very low defense stats, low offense stats. Spearmen: Strength - Spears are extremely strong against cavalry, pikes in the ground slow incoming opponents. Weaknesses - Low defense stats. Swordsmen: Strength - High defense stats, high melee damage stats. Weakness - High cost, slower due to armor, requires technology. Archer: Strength - Ranged damage. Potentially agile/fast unit. Weakness - very low defense, possibly as low as peasants. Requires technology. Catapults: Strengths - Very high ranged damage, possibly splash damage. Weakness - Extremely slow to move, slow to fire and reload, extremely low defense against melee, cost. When you've figured out all the strengths and weaknesses, you've got to figure out approximate power and cost ratios. How many of X should be able to defeat a Y? Generally if two have equal cost the strategic value should be equal. That is, of a light infantry costs the same as a basic archer, then if you put an archer versus an infantry the archer has a chance to kill the infantry as they approach, but if they reach it the infantry can quickly overcome the archer, making it about a 50/50 since they cost the same. Paying a higher cost like an archer digging in or embedding in a tower makes the archer more powerful, paying a higher cost like better shields reduce the risk to the infantry from inbound arrows. Every character type should have some weakness that can be exploited. In real life navies, consider how aircraft carrier groups are configured. There is generally an aircraft carrier that is quite weak and slow and serves as a hub but has very low offensive or defense capabilities in itself; several airplane wings that are maneuverable and can do a wide range of damage but have limited range and few individual weapons; 1-4 cruisers with guided missiles that can handle large distant surface targets; 1-6 destroyers with anti-submarine and anti-aircraft capability, 1-4 submarines to counter other submarines and other ships, and can sacrifice secrecy to launch missiles; fuel and supply ships and other vessels for logistics and maintenance and mission needs. Note how each ship has weaknesses and strengths. On their own each ship can be overcome by others. Subs are easily destroyed by destroyers and by air-dropped armaments. Cruisers are vulnerable at close range. Destroyers are vulnerable at long range. Aircraft are weak and easily overcome by nearly anything, but extremely mobile and versatile. When they are working as a group they are strategically solid. Similarly in the Star Wars universe, a Death Star can destroy entire planets, has high power long-range defenses, and carry over a million military personnel, but could be overcome by weak points from small ships. Their fleets generally include a collection of craft each with a different mix of offensive and defensive capabilities. You also asked about making it interesting. That's harder. You need an incentive to get players moving as quickly as possible. The opening moves are critical, and a player who stalls up front will have more difficulty later. You've got to have increasing entropy. In some other games the contest is about balance and reducing entropy, encouraging the loser to come from behind, such as cart racing games giving high-power bonuses to last-place players and weak rewards to those in first place. In RTS games the goal is increasing entropy. You want the end to be explosive, even when one side is completely overpowered. That generally means the end game is decided by enormously powerful battle fleets in games like Starcraft, or by fully-leveled characters in LoL that can do enormous damage with every hit. And you've got to have a chance for players to win from behind. This generally means the win condition (or loss condition) is not defined by the accumulation of power. Consider sometimes in League of Legends where a team can strategically distract their opponents into major battles and conflict, and even though they are weak they win the objective by opening a hole for their minions. The "winion" strategy works amazingly well if you can distract the opponent. If you can see other strategic openings depending on the game it can be enough. In the old Command and Conquer games, if you knew where the target was you could focus on building a huge fleet of aircraft. All the defenses would be fired at the first few airplanes, so a set of 8+ aircraft flying directly to the construction target could destroy most players. A Zerg Rush feels like a dirty trick but wins the game. And of course, all it takes is one incredibly lucky X-Wing to take down a Death Star. The trick in strategy is to find and exploit strategic weaknesses, while building up your own layers of strategic defense.
  4. @csbrown28 -- Ignoring people's argument about how they happen to define what is or is not a flow chart, did those examples help in your issue of presenting the economic system flows?
  5. frob

    GameDev Game Design Query

    The Game Design and Theory part of the board covers that type of discussion. Theory, gameplay mechanics, and balancing elements apply just as well to video games as tabletop and card games. It is quite common for innovative games to start their lives as cards, dice, and notebooks, and most big games see multiple paper-based revisions before a line of code is written. Discussion about your non-digital game's design and theory will fit right in.
  6. That's a popular myth, especially in typing trainers that for non-QWERTY keyboard systems. It is well-documented as false, but the myth is popular anyway.
  7. From what I can see in the other discussion, you were preparing slides for TT Games about a product belonging to Universal to be merged with a product owned by The Lego Group. From a business perspective that's a non-starter. You don't own either product, nor does TT Games. Lego is the core of The Lego Group, and Fast and The Furious is one of Universal's largest franchises. The best thing you can hope for is that they'll completely ignore your idea, and hope neither organization will send their legal teams after you. Creating and submitting a pitch on it is basically trying to sell something you don't own. If you were to submit a pitch on it, you would need to submit the pitch to Lego or to Universal. You wouldn't present it to TT Games, nor would you present it here. Since TT Games was acquired by Warner Brothers, a partnership there would be difficult, unless it comes with a few million dollars to make it easier on them. Both the proposal and the softening-up money would need to come from one of the two major companies having their products merged. It is seldom seen publicly, but the major companies really do send out legal demands, C&D orders, and takedowns in response to pitches like you created. Usually those takedowns come with gag orders saying they promise not to sue into oblivion on condition of you removing every shred of it from the Internet and never speaking of it again.
  8. I'm not so sure about "much more efficient". I know they use pools based on time, but they're still iterating through all the active ones and they have the same work of testing against time. Clearly if you're dealing with an enormous number of items or large time scales there are some things you can do to reduce the work, but that doesn't seem to be the case here. Take suggestions (both theirs and my code) with a grain of salt: Always season things based on what you actually experience, not what you're told it should be.
  9. Not tested out, but should give the idea: void Update( ) { ... foreach( BasePickup pickup in MyPickups ) { if( pickup.expireTime < Time.time ) { /* pickup has expired. Do something.*/ } else if( pickup.startedTime < Time.time ) { /* Pickup time has started but not expired. Do something. */ } ... } void CreateThePickup() { BasePickup pickup = new ThingToPickUp(); pickup.startedTime = Time.time + PickupTimeBeforeStarting; pickup.expireTime = Time.time + PickupTimeBeforeExpiration; /* Other initialization and values */ MyPickups.Add(pickup); }
  10. Based on the original post and those updates, there is probably a MonoBehaviour derived class that contains a nested class. The nested class is likely NOT derived from MonoBehavior. If that is a nested class you can start the coroutine using an instance of the outer class. But I'd still advise against it generally. Coroutines are great for interrupted behavior of a long-running task due to how they yield midway through processing. But they aren't really necessary if you've got an Update() function. Under the hood all the system is doing is running Update(), then running every registered coroutine function. The work you've described can just as easily be done with the main update, using a test against elapsed time like Scouting Ninja posted.
  11. From what I've read, we've mostly got a distribution problem, followed by energy and economic problems. We've got enough resources in play globally for about 2x the current global population. Food, potable water, clothing, housing, etc. People with resources throw them out and waste them due to abundance. Ugly looking food is thrown out, perfectly good food is allowed to rot on shelves because nobody has need to purchase it, electricity is generated and wasted because it is cheap and available, clean and treated water is dumped or used for irrigation. But in other places those same resources are scarce. We cannot easily re-distribute resources from resource-rich to resource-poor areas. Using current technology we could redistribute resources from resource-dense to resource-lacking locations, but the cost to do so is enormous. We could arrange for continuous resource drops globally where goods are flown around the world but it would be at a tremendous energy cost for fuel. And then of course there is the economic side effects of redistributing goods on a large scale. Both the sources and destinations will have changes to supply and demand, so changes to either can completely destroy economies. Bringing in cheap resources from elsewhere undermines local economies, getting rid of excess resources lowers demand and increases costs. Both the giver and receiver suffer.
  12. frob

    I need help?

    There is no "best". Something that is amazing for one person can be terrible for another. Your portfolio will depend on the jobs you do, and will be highly personal to you. For an artist the web site will include a collection of images or animations. For a programmer it should probably have code files, videos of gameplay, and packages to download. Exactly how you present them is part of what you are showcasing. You make the decision, and your decisions are part of what is communicated. Exactly what you include and how you format it will be up to you and what you've got. Single pages, folders and sub-pages based on projects or topics, image carousels, or just links to github and similar sources all can be effective. If you need ideas you can use your favorite search engine, but you'll quickly discover that every portfolio is unique, and every portfolio should represent designs and decisions made by the individual.
  13. Not a specific timer function. Changing a bit of functionality or activating an object's feature is often done during Update(). For the timer that I see in the code, during update() check if the time has passed. Once time has passed you take the action. There is probably no need for a specialized function. If you have a separate game object being created, and if you need deferred processing on itself such as self-destruction, that is different functionality than what I saw in the code above. For that, sure, a coroutine on the new game object is appropriate, have the object register the co-routine on itself when it is created.
  14. When using an IME the user enters the characters such as "wei" and the IME intercepts them replacing them with the 为 glyph. When there are multiple glyphs possible the IME prompts the user to switch to different glyphs. Google Translate has a fairly good implementation. Open their site, select a language like Japanese or Chinese, use the dropdown to select how you want to enter the text, then type away. Even if you don't speak the language, type some words you know and you'll quickly run across glyphs represented by letter combinations to see it in action. The words you type may be nonsense but you can watch how an IME functions.
  15. As a workaround, you could create a class that is derived from MonoBehavior and have that create your coroutine for you. But really that's a workaround for a bad solution in the first place. Unity Coroutines are iterator functions called after the active object's Update() is run. Coroutines are great for spreading a bit of processing across frames or queuing a delayed action. Timer comparisons like you briefly describe are often best set as time stamps which you can directly test against yourself in your object's Update() function. Timers like you describe have no need to be a coroutine at all, and they tend to have subtle bugs with the coroutine scheduler which can run even when the object itself is disabled. if you've got a collection of them you can iterate across the collection and compare them against the current time..
  • 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!