• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Does anyone actually program their games?

davidthefat

I Love C++
437
Posts
14
Years
    • Seen Mar 3, 2012
    Well, if you're hard-coding the normal poison effect, why not the toxic poison effect too? There's not much point in having random bits of the battle engine done in scripts if the majority is done in straight C++...

    I'm using C++ at the moment too, and I'm currently not planning on including any scripting system. Although a scripting system allows users to make more complex events, not using one gives me an incentive to improve the event/database system. Although a using a script for a menu system may be easier for me to implement, a GUI menu editor with drag and drop customisability is much easier to use for people who aren't as confident with programming, which means there will be more variety among games using the engine.

    The engine is nowhere near finished at the moment, but though progress is slow, it's definitely proceeding. I'm working on the map/database editor first, rather than the actual game engine, so it won't be playable for a long time.

    Code:
    class Pokemon
    {
    private:
    int hp;
    int MaxHP;
    bool Poisoned;
    //Not complete implementation
    
    public:
    Pokemon();
    void AddHealth(int Amount);
    bool isPoisoned();
    int getMaxHP();
    //Not Complete
    };
    
    int main()
    {
    Pokemon Party[PARTY_MAX];
    /*
    *
    *
    *Add code here
    *
    *
    *
    *
    */
    
    for(int idkWhatToCallIt = 0; idkWhatToCallIt < PARTY_MAX; idkWhatToCallIt ++)
    {
    if(Party[idkWhatToCallIt].isPoisoned() == 1)
    {
    Party[idkWhatToCallIt].addHealth(-1 * Party[idkWhatToCallIt].getMaxHP() / 32);
    }
    
    
    }


    Thats a rough sketch, its not very hard to do... it only takes 5 lines of code really...
     
    2,048
    Posts
    16
    Years
    • Seen Sep 7, 2023
    That implementation is quite ugly.
    Firstly, your programming practices look shoddy; you're seemingly randomly using capitalisation in variable names (it's best to have a capitalised name denote something different to an uncapitalised one, e.g. Poisoned could denote a constant, while poisoned could denote a variable). Why did you name a variable idkWhatToCallIt when a simpler and more obvious name would suffice? The standard variable name for iteration is i, which would make your code a lot easier to read and write. Next, why are you using the addHealth() function to subtract HP? Writing a separate function for subtracting HP would be a lot better, even if it simply calls addHealth(-health). Why are you checking if a bool is equal to 1? The comparison misleads a reader into thinking isPoisoned() returns a number; a simple if (pokemon.isPoisoned()) makes it clear that isPoisoned() returns a bool.
    Instead of having a Poisoned variable, use an enumerator (enum Status = { Poison, Burn, Sleep, Freeze, Paralyse, Toxic }), and a single variable (Status status) for each Pokémon's status. That way, you can't accidentally get poisoned and put to sleep at the same time, as well as saving a bit of memory. Even if the implementation is incomplete, a general status variable lets you add more statuses more easily and means you don't need to modify all your code which references the Poisoned variable when you start implementing other statuses.
    And finally, poison status doesn't work like that in the actual games, though I appreciate your code is just an example. You didn't even go into the effect of toxic poison which I was talking about.
     

    Dragonite Ernston

    I rival Lance's.
    149
    Posts
    14
    Years
    • Seen Jun 15, 2016
    That implementation is quite ugly.
    Firstly, your programming practices look shoddy; you're seemingly randomly using capitalisation in variable names (it's best to have a capitalised name denote something different to an uncapitalised one, e.g. Poisoned could denote a constant, while poisoned could denote a variable). Why did you name a variable idkWhatToCallIt when a simpler and more obvious name would suffice? The standard variable name for iteration is i, which would make your code a lot easier to read and write. Next, why are you using the addHealth() function to subtract HP? Writing a separate function for subtracting HP would be a lot better, even if it simply calls addHealth(-health). Why are you checking if a bool is equal to 1? The comparison misleads a reader into thinking isPoisoned() returns a number; a simple if (pokemon.isPoisoned()) makes it clear that isPoisoned() returns a bool.
    Instead of having a Poisoned variable, use an enumerator (enum Status = { Poison, Burn, Sleep, Freeze, Paralyse, Toxic }), and a single variable (Status status) for each Pokémon's status. That way, you can't accidentally get poisoned and put to sleep at the same time, as well as saving a bit of memory. Even if the implementation is incomplete, a general status variable lets you add more statuses more easily and means you don't need to modify all your code which references the Poisoned variable when you start implementing other statuses.
    And finally, poison status doesn't work like that in the actual games, though I appreciate your code is just an example. You didn't even go into the effect of toxic poison which I was talking about.

    Actually, my practices are equally ugly. You can browse my program's source code to find the extent of my bad programming knowledge. For example, I use a and b instead if i and j for iterators, and I switch between underscoring and CamelCase ad libitum.

    But I do use those enumerators. (Except I call them "int" by accident. I declare the enumerators, and then just use them like a #define statement >_> In Visual C++, it's even worse, because I use the actual namespace of the enum when comparing the number to the enum variables.)

    For Toxic poison, I was thinking of using a "MoveStatus" class, which is a temporary status created by a move like Leech Seed or Foresight or even Fly.

    This move class appears as follows:

    Code:
    class MoveStatus{
    
        MoveStatus();
        ~MoveStatus();
    
        int statusID;
    
        virtual void apply_status(Pokemon*);
    
    }
    This would not apply for status conditions like poison and paralysis, which have their separate variable like you pointed out.

    But I think we're getting a little off-topic here, and I'm going to call upon a mod to determine whether we should move this discussion to a different topic named "Programming practices while creating Pokémon games in C++".
     

    davidthefat

    I Love C++
    437
    Posts
    14
    Years
    • Seen Mar 3, 2012
    That implementation is quite ugly.
    Firstly, your programming practices look shoddy; you're seemingly randomly using capitalisation in variable names (it's best to have a capitalised name denote something different to an uncapitalised one, e.g. Poisoned could denote a constant, while poisoned could denote a variable). Why did you name a variable idkWhatToCallIt when a simpler and more obvious name would suffice? The standard variable name for iteration is i, which would make your code a lot easier to read and write. Next, why are you using the addHealth() function to subtract HP? Writing a separate function for subtracting HP would be a lot better, even if it simply calls addHealth(-health). Why are you checking if a bool is equal to 1? The comparison misleads a reader into thinking isPoisoned() returns a number; a simple if (pokemon.isPoisoned()) makes it clear that isPoisoned() returns a bool.
    Instead of having a Poisoned variable, use an enumerator (enum Status = { Poison, Burn, Sleep, Freeze, Paralyse, Toxic }), and a single variable (Status status) for each Pokémon's status. That way, you can't accidentally get poisoned and put to sleep at the same time, as well as saving a bit of memory. Even if the implementation is incomplete, a general status variable lets you add more statuses more easily and means you don't need to modify all your code which references the Poisoned variable when you start implementing other statuses.
    And finally, poison status doesn't work like that in the actual games, though I appreciate your code is just an example. You didn't even go into the effect of toxic poison which I was talking about.

    First of all, I was bored. and second of all, I never got into that whole if statements without it being compared to something else. I know it defaults to true, but I have been so used to that for years now, its a personal thing that is so insignificant that its not even worth arguing about. Yes sure there can be a better way to do status ailments than the way I showed you, but you got to think I thought of that in 2 minutes and I was not considering into fact that there is only 1 status ailment at any given time. My mistake, I haven't played pokemon in a very long time, so that detail slipped out of my mind. My brain thinks like this: why have unnecessary functions? Subtracting is essentially adding a negative, dividing is multiplying a fraction. Why is it bad to think that way? Yea I agree that IDKWhatToCallIt was uncalled for, but I was bored out of my mind and I considered the fact that I will not be using this code what so ever. I ALWAYS have a get function for all my private variables, its just the way I have been doing ever since I started. I think its a very good practice to do especially when debugging. What I did take into effect was not to subtract a set number from the Hp since 100 from a pokemon with 200 hp is more significant than one with 1000. So I made it proportional to the poemon's Hp



    Well I am sorry I do not follow traditional coding ethics. I personally think that whether or not you capitalize a constant or a variable does not matter as long as you stay constant throughout your code or at least comment it. (Yes I noticed the hp was not capitalized, I DGAF) Just like it doesn't matter if your essay is 5 paragraphs or 4, as long as the content is good, you are good to go.


    edit: Actually come to think of it, I got a 4 on my AP Comp Sci test last year, might have been the FRQs... cause I Named all my variables LOL and ect... I made some a lot of comments too, since I was done before the time limit, I commented on how they should bring C++ back to AP Comp sci and ect...IDK if they can take points off for that, I should have gotten a 5
     
    Last edited:
    50
    Posts
    15
    Years
  • I can assure you that Nintendo does NOT use C#; C# is owned by Microsoft. Well the similarities between C++ and a lot of languages is the fact that those languages are modelled around C++.

    Sorry but this post just set off alarm bells in my head.

    C# was developed by Microsoft yes but guess what? LOTS of companies use it. Some companies use it for their tools (level editors for instance). Some use it for prototyping with XNA (C# is commonly thought of as a RAD (Rapid Applications Development) language so it makes sense to use it for quick jobs) while some engines like Unity uses C# as a scripting languages and quite a few companies have started using Unity (and therefore may be using C#).

    The point of the post was, don't assume that one company does not use one language. Heck there is probably a good chance of Nintendo using C# for a quick tool (like a level editor for pokemon games - just an example ) or a plugin (in the shape of a .dll) so they can use the plugin in cooperation with C++. (Fun fact: You can also use LUA, Ruby, Python, etc with C++ as well. I know one person who was making an RPG used LUA scripts in cooperation with C++ for a full fledged dialogue system which worked pretty nicely btw).

    edit: Also, just saw the posts above which seem to be arguing about programming practices and variable naming conventions. Remember this:

    Not EVERY programmer will use one style. As in, one person may use camelCasing for variables while others may use PASCAL casing. Some may use PASCAL casing for constants while others won't (I've seen people do it both ways on a programming forum called dreamincode actually). It's all down to the programmers preference. There is no right or wrong way to go about things. (this also goes for many other things such as how to lay out your classes in proper Object Oriented Programming)
     
    21
    Posts
    13
    Years
    • Seen Dec 24, 2022
    game editer

    There is a game engine that requires huge amounts of coding to do the simplest things. It is called Game Editor and it is an engine that can make games for iphone,windows phone, and PC. it is what i used to get started with programing. And i highly recomend you get it
     

    DaSpirit

    Mad Programmer
    240
    Posts
    16
    Years
  • I see I should've been a bit more specific now. I meant that C++ was easier than usual to learn because I had previous programming experience. C++ is a hard language, pardon me, but actually if you look at even the most complicated C++ script it'll definitely use stuff like loop(a,b){insert-script-here} which is available in Ruby. I understand your point, I really only scratched the surface in my statements, but I see a lot of similarities to other programming languages. I know C++ is an amazing language, which is why most official games, such as games for the Nintendo DS, and likely the 3DS (or possibly C#), but my point was that RPG Maker uses a real programming language, and can also use C++.

    Think what you want, no one is stopping you and neither me. My point was not irrelevant, the OP said RPG Maker had no real language yet it does. Your probably right lol I'd think RPG Maker was probably programmed in C++ too. I'm not trying to bash C++ usage, but Dragonite Ernston wasn't quite correct.

    ~ CP
    If you're using C++ in RPG Maker, it's easy otherwise, it's really difficult. The hardest parts about using only C++ are the graphics and then once you got that down, the entire framework of the engine will be the next tough part. I found out how to draw graphics but now I'm stuck with engine framework. You really have to think about anything, and make it easy for yourself. I've constantly been jotting down what I need however, I really don't know how to start from there. No one wants to do that much thinking for a simple thing, that's why you haven't seen many C++ Pokemon games around here. I might start one, I'm trying to make my engine be able to create any 2D games I wish.
     

    Dragonite Ernston

    I rival Lance's.
    149
    Posts
    14
    Years
    • Seen Jun 15, 2016
    If you're using C++ in RPG Maker, it's easy otherwise, it's really difficult. The hardest parts about using only C++ are the graphics and then once you got that down, the entire framework of the engine will be the next tough part. I found out how to draw graphics but now I'm stuck with engine framework. You really have to think about anything, and make it easy for yourself. I've constantly been jotting down what I need however, I really don't know how to start from there. No one wants to do that much thinking for a simple thing, that's why you haven't seen many C++ Pokemon games around here. I might start one, I'm trying to make my engine be able to create any 2D games I wish.

    This set off alarm bells in my head. The graphics are not the hard part, at least the way I'm doing it now. Trying to get all the animations (which are not part of the graphics engine) to work, however, is another story.

    Anyway, one goal of my engine is to allow people to create Pokémon game scenarios while doing minimal programming. With RPG Maker, there's still a lot of scripting that the creator has to do.
     
    Last edited:

    DaSpirit

    Mad Programmer
    240
    Posts
    16
    Years
  • This set off alarm bells in my head. The graphics are not the hard part, at least the way I'm doing it now. Trying to get all the animations (which are not part of the graphics engine) to work, however, is another story.

    Anyway, one goal of my engine is to allow people to create Pokémon game scenarios while doing minimal programming. With RPG Maker, there's still a lot of scripting that the creator has to do.
    Do you mean making the animations? Because programming wise, I think I have animation done but I just haven't fully optimized it. Basically, I have all the frames in a single .PNG in a strip and the program calculates where the texture coordinates are based on whichever frame I'm supposed to be in.

    What program are you using and what are you using for graphics? I mean I'm using C++ and OpenGL and it's been 5 days that I've been working on the graphics part alone. I still need to add dilation and animation and then I'm finished. After you add graphics, the game you play is objects. I don't think objects are very hard to work with, it's only time consuming. My graphics need a lot of calculation for everything. I just finished adding in rotating support at different points.
     

    Dragonite Ernston

    I rival Lance's.
    149
    Posts
    14
    Years
    • Seen Jun 15, 2016
    Do you mean making the animations? Because programming wise, I think I have animation done but I just haven't fully optimized it. Basically, I have all the frames in a single .PNG in a strip and the program calculates where the texture coordinates are based on whichever frame I'm supposed to be in.

    I have it even worse on my end. I've only managed to do translations, and that's reading from a file.

    By animations, I mean actually moving the images drawn on the screen. The PNG animation stuff you're probably talking about is pretty easy.

    What program are you using and what are you using for graphics? I mean I'm using C++ and OpenGL and it's been 5 days that I've been working on the graphics part alone. I still need to add dilation and animation and then I'm finished. After you add graphics, the game you play is objects. I don't think objects are very hard to work with, it's only time consuming. My graphics need a lot of calculation for everything. I just finished adding in rotating support at different points.
    I've been using C++ and SDL, but it's starting to become painfully obvious that eventually I'm going to have to use OpenGL. I mean seriously, SDL doesn't have proper alpha blending?

    The game I'm playing is objects, alright. And scripting. That itself is a pain in the...umm...
     

    DaSpirit

    Mad Programmer
    240
    Posts
    16
    Years
  • I have it even worse on my end. I've only managed to do translations, and that's reading from a file.

    By animations, I mean actually moving the images drawn on the screen. The PNG animation stuff you're probably talking about is pretty easy.

    I've been using C++ and SDL, but it's starting to become painfully obvious that eventually I'm going to have to use OpenGL. I mean seriously, SDL doesn't have proper alpha blending?

    The game I'm playing is objects, alright. And scripting. That itself is a pain in the...umm...
    You mean butt? Using SDL by itself I think is pretty easy. Moving on to OpenGL is difficult. SDL is missing alpha blending and sprite rotations, which are the reasons why I left SDL so quick. The way I'm going to do objects are in way similar to Game Maker. I've been using Game Maker for 4 years and so I'm accustomed to it. So, all objects are based off of 1 class that has a Create() function which creates all variables for it, a Step() event, where the code that executes each frame is located and the Draw() event where it draws on my screen. So, my idea is that the objects will be looped through the step event and this is the basis of everything since every script is going to be in the step event. It's going to be so easy that I will be able to port Game Maker scripts into my engine with a few change in keywords as I have even recreated some Game Maker functions.

    Oh, with OpenGL, please know the things that EVERY tutorial teaches is outdated. Yeah, that whole thing with glBegin and glEnd, it looks super easy. It's deprecated, so these functions have to be avoided as they will be removed in the future version of OpenGL. You could still use those functions though, I just want you to know what risk you're taking. If you want to be more current with coding, search for Vertex Buffer Objects.

    On the side note, do most fan games here work on Macs or Linux? Because that's the cool thing working with OpenGL, that it's cross platform so with my engine I'm able to make games for pretty much every computer platform.
     

    Dragonite Ernston

    I rival Lance's.
    149
    Posts
    14
    Years
    • Seen Jun 15, 2016
    You mean butt? Using SDL by itself I think is pretty easy. Moving on to OpenGL is difficult. SDL is missing alpha blending and sprite rotations, which are the reasons why I left SDL so quick. The way I'm going to do objects are in way similar to Game Maker. I've been using Game Maker for 4 years and so I'm accustomed to it. So, all objects are based off of 1 class that has a Create() function which creates all variables for it, a Step() event, where the code that executes each frame is located and the Draw() event where it draws on my screen. So, my idea is that the objects will be looped through the step event and this is the basis of everything since every script is going to be in the step event. It's going to be so easy that I will be able to port Game Maker scripts into my engine with a few change in keywords as I have even recreated some Game Maker functions.

    Oh, I'll still be using SDL for event management, but OpenGL for a few graphics (such as, like you said, sprite rotations, and alpha blending.)

    Also, I'm probably going to use Lua for the scripting engine, once I figure out how to use it.

    On the side note, do most fan games here work on Macs or Linux? Because that's the cool thing working with OpenGL, that it's cross platform so with my engine I'm able to make games for pretty much every computer platform.

    Most of the fan games here are done with RPG Maker, so it's if and only if RPG Maker is supported on those systems.
     

    Spira

    Programmer for Pokemon Eternity
    131
    Posts
    14
    Years
    • Seen Mar 4, 2023
    That is what I ended up doing; integrated both SDL and OpenGL together. SDL was too slow for the amount of sprites I wanted to display but event management and stuff was still useful.
     

    bigplrbear

    C# programmer for the IAPL
    36
    Posts
    13
    Years
  • I think it's all just a matter of preference. Of course, if you don't know how to program, you'll use something like RPG Maker; but some people who DO know how to program still opt to use a spcialized tool simply because it's easier and you get results much faster. There are plenty of games (like Pokemon Special Evee edition) that are made with RPG Maker that are excellent.

    The project I'm working on is using C# and XNA, but not because we have something against RPG Maker- we just prefer to actually program the game from scratch over dragging & dropping and adding little tidbits of code where needed.

    It doesn't matter what you use to make the game- what matters are the results. Is the game challenging? Is it visually appealing? Is the gameplay solid? Is the game unique/does it stand out in some way? Is the music good? Those are the things that matter most to players, not what language/tool you made it with.
     

    shortymant

    _+Bow Down+_
    16
    Posts
    14
    Years
  • Maybe some attempted to try programming their own Pokemon game while learning C++. STL, pointers, WinSock, OOP, debugging either with call stacks or Assembly and related, etc., can really confuse a novice programmer. So in the beginning, finally realizing what they are getting themselves into, they give up. It may not be the language itself, but it could also be the structure of programming the game. Programming games, even with a library, is difficult due to the size of the project. The extensive amount of memorization, carefuly planning how you are designing the project and so forth is exhausting, especially when it's just one programmer. And also, what about sending data from the client too big for the server to handle? Controlling certain objects from the client which only the server should be doing? Creating and implementing a encryption algorithm to prevent cheaters from modifying your client files? Memory modification? And last, but not least, checking if a function was called outside the code segment? You have to also think about security, and carefully planning how to stop them little holes and flaws in your code. A lot of the people here can't handle that.

    And David, I know spacing, variable names, etc. are personal opinions, but I highly recommand looking up on Hungarian Notation. Such as;
    Code:
    class What
    {
    private:
        int m_nInteger; //n prefix for int
        char m_szChar; //sz prefix for char's
        string m_strString; //str prefix for strings
        bool m_bBoolean; //b prefix for booleans
        float m_fValue; //f prefix for floats
        //etc
     
    public:
       void DoIt( void );
    };

    The readibility level increases heavily, other programmers who look at your source or even yourself can clearly remember the data type used. But as I said, it's purely opinion.
     

    Dragonite Ernston

    I rival Lance's.
    149
    Posts
    14
    Years
    • Seen Jun 15, 2016
    Maybe some attempted to try programming their own Pokemon game while learning C++. STL, pointers, WinSock, OOP, debugging either with call stacks or Assembly and related, etc., can really confuse a novice programmer. So in the beginning, finally realizing what they are getting themselves into, they give up. It may not be the language itself, but it could also be the structure of programming the game. Programming games, even with a library, is difficult due to the size of the project.

    Well, it's also difficult when you're just using RPG Maker without the Pokémon Essentials package, but I digress.

    The extensive amount of memorization, carefuly planning how you are designing the project and so forth is exhausting, especially when it's just one programmer. And also, what about sending data from the client too big for the server to handle? Controlling certain objects from the client which only the server should be doing? Creating and implementing a encryption algorithm to prevent cheaters from modifying your client files?
    There are two modes of play - online and offline.

    Also, the encryption algorithm thing is kind of moot when the program is open-source... you'd have to load DLL's and everything.

    Memory modification? And last, but not least, checking if a function was called outside the code segment? You have to also think about security, and carefully planning how to stop them little holes and flaws in your code. A lot of the people here can't handle that.
    How is a function called outside the code segment, again...

    I'm not saying that everybody should be using a language like C++, Java, or what have you, but it seems like nobody here is using them.

    And David, I know spacing, variable names, etc. are personal opinions, but I highly recommend looking up on Hungarian Notation. Such as;
    Code:
    class What
    {
    private:
        int m_nInteger; //n prefix for int
        char m_szChar; //sz prefix for char's
        string m_strString; //str prefix for strings
        bool m_bBoolean; //b prefix for booleans
        float m_fValue; //f prefix for floats
        //etc
     
    public:
       void DoIt( void );
    };
    The readibility level increases heavily, other programmers who look at your source or even yourself can clearly remember the data type used. But as I said, it's purely opinion.

    It's also opinion on which type of Hungarian notation to use. Some people use the Microsoft version, which prefixes a three-letter lowercase string onto every variable - such as "int", "dbl", etc.

    Some people don't do the type stuff at all, instead opting to use mInteger where you used m_nInteger. Or, they might just use nInteger.

    Naming conventions are far from standardized.

    (Also, you're using the sz prefix wrongly - sz should only be used on char *, not char.)
     

    shortymant

    _+Bow Down+_
    16
    Posts
    14
    Years
  • How is a function called outside the code segment, again...

    When you find the address to a certain function from inside a debugger, and call that function from inside a dll. ("hacking")
    When that function is returned from your dll, it's returned outside the code segment. It's a decent form of security, can be bypassed quite easily if you don't implement a "heart beat" on the server as well as other checks on your application. But from what I've seen at hacking forums, a lot of people who go for hacking Pokemon games will have a hard time figuring out what caused them to get disconnected (as an example).

    Also, the encryption algorithm thing is kind of moot when the program is open-source... you'd have to load DLL's and everything.

    Not really. You can implement a file system inside the application. But that would to be to protect the external scripts inside your games folder. Obfuscation, as an example, would be best to protect your dll's or applications from people using a debugger to find out the tricks you've done to stop cheaters.

    I'm not saying that everybody should be using a language like C++, Java, or what have you, but it seems like nobody here is using them.

    That's what I am hoping to see this community achieve one day. (Pointing to signature) Me and a few old buddies have started this project quite a while ago, aiming to see others learn from it and use what we have made for everyone here. Although development has been really slow due to lives and discussing about running to OpenGL due to our new project member, we hope to see others benefit from it one day.

    It's also opinion on which type of Hungarian notation to use. Some people use the Microsoft version, which prefixes a three-letter lowercase string onto every variable - such as "int", "dbl", etc.

    Some people don't do the type stuff at all, instead opting to use mInteger where you used m_nInteger. Or, they might just use nInteger.

    Naming conventions are far from standardized.

    (Also, you're using the sz prefix wrongly - sz should only be used on char *, not char.)

    Of course it is just opinion, I follow HN to an extent. sz is either char or char* for me. :P And it's the same for unsigned long and DWORD, I would write them both differently based on my mood. ul prefix or dw prefix.
    Everyone is comfortable with their own style, and that's perfectly fine for me because it's all just opinion, but I have found it best to write it out the same way you would on a essay. But as I said above, I follow it to an extent. Meaning, it's my coding style to which I am accustomed to. And it's probably the same way to David.
     
    Last edited:

    Spira

    Programmer for Pokemon Eternity
    131
    Posts
    14
    Years
    • Seen Mar 4, 2023
    There really is little point for most people here to implement any anti-cheating functions in their clients. Almost anything can be gotten around these days with various tools. For offline games it would be a complete waste of time and resources for most developers here to try to stop a cheater. It only affects that specific user and honestly who really cares what someone does with their own game saves? It's their game experience, they can ruin it if they want, and it's not like we support any bugs they may generate by messing with stuff.

    The only real place it MAY matter is in an online game of sorts. However even then it's somewhat pointless to make excessive security. The only real issue would be some sort of bot interfacing with the server (which is an ongoing problem with most MMO's and such). Editing data in memory or adjusting the network data sent to the server will have virtually no impact on a game where the data is housed on the server. The only thing you may be able to do is exploit a vulnerability in some area the developers forgot to add checks. Any sort of algorithm for encryption is almost pointless (except to stop most noobs) since the decryption algorithm would have to be stored in the client and the decryption key over the network, both of which could be captured.
     

    Dragonite Ernston

    I rival Lance's.
    149
    Posts
    14
    Years
    • Seen Jun 15, 2016
    Not really. You can implement a file system inside the application. But that would to be to protect the external scripts inside your games folder. Obfuscation, as an example, would be best to protect your dll's or applications from people using a debugger to find out the tricks you've done to stop cheaters.

    Eh, that would work.

    Of course, it would eventually get worked around, but as a fix to stop some noobs... yeah, I don't see why it wouldn't work.
     
    Back
    Top