|
403
|
Developer / Technical / Re: Game Making Software: What's the acceptable limit?
|
on: March 26, 2011, 06:32:47 PM
|
in other words, if the greatest challenge in making a game was programming it, then sure, praise the effort that went into the programming. but usually that's not the case, the other aspects of making a game are usually the much more challenging parts. the proof of this: look at how easy it is to make a 'tech demo' or 'engine' in c++ and how hard it is to finish a complete, well-designed game (even in game maker). you see a lot more of the former than the latter around.
Making a game engine is software engineering. Software engineering is a difficult activity. The proof is how many thousands of 'ideas' for software applications there are on the internet, compared to how many good implementations you can find. Creating anything is a pyramid of requirements. Games rely on software, which is a relatively well defined field, and software relies on algorithms and mathematics, an even more clearly defined field. That doesn't mean that math is simpler than game design. Go and look at the first 3D games like Space Rogue and Ultima Underworld, and then tell the developers that the game design was more difficult than the engine implementation. Now that 3D engines are quite well understood we can turn our back on the pioneers and just claim that programming is trivial, while there are people out there trying to innovate in fields as yet completely unexplored. PCG is a quickly growing area of game programming that shows lots of promise, both technically and artistically. I can't look at something like Dwarf Fortress and separate the implementation from the gameplay, saying that one is more difficult than the other. Game design as a whole package is generally difficult. With different games there will be a different distribution of difficulty among art, writing, design, programming, but all need to come together as a gestalt.
|
|
|
|
|
404
|
Developer / Technical / Re: Game Making Software: What's the acceptable limit?
|
on: March 26, 2011, 06:10:13 AM
|
And what's 'the limit'? How much should be done by the engine?
As much as possible. Programming is the art of managing tradeoffs. If you get a good solid product that targets the devices you are interested in from a monkey's anus, then I say dig through the poop and run with it. There is no fair and unfair in art. You make something that touches people or you don't. Now, this is coming from a hard-core code monkey, I always start out doing things the hard way. But at some point you've got to make the decision between making a self study project in asynchronous event handling, or making a game. If GameMaker or whatever other system helps you do that then use it. CAUTION: The following rant does not specifically apply to game development, but rather engineering of any sort everything. The above assumes that you know the product you are dealing with and it's limitations THIS IS KEY. If somewhere down the road you may want to add a feature or platform but be unable to because.... When you tie yourself to a vendor locked system, you are at the mercy of their whims, and you must play by their rules. If you need a feature, or an obscure bug fixed or something that is a little outside the normal box, then you may be in serious trouble if the economic equation doesn't work out in your favour. This is HUGE, and it's not always technical. Just look back on the forums a week or so and read the sob story of a team who made a racy game using XNA. Microsoft refused to release their game on XBOX live and they have paid the price. They should have known better, you should too. It happens all the time. This is the politics of programming and it goes back to the beginning with IBM and DEC and all the big boys. With that in mind. Make good game. I play good game. No care how make. Game...
|
|
|
|
|
405
|
Community / DevLogs / Re: Mysterious Castle - Isometric Exploration RPG
|
on: March 25, 2011, 11:06:14 PM
|
This looks really awesome. I am also up for testing this if you need anyone! I have a dev account and all the iOS devices.
Yes, yes, y'all! Screenshots or it didn't happen.  Most of those features are totally unanimated so, whatever, I'll post what I waaaant!  Editor looks good! will that be public? If so how will user content get into the game?
NEVER! No seriously, the editor is deadly schizophrenic, clocks kilos, slaps ho's, snachez joolz and has random SEGFAULTS. So the editor as is will never see the light of the free world. However am working on a lot of min-editors that are much more robust, and an in game edit mode that will allow players to create environments for battles and maybe more. First priority is to make game. Then editor. Gaaaaaame... Gratuitous random WIP screenshot porn!  This forest is BIG. Hidden in this forest is the entrance to a hidden valley and so many mazelike passages that I want to puke up pine needles. This where the mountain stream enters the crystal cave system.  This is a hodgepodge of hidden/underground areas. Perhaps you can find the meaning of life hidden among the boxes.  The beginnings of a throne room in which an epic confrontation takes place. All screenies are works in progress and need much love and affection to grow into handsome strapping game worthy areas. This game WILL BE DONE! Peas.
|
|
|
|
|
406
|
Community / Creative / Re: How Offensive Would It Be If...
|
on: March 25, 2011, 06:13:22 PM
|
I love the premise, but you've got to remember that this is the interwebz and everything will live on forevah! So I hope you don't plan on becoming district attorney or governor in the future. I'd play it, and I'd program it too. i was going to make a game like this except it is based in a house and you have two races, chinese and american and you have to deal with cultural differences and it get very funny and satirical sometime due to great misunderstandings and language barrier. actually either a game or a television show im not sure. the twist is that they it turns out the are actually both black. i dont know how this will work actually maybe this will work better as a movie or something.
This... is... gold. LOL x10
|
|
|
|
|
407
|
Developer / Design / Re: 16 Unique RPG Effects
|
on: March 25, 2011, 06:45:45 AM
|
Cone of Shame - Places a silly hat on the enemy's head. Doesn't do anything useful, but gives you more points if you kill them while they are wearing it.
Heheheheh.... Silence: Prevents enemies from casting spells
Yeah, I hope I can layer another tactical dimension too. I dislike overspecialized powers. Also, I love a game with the ability to just throw people off a bridge. E.g. Jedi Knight/Jedi Academy... oh the love.
Done! I loved being Magneto in X-Men Legends for this very reason. I don't have bridges, but throwing people off of cliffs is awesomely fun. Thanks for the ideas!
|
|
|
|
|
408
|
Community / DevLogs / Re: Why I Want to Fuck Barack Obama
|
on: March 24, 2011, 06:51:24 PM
|
...
Yo, straight from the heart. But I'll posit that it's naive to think there are no conspiracies. Conspiracy is the oldest political tool in the world. Many people have this, "it can't happen in America" syndrome, and that is a big obstacle to seeing through the bullshit to the underlying realpolitik. The nazi's did this, the Stalin did that, Pol-Pot did the other, but no American would do any of that, we're not evil. Sorry, but evil does not have a nationality. Don't underestimate the power of racism and fundamentalism. There are powerful people in the world who have political agendas, often they are racist and genocidal. They will lie, cheat, deny and do anything they can to consolidate power. These people exist in America too, and some of them don't want you to have the right to speak out. If you simply throw out a blanket denial of the possibility of these kinds of people manipulating your government, media, and other powerful institutions, that enables them. But I totally agree that conspiracy theories do lead to paranoia, and it's better to do right in your own community right now. Grassroots power is a game changer. Hell, if you look at any successful tyrant they put a priority on destroying community and reorganizing cultural, family and political bonds. A strong community is the best defence against fascism, so go to a local meeting, organize a trash pickup in a nearby park, setup an event at a town hall or community centre, use the interwebs to get like minded people together. It doesn't have to be politically oriented, just meet the people that live around you. Peace.
|
|
|
|
|
409
|
Developer / Technical / Re: Audio Manipulation in C++
|
on: March 23, 2011, 10:27:27 PM
|
|
Quadratic interpolation is a good method. Many popular audio suites allow you to choose between 'fast' interpolation or 'high quality'. These tend to be linear and quadratic interpolation respectively.
I second TripleFox's opinion. Unless you are looking for high fidelity signal processing for analysis, lets say of satellite or sonar data, then pick what sounds good. Resynthesis is going to clobber your cranium, while simple interpolation is good enough for virtually all audio processing meant for mixing and listening.
|
|
|
|
|
410
|
Developer / Technical / Re: Audio Manipulation in C++
|
on: March 22, 2011, 08:37:44 PM
|
Not to mention multimedia in general isn't exactly the most welcoming area of programming.
*Shuddering* the horror... the h o r r o r! Yeah, echoing above sentiments. Is this a learning exercise, homework, curiosity? If it's not and you are trying to do something practical then just get yourself a library or program that'll do it for you. There are lots of good alternatives for processing audio. If however you want to learn how to do DSP programming... turn back before it's too late! Seriously, don't make the mistake of assuming that you can spend a weekend mulling over the essentials and then whip out a bunch of cool effects... If you explain your motivations then a lot of experienced people here can help you make the best decision on how to proceed.
|
|
|
|
|
411
|
Developer / Design / 16 Unique RPG Effects
|
on: March 22, 2011, 05:51:46 AM
|
Hello. I hope you can help me make my game better. I am refining my magic system and have decided to scrap some spells that are not compelling. Instead I am focusing on having each spell utilize a unique effect that can hopefully be another foundation for a combinatorial explosion of emergent gameplay possibilities. So, here is my rough draft: - Distant Attack - Like a magic missile or something that reaches out and hurts someone
- Light - A light spell which temporarily exposes things, ignites nearby light sources and potentially blinds weak enemies
- Push - Remotely pushes enemies in a direction, possibly knocking them into walls/each other or off of cliffs
- Sleep
- Line of Pain - An attack spell that damages all enemies along it's path
- Invisibility
- Web - Traps or slows movement through an area
- Summon - Summon monsters to help
- Ball of Hurt - Area effect damage spell
- Fly - Allows you to access high cliffs, or islands, or just get past land based mofos
- Sight - Gives you the ability to see many more things than normal, like secret doors or enemy stats
- Teleport - Lets you materialize anywhere in your sight range
- Dominate - control an NPC
13/16 These are just descriptive labels, not the actual names, and the flavour of implementation can vary widely. What among these is least interesting/versatile. What else could be added without duplicating or obsoleting another effect?
|
|
|
|
|
412
|
Developer / Technical / Re: Audio Manipulation in C++
|
on: March 21, 2011, 06:13:59 PM
|
For my sins I have done a fair bit of audio programming in C++...
I must have done some really awful things do deserve what I got... If you want to just mess with samples, do as already suggested. Load file into buffer, possibly converting into float's normalized to -1.0,1.0 (this really makes sense if your going to filter the wave, but is unnecessary if you're just gonna edit the samples), then do whatever, and rewrite an audio file. There are a few good libraries that handle the most mundane tasks, if you're on OSX then coreaudio has API's to load and save almost any kind of file into a buffer, if you prefer portable open source (I know I do!), then libsndfile has worked well for me in the past. If this is the beginning of a bigger project in DSP, then do yourself two favours. Get STK, it's in C++ and fairly robust as it's been in development for more than a decade and it's got a really friendly license. Second, wrap your head around real time priority programming, this is key. When I started the best resource I could find was a DEC realtime unix programming guide from 1994. There must be better resources now, as AudioUnit and VST plugin programming has become quite popular. I hope your head doesn't explode. If you explain your goals in more detail I can give more ominous warnings. Good luck!
|
|
|
|
|
413
|
Community / Tutorials / Re: Typesafe dynamic objects in C++ (Advanced)
|
on: March 20, 2011, 06:16:52 AM
|
Every language has limits that you WILL hit if you try to use it in some way...
Fixed that for you. It's totally true, but my point is that it's not magic. It's really well defined behaviour that is used in many reliable programs. Once you get over the hump of how something works and how to use it, it ceases to be magical. The first time I used 'make' it puked up object files all over my computer, but that's not a valid reason to never use it. If an IDE suits you better, then by all means stick with the best solution for you, but if a challenge presents itself that is most efficiently solved by using 'make', then it's inefficient to find a convoluted solution using your preferred tool. Anyway that's just IMO, I just wanted to point out that despite the appearances, simple is better  Totally true. "Make everything as simple as possible, but not simpler" A. Einstein
|
|
|
|
|
414
|
Community / Tutorials / Re: Typesafe dynamic objects in C++ (Advanced)
|
on: March 20, 2011, 02:50:17 AM
|
I think by 'standard' you mean ANSI. Which means compiling using GCC does not mean it is. GCC allows so much random crap by guessing what it THINKS you want.
I was being sarcastic! But ultimately there is no C++ without a compiler, and every compiler tries it's best to generate good code. Your best bet is writing standard ANSI/ISO C++ and let the compiler worry about the machine I just define a special pure virtual function for each event that i need to support somewhere, and tada! I have all the types I need  I'm really wary of these things of meta-magic when coding something as simple as a game's event system, anyway... Sure, there are many good ways to manage events, but the point of this article is to explain the magic, and show how it's really very well defined behaviour, and not all that complex when you wrap your head around the details. It's important to use techniques that you understand fully, but it's also good to learn new techniques, so that you're better prepared for future programming challenges.
|
|
|
|
|
415
|
Developer / Technical / Re: So I'm learning Lua
|
on: March 18, 2011, 01:45:54 AM
|
I use a little mini language I wrote with the preprocessor. You can figure out your own way of doing it , but I've included the whole thing below because it's so simple. In terms of usage it goes like this: Lfunc(Myfunction) Lparm(Int, intParam) Lopts(Bool, boolParam) // Do something here Lret0 // Return 0 results
Lmeth(MyType, myFunction) Lparm(String, someString) self->doSomething(someString); // Lmeth declares a 'self' you can use like 'this' Lretv(self->newState()) // Return a single value
You can also add support for passing custom data objects like point's or whatever. Experiment with your own system and find something that works. My code is pretty ugly but it works fine, and contrary to orthodoxy, macro's when used purposefully, are not evil! // // CHECK // template<typename T> T _ark_lua_check (lua_State*, int&);
template<> int _ark_lua_check (lua_State* ls, int& n) { luaL_checktype(ls, n, LUA_TNUMBER); return (int)(lua_tointeger(ls, n++)); }
template<> float _ark_lua_check (lua_State* ls, int& n) { luaL_checktype(ls, n, LUA_TNUMBER); return (float)(lua_tonumber(ls, n++)); }
template<> bool _ark_lua_check (lua_State* ls, int& n) { luaL_checktype(ls, n, LUA_TBOOLEAN); return lua_toboolean(ls, n++); }
template<> std::string _ark_lua_check (lua_State* ls, int& n) { luaL_checktype(ls, n, LUA_TSTRING); return lua_tostring(ls, n++); }
template<> void * _ark_lua_check (lua_State* ls, int& n) { if(lua_type(ls, n) != LUA_TUSERDATA && lua_type(ls, n) != LUA_TLIGHTUSERDATA) { // Force informative error. luaL_checktype(ls, n, LUA_TUSERDATA); } return lua_touserdata(ls, n++); }
inline void my_checktable (lua_State * ls, int n) { if(lua_type(ls, n) != LUA_TTABLE) { cerr << "C function expected a table, got a " << lua_typename(ls, n) << endl; luaL_checktype(ls, n, LUA_TTABLE); // force error } }
// // TYPE // bool _ark_lua_is_Int (lua_State* ls, int n) { return lua_isnumber(ls, n); }
bool _ark_lua_is_Float (lua_State* ls, int n) { return lua_isnumber(ls, n); }
bool _ark_lua_is_Bool (lua_State* ls, int n) { return lua_isboolean(ls, n); }
bool _ark_lua_is_String (lua_State* ls, int n) { return lua_isstring(ls, n); }
bool _ark_lua_is_Data (lua_State* ls, int n) { return lua_type(ls, n) == LUA_TUSERDATA || lua_type(ls, n) == LUA_TLIGHTUSERDATA; }
// // GET // template<typename T> T _ark_lua_get (lua_State*, int);
template<> int _ark_lua_get (lua_State* ls, int n) { return (int)(lua_tointeger(ls, n)); }
template<> float _ark_lua_get (lua_State* ls, int n) { return (float)(lua_tonumber(ls, n)); }
template<> bool _ark_lua_get (lua_State* ls, int n) { return lua_toboolean(ls, n); }
template<> std::string _ark_lua_get<std::string> (lua_State* ls, int n) { return lua_tostring(ls, n); }
template<> void * _ark_lua_get (lua_State* ls, int n) { return lua_touserdata(ls, n); }
// // PUSH // template<typename T> int _ark_lua_push (lua_State*, T);
template<> int _ark_lua_push (lua_State* ls, int v) { lua_pushnumber(ls, v); return 1; }
template<> int _ark_lua_push (lua_State* ls, float v) { lua_pushnumber(ls, v); return 1; }
template<> int _ark_lua_push (lua_State* ls, bool v) { lua_pushboolean(ls, v); return 1; }
template<> int _ark_lua_push (lua_State* ls, std::string v) { lua_pushstring(ls, v.c_str()); return 1; }
template<> int _ark_lua_push (lua_State* ls, void * v) { if(v) lua_pushlightuserdata(ls, v); else lua_pushnil(ls);
return 1; }
typedef int Param_Int; typedef float Param_Float; typedef bool Param_Bool; typedef std::string Param_String; typedef void * Param_Data;
#define Lparm(TypeName, parm) \ Param_##TypeName parm = _ark_lua_check<Param_##TypeName>(ls, _arg_count);
#define Lopts(TypeName, parm, def) \ Param_##TypeName parm = def; \ if(_ark_lua_is_##TypeName(ls, _arg_count)) { \ parm = _ark_lua_get<Param_##TypeName>(ls, _arg_count++); }
#define Lself(type) \ my_checktable(ls, 1); \ lua_pushstring(ls, "core"); \ lua_gettable(ls, 1); \ lua_insert(ls, 2); \ ++_arg_count; \ type * self = (type*) _ark_lua_check<Param_Data>(ls, _arg_count); (void)self;
#ifdef Lfunc #undef Lfunc #endif #define Lfunc(fun) \ extern "C" int fun (lua_State* ls) { \ int _arg_count = 1; (void)_arg_count; try {
#define Lmeth(type, fun) \ extern "C" int type##_##fun (lua_State* ls) \ { int _arg_count = 1; Lself(type) try {
#define Lload(fun) \ lua_register(ls, #fun, fun);
#define Lret0 \ lua_settop(ls, 0); } ARK_CATCH; \ return 0; }
#define Lretv(ret) \ lua_settop(ls, 0); \ return _ark_lua_push(ls, ret); \ } ARK_CATCH; return 0; }
#define Lret1 \ lua_insert(ls, 1); \ lua_settop(ls, 1); \ return 1; } ARK_CATCH; return 0; }
#define Lret2 \ lua_insert(ls, 1); \ lua_insert(ls, 2); \ lua_settop(ls, 2); \ return 2; } ARK_CATCH; return 0; }
|
|
|
|
|
416
|
Community / DevLogs / Re: Unnamed MMO/RTS/Turn-Based Hybrid
|
on: March 17, 2011, 05:51:06 PM
|
GOALS Here are my current list of goals for the game:
1. A 3D world map like Minecraft / Dwarf fortress.
2. A multi-player MMO server that sends / receives the "diff" of map data between ticks.
3. Map data is stored in Octets. Objects in game can be destroyed and their Octets get subdivided
4. Psuedorandom World Generation
5. Player controls main character from two perspectives, first person and overview RTS, similar to Dungeons (Dungeon Keeper)
6. Player gives orders to NPCs/henchmen indirectly , like Dwarf fortress... you just order that a certain area be dug and someone will eventually get around to it. If they don't do it and u have the skill u can always do it yourself (minecraft style)
7. During an Action Event (such as a fight) a section of the map goes into a "turn based" mode. This mode would have a combat style similar to Final Fantasy Tactics.
8. Any player who enters a section of the map which is in turn based mode also starts taking turns until they leave that section. or until the event is finished.
9. Permadeath! (possibly your NPCs or henchmen would be reattainable and therfore buildings and equipment could be regained, but then other players could bribe or gain leadership of your lost assets as well)
10. A skill/technology learning/teaching system. Where you can discover skills/technology or be taught them by other players / NPCs who already know them. For example if you die and then reclaim leadership of your old assets (NPCs) then you can have them reteach you what you knew before (like mining), some players in the game can strike deals for knowledge
11. Leadership roles - a player can adopt another player as their leader. When that player is offline his leader can control him the same way that NPCs are controlled. Every NPC has a loyalty factor and strong leaders can convince or bribe weaker NPCs to abandon Leaders and join them.
Yeah, but will it make me a sandwich? Otherwise why bother? Seriously. Very ambitious. I hope you're a hardworking genius and we'll get to play it someday.
|
|
|
|
|
417
|
Community / DevLogs / Re: Hack, Slash, Loot.
|
on: March 17, 2011, 06:23:26 AM
|
On the subject of releasing a test build, the first round of testing will probably be organised through my Twitter account( @OddballDave), so keep an eye out there if you're interested in getting in on the the first public build. Aiyo!! I'm in China and twitter is banned because its... counter strike ... revolutionary, er something? Make an exception... pretty please?
|
|
|
|
|
419
|
Developer / Technical / Re: Anyone here rolling their own engine?
|
on: March 16, 2011, 07:10:40 PM
|
|
Yep, C++/Lua, I don't even use SDL, I wrote my own software blitter, which was a terrible idea!
I would second the idea of making a toolbox like collection of code. What I did in the past was to use a prebuilt engine and then slowly replace engine components with my own concoctions. That way I had time to play around and time to make sure each part was refined and bugfixed before moving on. The downside is that you can be less creative in the design as your doing it piecemeal. I echo some of the sentiments here: creating an engine (in your head) is a fun exercise. Working out all the details is not so much.
|
|
|
|
|
420
|
Community / DevLogs / Re: Mysterious Castle - Isometric Exploration RPG
|
on: March 15, 2011, 08:12:30 AM
|
|
Crazy! So many changes have taken place.
Added the following planned features: Stealth/Hiding. -You can now sneak around at half move speed. Your torch goes out and you use a darkvision skill to see how far your LOS is. - Monsters may or may not notice you. You may or may not notice sneaking monster assasins! Monster AI. - Mindless. Just attacks you till it's dead. Zombies. - Fighter. Attacks until you damage it badly, then tries to get help from friends or runs away. - Archer. I really like how this one worked out, really hit and run style archery, keeps a good distance from you while sniping. - TODO: many more, but the basic architecture is working great so I'm optimistic Text alerts + Talking. - Conversation system is working, even wrote a little editor in Cocoa to help make conversations easily. Sound. -Music + sound FX Inventory + Equip - Standard inventory stuff. Spellbook - Ditto. Multitouch UI - Pretty smooth and easy to use, I hope you choose to hear my news and drive away the blues.
The following UNPLANNED features are now finished. Climbing! - Yes! You can climb up and down cliffs, depending on your climb skill. Now those inaccessible looking cliffs can hold tons of secrets. Reading and language. - On a whim I added various languages to the game, so some of the books you find may need to be translated. Not sure if I'm gonna keep this. RANDOM CHAOS. - a secret uber awesome feature involving half random PGC.
Plus, there's moar! I can't even remember what I've been doing. What day is it and why are my fingernails bleeding?
|
|
|
|
|