Best method of creating a game maker?

BlitzMax Forums/BlitzMax Beginners Area/Best method of creating a game maker?

Jaquio1319(Posted 2007) [#1]
I was wondering what your input is on the best method(s) for creating a 2D game maker in BM. What do you think I should use for scripting? I am not sure if using the built in Lua module would be the best idea... but you may think it is. And how do you think I should go about forming the "final product"? I have no idea how to create my own .exe files with BM (or any language for that matter). I was thinking of just taking an already existing .exe then adding scripts into the .exe itself. Kind of like how incbin works, I just don't know how I should approach the problem. Any other ideas and topics you can come up with would be appreciated.


H&K(Posted 2007) [#2]
I know the very basics of programming, such as variables, functions, and simple stuff like that. But none of this "type" stuff... and most of the other stuff there is.


I was wondering what your input is on the best method(s) for creating a 2D game maker in BM.......
I just don't know how I should approach the problem. Any other ideas and topics you can come up with would be appreciated


The first thing you should do is write a game. I know that sounds glib, but if you can write a game, then all the types/Classes that you write can become the generic base for your engine. Make all these classes as general as possible.


GfK(Posted 2007) [#3]
I have no idea how to create my own .exe files with BM
You press F5.

Given that you (up til 3 seconds ago) don't know how to create EXEs, and don't know what Types are (according to H&K's quote wherever he pulled it from), I'd say you need to do something much, much simpler first.


Who was John Galt?(Posted 2007) [#4]
If I understand correctly, you want to write a game-maker that can compile exes?

If so, there are two methods:
1. Have it write Blitz code and include the Blitz compiler. This rules out the option of selling or distributing the product in any way.

2. Write your own compiler - this is major work and well beyond your ability at the mo.

Your best bet is create a scripted engine, like you mention, and have a fixed exe that runs the scripts.


sswift(Posted 2007) [#5]
If you only know the basics, then you'd be far better off making a game than trying to make a game making tool.

It's a ton of work just making a game, nevermind making a game engine which is sophisticated enough to run any number of different types of game.


Yan(Posted 2007) [#6]
Why don't you create a nice MMORPG instead?


ImaginaryHuman(Posted 2007) [#7]
He's not saying that he doesn't know how to create an executable from the IDE, he's saying he doesn't know how, within his game-maker application, he can let somebody put together a game and then have his application produce an executable version of that game at runtime.

Jaquio1319, I certainly recommend getting better aquainted with using types and method and all that stuff. It really does help to organize things. It's a somewhat different mindset than procedural programming but in many cases it helps you keep things where they should be.

I also think that just because you might be somewhat new to some of the concepts in BlitzMax, that doesn't mean you deserve to be cut down or used as a skapegoat for other people's aggression. If you believe you can do it and it's your dream, who is anyone to try stopping you.

I agree with the idea that you may be best off having a script engine and not try to produce your own executables, unless you are looking to a LOT of extra very complicated and low-level work. You could create a stripped down `runtime module` which is your basic engine but with no built-in interfaces etc, then let the game creators distribute that runtime app with their game resources, and allow them to rename it and give it a different icon. Then the customer will think they're running a custom executable program. What does it matter that you generate an exe yourself when all it basically needs to do is load in the game resources and `play` the scripts. That's how AMOS Basic originally did it before it had its own compiler - the RAMOS (runtime amos) was a little program with all the functionality, script engine, graphics, sound etc, that would load in the script sourcecode and interpret it at runtime. It sounds like this is along the lines of what you are planning to do and it probably the best option. I don't really think you can easily use incbin because you have to either then compile the app with the blitzmax compiler or hack into a previously created exe file and modify it correctly, not easy to do.

What kind of games do you think your editor etc will be able to create and to what degree of advancement? Will it be for any type of 2d game or a certain genre?


Gabriel(Posted 2007) [#8]
I also think that just because you might be somewhat new to some of the concepts in BlitzMax, that doesn't mean you deserve to be cut down or used as a skapegoat for other people's aggression. If you believe you can do it and it's your dream, who is anyone to try stopping you.

I see this time and again. Telling someone the truth when they don't want to hear it isn't cutting someone down or using them as a skapegoat for anyone's aggression, it's good advice.

I actually think telling someone they should do whatever they want to do regardless if they have the experience for it or not is far more damaging in the long run. You may think you're being nice and encouraging, but if the person you're advising really isn't up to the job (YET) - and everything he's posted indicates as much - then all he's going to do is fail, get disheartened and throw it in the bin.

If he follows the advice given by H&K, GFK, and SSwift, he stands a good chance of getting the skills and experience he needs to make what he wants to make in the end. No one's suggesting he's stupid, or lacking in ability, because we all know that programming isn't particularly difficult. It's just a case of practice, starting slowly, developing your skills, increasing your confidence and you're there.

So yes, he can do it. But if he tries to do it now, without starting small and developing his skills, his chances are vastly smaller.


Barbapapa(Posted 2007) [#9]
well I would use LUA, why think of another new script language one has to learn and cannot use for anything else. You wouldn't have to bother about documentation and so on. Have a look at novalshell. That's a 2D game creation system with a LUA scrypting system.


ImaginaryHuman(Posted 2007) [#10]
I was referring to Yan's comment which was a sarcastic dig.

I also don't think any of us are really able to guage this person's programming ability just based on a few things he's said and it's not up to us to decide for him whether he does the project or not. If there is harm done it's through his own decision.


H&K(Posted 2007) [#11]
it's not up to us to decide for him whether he does the project or not
True, but he asked our advice. And my advice is to write the sort of gmae that you want your game engine to be able to do. This is not me demeaning anyones abilty. Thats how I would do it. And is the way I would advise.


Gabriel(Posted 2007) [#12]
I was referring to Yan's comment which was a sarcastic dig.

Fair enough, that one is more or less as you described.

I also don't think any of us are really able to guage this person's programming ability just based on a few things he's said

We're not really having to make any fine judgement calls here, we're talking chasms. He describes himself as a new noob, and says he knows the very basics of programming. That alone tells me he's not ready to make a gamemaker. Hell, I'm not sure I would be ready to make a gamemaker.

it's not up to us to decide for him whether he does the project or not. If there is harm done it's through his own decision.

If there's harm done - and it's because he asked for good advice and didn't get it - I'd disagree. If he gets good advice and ignores it, then that is entirely his own decision, as it should be.

Incidentally, I'd agree with you wholeheartedly if he replied that he intends to ignore the advice ( and he may do ) and then people came back to argue with him that he was wrong. If someone ignores your advice, it is - as you point out - their decision to make.


bradford6(Posted 2007) [#13]
start small. the keys are Doing your best and finishing what you start.

start ridiculously small and finish what you start.

perhaps start with the goal of
" I want to control a green square around the screen"

then once you are satisfied with the results

"I want my green square to accelerate and slow down "
or
"I want my green square to jump over the blue squares"

that kind of thing. You will learn all sorts of wonderful lessons by finishing tiny demos that will prepare you for larger projects. Even the simplest 'game' is composed of many discrete parts working together.


Jaquio1319(Posted 2007) [#14]
I would first like to comment on my previous topic. Yes I said I didnt know anything about types, but BM is different. I created another topic asking if it would be possible to include a keyword called class. I am use to calling them classes. B3D and BP types were not anything like C# classes. Now that I know BM types are basically classes, I understand them. I have written basic "games" that let you control a ship and shoot blue blocks that explode. Wasnt hard once I learned types are simple classes.

As for the game maker, yes, when I said I dont know how to create exe's I was saying I dont know how to get my program to make them. Can I use the built in BM commands? If so, which set? (not specifics... id rather fiddle with certain sections of commands and learn myself).

Or how would I "insert" resources into an already made .exe? Just like how incbin works, but using my own custom code that just copys the engine exe, renames it, then inserts files.

What kind of games do you think your editor etc will be able to create and to what degree of advancement? Will it be for any type of 2d game or a certain genre?


Any genre... but I was going to make a simple side scroller "Mario" type game maker first. Just to learn how things are done... but then start from scratch again and make the real thing.

If he gets good advice and ignores it, then that is entirely his own decision, as it should be.


Like I have been trying to imply, I am not new to game making. I have used game maker and DBP (which i only stopped using because it didnt have OOP and was fairly slow compared to BM). And I didnt know types were just like C# classes... I havent made a game some one would like to play once in a while, but I have made some basic engines to play with. I know game concept well... but not really game maker concept. I never implemented a scripting engine or created my own .exe's before.


H&K(Posted 2007) [#15]
I said I didnt know anything about types

No what you said was "I know the very basics of programing.

I wouldnt have bothered defending it if I had been you. Its not important. Anyway, imagine you have your mario game, and the first thing it does is load in the data for the map (IE the Graphics and possitions of all the blocks), Then it loads in the Graphics for Mario. Then it loads in the KeyBinding then it loads.... etc.

Well, if you published this game, someone could "MOD" it, by changing the graphics or the enemies movement paths. So all you do is write the MOD tools for the game. Then instead of releaseing the game with MOD tools. You release the MOD Tools as a game creator and the Game as a demo.

Like I have been trying to imply, I am not new to game making
Wel I thought you were trying to imply that you were new to game making. Your very first "Im a New Noob" post definatly implied that. Oh UM


ImaginaryHuman(Posted 2007) [#16]
lol

So anyway. I don't think there's really a good way to modify an existing exe that has incbin's in it. When you compile the app it has to know where the incbin's are and how big they are. I very much doubt there is anything variable about that, and you wouldn't know where in the exe file the incbin data is stored - if it's not at the end, you can't really overwrite it will a different amount of data or you'll go past the buffer and overwrite some code or something. Also trying to mess with exe files has more involved, things like checksums and reference tables and all that jazz. I would go with having an executable runtime module which is basically the engine, then like H&K said have resources that you load in that the user can edit. You can let them also edit scripts and if the script language/interface is detailed enough and gives enough options it will let them basically rewire your engine to make it do different things.

Making an exe you're going to have to learn about how they are structured and how things are allocated and all that complicated low-level o/s stuff.

As to letting the user make the game, you will need editors or some kind which automate a lot of stuff and let the user create quick results without much work.