Eh, no need to bash on the guy- Bit of a broken record in an echo chamber when you guys keep feeding into one another like that.
Didn’t mean that as a anti-graal/anti-unixmad speach. “Graal” as the concept is fine, people making stuff for one another to enjoy in an easy hot-swappable environment is great, its just that it will always have a fairly large leech at the top of the chain aggressively feeding on volunteer work that most people will never observe.
One of the reasons I don’t offer my content back into Official is because I don’t want to empower this man or to have him claim my work as his property. The other reason, isn’t so much of being selfish as it is insecure, my own insecurity, I don’t make content like I used to so I gamble with the fear if I will ever be as productive or capable as I used to be, so I try holding onto what little scrap of memory I have. That is my own problem to contend with. I’m currently not above of letting go of my content for “Commercial Use” by people I don’t support, but within this community that is more or less “fair-use” and non-profit I’m more willing of the idea.
–
That rubbish aside, I don’t think he was explicitly asking for Bomber Arena’s code and stuff. He was just asking for help with template code.
A lot of people will rely on putnpc variants- These are serverside entities but will have significant flaws too in terms of ‘responsiveness’ when you place a bomb and it bogging down the server’s overhead. Bomber Arena’s approach was to have everything artificial and as clientside as possible, all bombs and explosions in the levels are all rendered by the same NPC. The sharing of data (bomb placements/item pickups/obstacles) are handled by abusing “shoot” (and by proxy triggeractions) to send an artificial packet to every other player of an event happening, there is a 0,05 second delay minimum due to the event calling on the next frame. I get around this delay for the “acting player” placing bombs by injecting bomb data directly into the same array I hold all object data into, then telling that user to ignore their own delayed “packet”.
Graal runs at 20FPS (ideally, but we know it runs like crap) which gives a hard limit in terms of player movement speeds, a player cannot move “10% faster” while remaining to the grid, well, they can but ultimately its pointless because it would still take them the same amount of time to reach the same destination given the grid snapping. The other main reasons I didn’t add things like bomb kicking and throwing (besides the 4kb code limit) was due to how heavily clientsided the game is, for example, Who is to say when a rolling bomb hits a dynamic obstacle like a player or another bomb, maybe an explosion? The one who kicked it? Maybe allow it to be controlled by each person individually? But then you get things like bombs stopping or exploding unexpectedly due to desyncs. There will always be a lag delay between all players, and given Graal is notorious for running under 20 frames a second, this means game logic runs slower for some players than others, means a 3 second delay until a bomb explodes can actually be 3.6 seconds. So I decided to not have power-ups based on “mobility” of players or bombs given how easily the game could desync between players. (Ex: Player B kicks away a bomb Player A already seen explode. As such Player A now sees a ‘duped’ bomb rolling out of an explosion and past an obstacle the initial bomb already removed for Player A. This breaks the game flow.)
Have fun figuring out what I was too lazy to deal with back then! Anywho its getting late and its time for me to head back into obscurity. Do try and not to be a dick to everyone, especially if its naivety. Also no one needs to hear Unixmad preaching right off the bat, you do that crap ‘after’ they’re indoctrinated. See you guys next year? Haha.