• 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

122 Neutral

About Sh@dowm@ncer

  • Rank
  1. When you have a team of seperate artists/programmers it is important that one understands the limits of other. Let me tell you my current problem from a programmers viewpoint. We are making a isometric game (Graphics is 2d it just uses tricks). I create the placeholder art for the actual game world and our artist started on item art that will be in the inventory. Our inventory system is very similar to the dungeon siege games and the like so items can be different sizes. He can create great art. But he creates it BIG. I mean high resolution artistic goodness. Or he does it in 3d and takes screenshots. The problem is that it will have to be resized for the game. A lot of quality is lost. And i mean a lot more that if he just started doing it the size it was supposed to be. For 2d games more so for tiled/isometric games at least some some form of pixel art must be used if not all. Most artists are not pixel artists. They don't get it that a 54x54 tile is not so hard to make pixel by pixel. Hell i even made some. They feel it looks bad or just have a hard time looking at it as making art. When in fact no matter how good they make their big art it almost always looks worse when resized. And they blame the programmer for that, and the programmer blames the artist and so on so forth. It is important for a game artist to know how games work with art. They should know what the limitations are from the beginning and not try to make art AND then worry about that. Work close to the programmer. Listen what he says. He will not judge your art but rather your skill to make it useful in a game. And limitations will be set by your game. Work within it's confines! Or you will be set for failure. For 3d texture/model art this is a bit different story and i have no experience with it.
  2. You know what i agree. I never started big either. I tried learning C++ and fell to just C. Then mastered it and suddenly C++ and Java was a breeze. Yes the standard library is really really bad. If anything you cant really make games with it. I tend to avoid it completely. I only use C library for File input/output and that's it. But i do not understand why would you bash C. Yes it is outdated. Yes it is not really object oriented (C++ also isn't really). But it is very easy, very well supported,very useful and it makes learning C++,C#,Java much much easier later. Where almost everything that you learned will be used with almost the exact same synthax in these languages. Functions become methods,Structures become Classes,Bit operators remain,... The only problem i see is that some people get too much into C and start programming Java as they would C. They will make bad OO decisions and so forth. But most people that i know are very flexible and is easy to them to change the design of their code and approach to problems.
  3. [quote name='Serapth' timestamp='1337431887' post='4941421'] First off, learning C is not a great starter language, and learning C to learn C++ is like learning Dutch to learn German. Sure, it may help your understanding, but what a terrible waste of time and resources. C is a very domain specific language these days and for most people is of little relevance. For new C++ programmers, they should be encouraged to stay the hell away from C and instead learn idiomatic C++. Second, C++ is a horrible first language, period. Don't believe me, [url="http://www.gamefromscratch.com/post/2012/05/18/This-is-why-I-say-CPP-isn%E2%80%99t-a-beginner-friendly-language.aspx"]read this scenario[/url] and be completely honest with yourself, "could you have found the problem?". That's because C++ is rife with this kind of crap and you will be dealing with it from day 1! People say it's stuff like memory management that make C++ difficult, but it's not, not really... it's stuff like this. The horrible linker, the lets support every single bloody edge case even if nobody is ever going to use them mindset, the piss poor standard libraries, the fact its actually 4 languages smashed together, the weight of a thousand legacy mistakes. All of those negatives may eventually be a positive ( except the linker, which just sucks ), but to someone starting out they all work together to make C++ a terrible terrible starting language. [/quote] I told him not to bother with a graphics library until he learns the language. And for that almost all IDE's that are out there thay are all set for the go to do such stuff. No linking problems, no library incompatibilities, no stupid stuff like that. By the time he learns the language. He should be reasnoably competent to understand what a library is ,what is a dll, what do the warnings mean. And most importantly he should know HOW to ask the right questions on the internet to solve his problems. There is nothing wrong with that. A person that doesn't know this basic stuff SHOULD not dive in to use third party libraries or yes i do agree hes in a world of pain. So yes C++ CAN be a begginers language. But C++ with a third party library is definetly not.
  4. Well all open source games put their entire code on the internet. So you can start there. Also while it is good to learn from web tutorials (there are a lot of good ones) there is nothing like a good book that you can put on your desk and read from while you learn. You can chose from basic C++ stuff books, to game design , graphics library books, game physics books,... Start small. Really small. Like a simple text console question game. Then move to 2d static graphics simple games,then 2d animated games,...3D can be hard really hard. For C++ there are some nice libraries for games: SDL - Simple elegant easy to learn has some books on it, a lot of tutorials , a lot of games use it,.. SFML - Simple well designed powerful easy to learn. GLUT/OpenGL - Ranging from very simple to extremely comlex. Good start to 3d programming. Easier than DirectX and very cross platform. (Very good books/tutorials) DirectX - Only for Xbox and windows. Great game library in general. Has all you need for sound,3d graphics,networking,... (Very good books/tutorials) As for engines i can't really say. Since i usually only use libraries (write simple engines from scratch).
  5. You have a major problem with this. No matter what you do the file system will work against you. No matter how small you make this already small files they will be at least 2/4 KB on the disk. The only way to make something happen is if you have a whole bunch of them and store them in a single compressed file only than does this seem reasonable. Also i may help with that one byte audio file. It is only one second long. and as you know a byte can store 256 different values. Human hearing is in the 20-20000 Hz range. Simple math would be that you can store 256 different frequencies in the single byte. But what would they be. For example (20000-20)/256 ~78HZ. So you can make something like this. A value 3 would be a 254Hz sine sound. a value 60 would be 4700 Hz sound and so on so fort. To calculate it would be something like [value*78 + 20] so it is betwen 20 and 20000. I hope i helped.
  6. Since you did some programming already even if it was just some scripting. I recommend you skip things like game maker and rpgmaker or similar. I think you are ready to learn a language. You have 2 choises: -Game oriented language -General purpose language If you choose first you can easily dive in game development. They are usually easy to learn and to use. Also they have everything you need to make simple/comlex games. But they do lack in performance and some advanced tehniques such as good 3d graphics,portability,third party libraries,ussualy have poor multhithreading support or don't have it at all. All in all when you mature past good 2d games you will simply want to skip this one. It is the best for learning but sooner or later you will leave it behind. If you choose a general purpose language it wont be so easy. Main reason is that you have to learn the language first before even attempting to make a game.Even WHEN you learn it you usually have to choose and learn a game library/engine to use in making your game. There is a lot of work to do just to get anything started. However when you DO learn all those things and learn it well. You will find yourself capable of using amazingly powerfull tools and you will have great freedom on what you can do with your game. They give the best control to you on what you want to make the downside is usually YOU have to make it. The choise is yours. I will give you some examples of general purpose languages: C - great starter. Everything you learn will be useful when advancing to the next step. (see below) C++ - Industry standard and with good reason. Very powerful,fast,full of features. Amazingly well supported,BIG communities,Countless tutorials,books,A lot of third party useful libraries,etc.. Downside IT IS ARGUABLY THE HARDEST THING TO LEARN (to a professional level) but worth it. C# - Great one. Somewhat easy to learn. Very nice standard library,Very nice modern features,reasonably fast well supported and somewhat elegant to some people. Java - Also a great one. Very feature rich standard library. Easy to learn and use. Runs on a lot of hardware. Great for mobile development and/or web development. its on;y somewhat good for 3d though. A good example would be Minecraft (it was done in Java) Python,Fortran,Delphi(free pascal),... List goes on and on...
  7. When making something like a game engine from scratch. It really means just having a language and a library and building your engine on top of it. As opposed to using a completed engine. You cannot possibly understand the inner workings of your program because there is always a layer beneath what you see. You can however for example choose a open source library so that you can figure out how it works if you want (but its works on top of OS library). C++ and Java are excellent languages for your "from scratch" approach. As opposed to using Engines such as Unreal or Unity. Also note that i don't recommend learning C++ without learning C style coding. I'm not saying you should learn procedural programming first, you can learn java OOP first. But when it comes to C++ you should start from the beginning in order to fully utilize the full power of C++. Good luck
  8. How to determine witch tile does the mouse point/click onto. I mean is there some calculation? Do i look only at one part of the tile or what. Here is the type of isometric representaion that i use: [attachment=8664:Isometric.png] Do i look only at the upper part of the cube or the lower or what? If so what is the calculation since it is not a rectangle?
  9. Try a console Tic-Tac-Toe with the option to play against AI. Then you can try and make it graphical. That's how i started. It really makes you learn simple AI, game techniques,simple windowing,events and graphics,
  10. [quote name='Confirm4Crit' timestamp='1335402583' post='4934938'] [quote name='Sh@dowm@ncer' timestamp='1335358812' post='4934733'] -If the map is simple enough(Something like less than 100 types of tiles) you can can make your entire maps in plain ascii format. For example .................................................. =====........................................ ..........=====.............................. ....................=====.......P........... ..............................=====.......... Lets say the '=' sign is somewhere you can stand. Then this is a simple jumping through several platforms. and 'P' Is where the player would start. This approach is less powerful of course but it saves you a LOT of work making a level editor. All your program has to do is learn to read form this .txt files and generate maps accordingly. Good luck. [/quote] Can you provide a source for somethin' like this? Googling it doesn't provide me anything, and I haven't run into anything like it in beginner books. Found somethin' like this. [url="http://forum.unity3d.com/threads/108264-Free-Code-Load-a-map-from-ASCII"]http://forum.unity3d...-map-from-ASCII[/url] Been diving into XNA a lot, so somethin' in C# preferably. [/quote] I don't know about others but i got the idea from a set of games called roguelikes. They use ASCII as a graphic representaion. Since GUI ports existed without any changes to gameplay i figured simply map each character on the map to a specific Tile image. We use something like this on our current project. But it's top-down 2d instead platformer. Still code for loading the above map would look something like this: [CODE] int loadMap(char *fname,Layers &l,TileList &tileSet) { //Layers is a object containgng various types of layers (solid,background,etc..) // In this case this is our map in memory int height; int width; char c; Tile t; // Three layers for diffrent types of tiles. TileList *solid = l.getLayer(SOLID_LAYER); // TileList is just that a list of Tiles TileList *backg = l.getLayer(BACKGROUNG_LAYER); TileList *monster = l.getLayer(MONSTER_LAYER); FILE *input = fopen(fname,"r"); // or something like this i forgot benn awhile since i used C/C++ // First line are the dimensions of the map fscanf(input,"%d%d",&height,&width); // Coordinates for the tiles int x; int y; //Go through the map for(int i=0;i<height;i++) for(int j=0;j<width;j++) { if((c = fgetc()) == EOF) return MAP_LOAD_ERROR; if(c == '\n') j--; //ignore the new line x = Tile.height*j; // standard tile height y = Tile.width*i; // standard tile width switch(c) { case '.': backg->add(new Tile(tileSet.getTile(SKY),x,y)); break; case '=': solid->add(new Tile(tileSet.getTile(PLATFORM),x,y)); break; case 'P': monster->add(new Tile(tileSet.getTile(PLAYER),x,y)); break; default: } } fclose(input); return SUCCESS; } [/CODE] This was written on the fly and may contain errors. This is the general idea behind it.
  11. I started recently myself. And this is my two cents on the thing: C - Good language to learn not so good to use in game development. However since most graphics libraries are C compatible it is a good place to start some VERY simple games such as Tic-Tac-Toe, Pong and tetris alike. Plus when you eventually learn C++. You will already know the library and a lot of it's syntax. Well supported. C++ - A bit too complex for beginners. You will spend more time learning the language than actual game development. For more advanced users it's almost the best way to go. Incredibly well supported C# - This is a different story. It is easier to learn and the "standard library" is very easy to understand and use not a bad choice for beginners. Mediocre support. (Only Windows if you want access to the full features) Although you CAN program in Linux,Mac ,.. Java - They say it's similar to C#. I don't think so. It's approach is different and it was not designed with game development in mind. That does not mean it's bad for game development. Hell i use it primarily it's just that i have to program a lot of stuff myself. It's standard library is also pretty big and has everything you need. Very well supported. Game techniques for your problem For simple games that are one 2d screen you usually hardcode the level rather that use the level editor. It's not uncommon such levels are randomly generated. For something like your platformer game You have three options: -Make a level editor (A lot of work to be done) -If the map is simple enough(Something like less than 100 types of tiles) you can can make your entire maps in plain ascii format. For example .................................................. =====........................................ ..........=====.............................. ....................=====.......P............ ..............................=====.......... Lets say the '=' sign is somewhere you can stand. Then this is a simple jumping through several platforms. and 'P' Is where the player would start. This approach is less powerful of course but it saves you a LOT of work making a level editor. All your program has to do is learn to read form this .txt files and generate maps accordingly. -Get a level editor and engine of a platformer and just add your own gameplay to it. (Easiest way of course) I would not recommend complex game engines. At least not to the beginner. But simpler ones are just fine if you wish. Good luck.
  12. [quote name='FlyingDutchman' timestamp='1335178908' post='4934038'] Maybe you want to check out my Open Source 2D Engine . Its written in C++ (C with classes actually, something i wouldn't do again ^^) and uses OpenGL + a custom script engine. The code is not the most beatiful because it was the first time i approached something like this but it can teach you a lot i think. In a week or so i will also open source the level editor for it. I can render 3000x3000 tiles on iPhone with 4 layers of tiles on 60 fps :-) do the math ^^ The link is in my sig [/quote] It's awesome. This is your first time? Then i must suck. What do you think about some of my solutions: My animation system works by Sprites giving their current tile to be rendered by checking how much frames per second happened since the beginning of any type of animation. This allows for different speeds of animation for different objects at the cost of a little cpu time. And of course no additional threads are used. There is no hardware acceleration (at least not guarantied). I simply use double buffering on a off screen image. So far it runs perfectly fine on 50fps with a lot of stuff on the screen. The filling of the off screen image is done by the main thread. The Screen thread is the one that simply has to draw an image across the screen every 20ms not populate it. And since they are synchronized it gives me a smooth ride so far. (Is this terrible wrong?) I have a package of a few classes that serve the only purpose of organize/catalog 95% of everything. Basically storing references to a lot of stuff and of course having static methods to get to them. This costs memory. But Any part of the program can access any other very simply. It saves a lot of unnecessary coding and potentialy bugs all over the place. These are also very carefully synchronized. For example real time mouse coordinates are volatile integers. Since they are accessed a lot and synchronizing them would slow down the game. Of course it gives access to only PUBLIC stuff. (Am i doing something wrong here?). There is a lot more but only as ideas so i will not ask about them until i see them in action.
  13. Well so far there is no problem with collision detection. Stuff moves from tile to tile. Layers that are solid simply cant have two solid objects in the same space pretty basic stuff. Object management is also done pretty well at least i think. There is a whole package dedicated to just organizing stuff.(We don't care about CPU time) We have also pretty much given up on a real engine. Everything will be hardcoded in (all the items ,AI,NPC) since we now know what a problematic thing a scripting system would be. We also try to have everything well documented using Javas built in awesome comment documentation. It really helps when working in a team. Still i have a new question. I know basic C++. (everything up to Template programming) and we would like to learn SDL library. How hard would it be to actually rewrite the entire thing from Java2D to C++/SDL? Or should we save that for another project?
  14. Hit there i am fairly new in game development. Only made some small 2d space shooter. However me and my friends decided to make a simple 2d rpg style game engine/game written in Java. First of all we decided it will be Tile based (without animation at least for now) and we plan on making it isometric in the future since it is just a matter of output. We wanted it to be simple but powerful. So i got an idea and it goes something like this. We make a game engine that doesn't have a lot of gameplay coded. It has understanding of what and item is it has an inventory but not the actual items. It is divided in packages: 1: Central_command 2: Graphics 3: Input/output 4: Memory menagment 5,6,...... The idea is to have a lot of classes in central command. With in a way has access to everything witch usually means the memory. A map will simply be a txt file that has a roguelike based ascii map and a script for all object's on it if any. For example Wall is hardcoded but a potion of health is not. The scripting system wont be complex. It only has to be able to store variables, use if, else, while statements and most importantly to communicate with central command. This is the idea. Have and object that represents the loaded script. place that object inside and Item class. class Item has a use/passive method. A health potion will be an item with a corresponding image and script that will be invoked when the use() method is called. The actual script will be something like this: " player = Command.getCurrentPlayer(); player.setHealth(player.getHealth() + 20); " I know that adding scripting ability to your engine is probably the hardest task. But it really simplifies other aspects of your engine. Because it is not needed to code all the stuff right in. Is this the way to go or not? How hard is it really? The interpreter sounds like its BIG but not complex. (remember this is a very SIMPLE scripting language) Is this idea any good or should we stick with hardcoding everything? PS I am sorry if this is too technical and should be put in game programming section. But it is a DESIGN question in a way. Also here is a link of what we done so far (we just started so we used an existing open source tileset) [attachment=8357:Engine Development.bmp]
  15. [quote name='yckx' timestamp='1334849048' post='4932824'] You certainly won't need a 3D library to make an isometric game. You may want 3D modeling/rendering software, such as Blender, to create the art assets. I'm a little concerned about your motivation to code everything from scratch—there is plenty of valuable experience in learning to use existing libraries, and professional studios value efficient job completion over absolute self-sufficiency. I'm not necessarily telling you to use libraries, just reëvaluate your reasons and make sure they jive with your goals. I would also caution you against focusing on the engine over the game. That's another common mistake which too often leads to unnecessary features and unfinished projects. Best of luck to you. [/quote] Thank you very much. Java is a pretty easy language to use. It also has A LOT of built in classes that are very useful for game development. Our project wont be anything overly complex so learning some other game engine would only serve to slow us down. This is our first project before we move on to C++ at witch point it WILL be necessary to learn some third party game library since it is much more difficult to start from scratch there. Also we believe you cant fly before learning to walk. Good code design,documentation,ease of use comes from attempting to make something that is supposed to be used by other people. Event if we do not actually make a game we do this for the experience it will give us in programming in general not necessary in just game development. PS: Thanks for the advice on isometric tiles. And also what you said about too much features. We have an idea to bypass features a lot and still make it pretty powerful. Not much of actual gameplay coding will exist in the engine. In fact can somebody tell me where can i post my idea too see what do people think to see is it any good or not?