• 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

151 Neutral

About Thanamos

  • Rank
  1. Ok, so I started making this 2D top-down game using C# and XNA (because I am really familiar with C# and not famliar with game development). I am using the Entity / Component / System pattern and everything has been great so far. But now things are getting a little tricky so I was hoping people here could give me some tips and pointers.   As mentioned, my system is based on Entities that work as holders for a set of Components, some very simple ones like Spatial (takes a Vector2 as a position), Collider (sets a hitbox relative to the spatial component). Others are a bit more advanced like a door. The door can disable the Collider when the door is open, and rotate the sprite over time to make it seem like the door is opening.   I am having issues because I wanted to rotate the door to an angle (0, 90, 180, 270) to be able to have doors on all sides of houses, but this is a problem because of the origin being set to (0,0). All my sprites are using 0,0 as origin and I am thinking if this was a dumb choice. Maybe I should always set Origin to the center of the object.   So there is my question, when people build games like my 2D top-down game, do they set Origin to the center of the sprite and rotate, or should I create 4 unique doors, each one facing a certain direction?   I have added screenshots of my doors open and closed if that is better.  
  2. As the topic states I am trying to write a  top-down tile-based game, something like RimWorld or Prison Architect. Where the player can manipulate the world in different ways. But before I just go ahead and start writing code I am trying to decide on the structure of the world. There are multiple ways of dealing with this I know, but maybe someone can put me on the right track.   For one option I was thinking of having a two-dimensional array of Tile objects Each tile has a position as well as having a collection of Entities. Each entity having a position and rotation relative to the Tile as well as a texture to draw. This way I can find a tile instance from the Map, add a table, and put a vase on top if it very easily.   To draw I would just call Tile.Draw() and it would draw all it's entities.   I see alot of advantages with this approach, like I only have to check if the Tile is on screen before I draw it. Plus it's really easy to detect what items the user wants to manipulate.   On the downside it makes it harder to place bigger entities, like a table that spans 2x4 tiles, Especially if the player can move/place/remove items in the world.   What other ways are good? I could keep a big list of entities, maybe grouped by position, so for each 25x25 tiles I will have one list containing everything in that area. But again I would have to keep in mind some items may span multiple areas.   It all ends with me being confused as to what is the best/a good/an acceptable way to store and manipulate a world where everything can be moved, rotated, removed and added And when I am confused I get unproductive.   I have been trying to google but I guess I keep searching for the wrong keywords, because I can't find much usefull information. So any hints and pointers are very welcome.
  3. Steering... exactly what I was looking for.   To clarify what I mean about the A* grid is that since the maps are dynamically changed I need to discover the best path to the target, so using A* to get a 'map' of the best path I can use steering to guide all the units along this route.   Really appretiate this guys, thanks a million.
  4. Im working on a small Tower Defence kinda game with a little twist, all of the enemy units will be released at once and it's upto the player to constrict their numbers into tunnels.    Of course I started with all the easy parts like towers and stuff but now I have to write the logic for crowd management, and I am abit unsure if there are any good algorithms for this?   Quick example...   [attachment=15615:queue.png]   Here is 8 units trying to squeeze though a door which only allows one unit at a time.   I have already created a A* grid so I know where they are supposed to go, but it's the queue principle im struggling with.   Appretiate all the help.
  5. These are both great answers,and both close to what my own thoughts are, but it's good to get a confirmation of that other people thinks. I am currently alone on this project, which is ok for now, and I will probably look to gamedev.net/help wanted to find someone to go from dev release to alpha or something. But as a person who has family and fulltime jobs,getting a kickstarter-kickstart would mean going from a cruddy-type indie release, to a more polished indie But again thank you for the good advice.
  6. Hi guys, open questions here. When should I, ideally, start planning for a Kickstarter campaign? I got a game planned, about the same size as FTL (www.ftlgame.com), and I feel this game has real potential, but I know myself, first of all I can't draw, neither can I produce music, so I need to hire someone do to all these things, and that takes money. I have starting developing the framework, as well as some decisions regarding 2D library, sound library. But seeing all the other great ideas on Kickstarter (FTL, Castle Story, Project Eternity, Dead State just to mention a few) Im afraid I have to be near completion before I can even start considering using Kickstarter. So it's a balance of what to plan, and what to actually finish before showing the game off to other people. Also Im thinking a kickstarter campaign would be a greate idea to put pressure on myself to actually finish the game, having other people know, and wait for something Im making is a wonderful thing that shouldnt be underestimated. So what says the people? How much of an demo, trailer do you need before you would consider pre-ordering a game? Spescially considering how easy I could be to just take the money and not release anything. And of course my name is completely unknown and that is an added liability.
  7. I am writing a small battleship clone in flash with multiplayer functionality and while designing I came across the fact of having to store the whole board for each game. I need to store every 100 cells (10x10) for state (state includes x, y, ship, hit, miss), but ofc I don't want to have a table with 100 columns. My first thought was to have a column with char(100), and then just write a long string with 100 values to that column. That will work, but I wanted to run this issue here and see if there is a better, smarter way to do this... Thanks in advance guys
  8. tl;dr; How can I find the edge of an object in flash when I know the origin and a movement vector? I am making a sideways scroller in flash and for the first time I am trying to create a tiny bit more advanced physics then usual. Usually this would be the onTick event: GetPlayerPositionRectangle(); AdjustRectangleBasedOnKeysPressed(); // eg. If key.LEFT is pressed, decrease rectangle.x by a constant speed if (WillNewRectangleFitInTheWorld()) MovePlayerToNewPosition This works fine for having a constant speed, but say that the speed is 4 pixels per frame, if the wall is 3 pixels away this will fail and the players will never be able to get closer to the wall, this looks really bad. So I want to add another line to the function, and it's there im facing a design question. I want to write: GetPlayerPositionRectangle(); GetDirectionVectorBasedOnKeysPressed(); //This will allow me to add gravity and other stuff AdjustLengthOfVectorBasedOnTimeSinceLastFrame(); ForEveryCornerOfTheRectangleGetDistanceToObstableAccordingToVector(); MoveXYBasedOnDistanceToObstaclesLimitedBySpeed(); This is a better solution for more reasons, I can have a better boundingbox on the moving object. The moving object can move closer to obstacles, But the real issue here is getting the distance to the edge of an object based on a direction arrow, here is a small illustration: [attachment=2038:physics.png] (Black boxes are obstacles, red box is bounding box, grey arrow is the movement vector, green line is where the point I need to find) I am fairly certain that this has been asked before, but Im not sure what to search for to get answers, so here goes.
  9. Exponential functions are exactly what I am looking for when calculating addons on weapons. And just as excellent, Gustavef's method fits perfectly into my xp<>level calculations. So now im upper happy. Thanks to both of you :)
  10. Generic question I know :) Im planning a game where the user can modify his weapon with addons, and I need to calculate the value of the weapon. Example: The player has a club which has a base damage of 4, but he can add nails to the club. The first nail he adds increases damage alot, with 50% to a total of 6. The second nail increases damage too, but not quite as much, say maybe 35% And every additional nail adds less and less extra damage. The important thing is that the sum of extra damage should never exceed 100%, but it might be close to it. I havent done real math since I went to school, but I think I remember 2nd degree algebra had nice graphs that never quite hit a designed value? Or am I grasping at straws here? Be gentle :)
  11. I just wanted to applaud you on your idea. There are lots and lots of developers starting out and who needs to get the right mindset you need to developer software, be it games or tools. I hope you find someone to mentor, someone who understands and appretiates the valuable asset a mentor is, and that you find it gives you something in return.
  12. You can easily manipulate the order of the stats Give the table names in my previous post you can call: SELECT player.* FROM player JOIN stat on stat.playerid = player.id order stat.goals desc; That call will return all users ranked with most goals first, the sinking. Honestly I think you should consider getting a book, or spending some hours on databases, because the query above, with 10,000 users in the database, the query can take 0.001 second to complete if you have the correct indexes, and 10 seconds if you don't know how. -Thomas
  13. I would definitely separate the Stats data into it's own table due to two facts: You will often lookup a player's name and basic information without reading all his stats - for example when a player looks up another player. When you query the database the whole record needs to be read into memory, so you can save a little memory and gain a little speed by splitting them. Another reason is if, or should I say when :), you need to add extra fields to the stats table. I would do the player table just like evolutional said, but I would make some changes to the stats table. (wrong syntax I think, but you get the idea) create table stats ( playerid int PRIMARY KEY, stat1 int not null default 0, stat2 int not null default 0); - No need for a StatsID field because you will never search for a statsid, you will lookup a player. - Default values to the stat1 to help minimize errors when inserting the stat record for the first time, you can just to an INSERT INTO stats (playerid) values (134574) and then all the stats will default to 0 This is just my two cents. Hope it helps.
  14. Thank you for a great answer. I do like the idea of having several empty fields with each item, it may be cluttered but I will be able to keep both speed and the simpleness of having one tables, as well as beeing able to easily extend with different types of objects. I want to be able to add new weapons and items without having to change the code, say in weekly or monthly updates as well as seasonal surprises. Besides, I like to add real itemnames, not just 'Longsword +4' :) Again thanks a zillion.
  15. We (just me and a friend :) ) are working on a web-based RPG and while designing the database we stubled upon a bump in the road. It's not the biggest bump but I see multiple solutions and not quite sure what is the best course of action. The issue is items, every RPG needs items, different items like armor, weapons, potions, spells, scrolls, shields, aso. and all these items behave, equip differently. The question is how to manage this in a multiplayer environment like web. I am thinking one table 'item' which just has information like id, name, itemtype. And then based on this information I can lookup eg. table 'weapon' which has information on itemid, damage, damagetype. Surrounding this I was thinking tables like 'equippableBy' so that I can see is an item can be used by a give class. The good thing about this approach is that the different tables will contain little information and I can get specific information when I need it, the negative side is that I will need more lookups to get the information I need. Another approach would be to add more information into the 'item' table, like damage, defence, healing, resistance and other attribute so that atleast 90% of all the items are covered, this simplifies getting the data I need but I see alot of excess data which will only contain 0, and extending the database in retrospect will also be harder. So has anyone got an idea? I am also willing to rethink everything, I just need a good system that might ba able to support thousands of players and maybe dozens simultaneous users.