Shinobi Open Source

by Spunky_Girl
Official hub of the open source running project I have going.
Forum: Shinobi Open Source Forums
GNU GPL 3.0: license
Download: here

I think it's time BYOND realizes it's downfalls as a community and how greedy it is for hoarding its resources - primarily pixel art. I'm a pretty big supporter of Open Source, and have yet to see this concept take root on BYOND where many games are doing it. I sort of implemented this concept a long time ago in one of my past projects (from 2009 I think?) where I allowed my player-base to donate code/icons to add to the content of the game they enjoyed playing. And they greatly appreciated it. Now, I want to implement this even further by being more open about it to the public.

Yes, this game has a very specific theme, since it's something I am very familiar with, and already have a lot of pixel art for (I am not a pixel artist whatsoever, and like I stated earlier, they like to hoard their work and want absurd amounts of payment for it). AT NO POINT WILL P-BAGS BE INCORPORATED. I HATE THAT CRAP WITH A PASSION. It's too damn easy to add experience gain via skill-usage and questing to even consider p-bags as a viable method of experience-gain. Get that filth out of your mind right now.

Most of the pixel art in this project I have put together from multitudes of different sources I've happened upon and probably edited/updated to fit into the project. Some of the pixel art was donated to me to use in one of my past projects. And a few individual icons here and there, I had personally created.

All of the code, I have written myself so far, with the exclusion being anything within the "Other Sources" folder, which contains things like DMI Fonts Plus by Lummox JR and F_damage by Flick. No, there's little to no comments right now.

I will keep a changelog of the official releases within the project, as this isn't just a small demo or library. A lot can change from build to build and version to version.

This game and its source are subject to the GNU General Public License 3.0.
Copyright (C) 2017 Spunky_Girl
v0.1.0 build 002

I added/modified a bunch compared to the initial release. A more detailed changelog now exists within the game via the changelog.txt file inside the Savefiles/Logs folders. However, I'd like to talk a little about what I have changed.

While further developing this game, I happened upon changing the "condition system" to a more broad "effects system" to encompass "boons" and not just negative conditions a player might experience. Still, though, there's just two types of effects - tickers and timers.

I added a basic chat system. No different channels yet. Just an all-chat or world-chat or whatever you want to call it to allow people to talk to one another.

I added in most of the administrative system, with "owner" specific verbs not yet being added. It took some fairly tedious testing to make sure all of the administrative verbs for the two most common levels of admin worked. I had to figure out how to handle muting player chats where saving/loading doesn't absolutely break muted chats. I opted into using a savefile in tandem with a global list, alongside a client-specific variable to keep track of when a player can chat again. Basically, the game will save this muted list, and whenever a player saves, their remaining mute duration gets calculated into the saved list, so that when they load, the remainder is re-applied upon reconnecting to the game. And this doesn't get broken if the world.time gets reset via rebooting, by the way.

The next thing is altering the way the skills are displayed in the "skill book." I moved away from having a category per aspect of the skill (skill, cooldown, range, cost, etc), and into just having 2 columns - skill and its overall description. This allows the grid control to actually be able to show all of the information in a more realistic manner, without any of it being cut off because of the small-ish size of the game's window. I also added descriptions to each of the already existing skills.

Some of the login/creation process I had to fine-tune to avoid bugging out when players reconnect. I also added in control_freak because personally, I dislike people altering the interface to get a leg up on visibility, even though the actual view size is controlled through the code. I prefer to keep everyone on a level playing field. That being said, I do like being able to customize my hotkeys in the games I play, so eventually I'd like to add a custom hotkey customization to it down the road.

Plans for build 003
What I plan on doing now, is adding a simple questing system, adding a simple NPC AI for enemies, and adding more content (villages, classes, enemies, etc) to make the it more playable for you guys to have fun with.
v0.1.0 build 003

Again, I feel like I was able to get a bunch accomplished between this build and the last (taking the holiday into account), and would like to talk about some of what I did.

Enemy AI. I hate doing this aspect. I only put in, in essence, two responses for the AI to even bother with for the time being. They will either attack on sight, or retaliate from being attacked. Other than that, they have an aggro range before being triggered, and a leash range to untrigger and return to whatever they were doing. I also made it so the AI will be only active while players are in the area. If the last remaining player leaves a z-level, every AI on that z-level will become inactive and won't do anything. If a player enters a z-level, it will activate any and all AI on that z-level if they aren't active already.

You may notice that NPCs will all be generated with a random hair style and/or gender and skin tone. It adds overhead when the world is created because of how I implemented that, but it shouldn't add too much overhead as long as a million NPC mobs don't have to be generated during world/New().

Adding a simplistic questing system was trivial. Adding actual quest content is tedious. I only put in one quest for now just to demonstrate that it works. You can look at an "active quest log" by using the button on the main window. Hovering over a quest in the UI will display its information (objective and such). Double-clicking a quest in the UI will ask to abandon it.

I did, in fact, finish adding the administrative verbs. For now, the owner's Create verb is limited to only being able to edit text/number variables of any existing object in the game. I did have to add a couple more verbs along the way than I originally planned for, though. But other than that, I had a lovely time (sarcasm) testing to make sure they all worked the way I intended them to.

You may have also noticed that the one village that does exist right now, has a lot more scenery to it. You're welcome. Putting multi-tiled icons back together (the trees) was slightly annoying, as well as determining bounding boxes for them.

Plans for build 004
More villages, classes, enemies, & quests. This gets the game pretty close to an alpha test environment where people can have their buddies run around and do stuff to receive feedback on. As of right now, it looks like build 005 might just become the actual alpha phase where things get tweaked for balancing in an actual open beta. Build 006 would go under the guise of something like "v1.0 beta 1" or whatever.
v0.1.0 build 004

I've attempted to ACTUALLY make the project open source by applying the GNU General Public License within the project. I'm not familiar with how to utilize licenses, so forgive me if it's not 100% correctly done yet.

I incorporated the invisibility variable on just about everything so that in the future, people can make skills or whatever that mess with peoples' visibility.

Once again, I revamped the effects system. It should be more universal and versatile. Should be able to create certain types of dynamic effects on the fly, rather than having to hard-code each and every effect (timer event effects have to be hard-coded for now).

Sadly, I didn't get around to adding more enemies or quests, but I did add a little more content in the way of the map. I added 3 more of the 5 starting villages. After the fifth is added, I'll add all the in-between areas where all the fun takes place. I want to implement a raid-boss style enemy or two that would require cooperation of many players in order to take down. But that's deep in the future. As of right now, I just need to create the mapping.

I also got around to adding a couple more classes into the game. Let me tell you - making shit up that makes sense in the way of skills, isn't that easy when trying to find a practical way of implementing it. I've been trying to keep a minimum of 8 skills per class (to fill up the skillbar, basically), and that's been going fairly well at least. Even though there's going to be universal skills as well (skills everyone can acquire no matter what class they are), I wanted diversity so players can at least come up with their own builds.

Some "quality of life" enhancements I did...
- I added a controls UI so you guys know the default controls without having to look at the .dmf file.
- Login screen now loads a preview of what your character looks like when you connect to the game and have some saved progress (on a per slot basis of course).
- You can spit out a list of connected players through the Commands menu (also provides a player count).
- The .zip file now ACTUALLY includes the changelog.txt and MotD.txt, where before it did not.
- I added some talk options to the Academy Instructor so newer players can get a little information.
- Dying will dump the effects list and heal a player or delete/respawn an NPC.
You say you've yet to see any open source games on this site yet you didn't see SS13. The biggest and by far most well developed game on this site. I'd imagine you missed a ton of open source projects if you managed to miss the single biggest example of it on BYOND.
In response to BLazerules
It's okay. I'll educate you.

Space Station 13, as it states on its website, is a "community developed" game. It was the first BYOND game to be accepted into the general population outside of BYOND (via being greenlighted by Steam). It wasn't originally open-source at all. They hit a huge development snag, and then decided to make it open source.

I'm making mine open-source from the get-go.
That doesn't change the fact that it is open source though. Or do open source games not count u less they fit some weird criteria?
In response to BLazerules
I simply read what their website says. So unless community development took on another meaning, I'm going to go by what they call themselves.
In response to Spunky_Girl
Its website
Their website
Implying SS13 is a single entity ruled by a singular group or person. If it was it would be Exadv1. Who hasn't been involved with SS13 for years upon years.

What they mean by community developed is that its open source and the community makes features for it. This has been the case since what, 2006? With the majority of servers being 100% open source using AGPL 3.0. I am honestly not sure how you missed that but I guess your research didn't really go all that deep beyond some website that doesn't accurately represent what is going. You'd have honestly seen this if you did digging beyond googling SS13 and pressing on the first link. Even googling "Space Station 13 Source" links you to the TG branches source code.

Not to mention shouldn't be taken at face value since there is no real "main" server or anyone that speaks for everyone. Hence why saying "their website" is 100% wrong since well... who owns SS13? The answer is nobody (Exadv1 hasn't cared since 2006 or something). Who represents SS13? Nobody. Each server represents itself so it is just impossible to look at a website and claim it is "SS13's" because there is just no such thing. Thought this was common knowledge but I guess the BYOND community doesn't really care to look into SS13 for whatever reason.

Really confusing since the #1 thing anyone playing SS13 knows is that the majority of servers are Open Source. And some servers may as well be different games entirely. Its basically the reason the game is as popular and well developed as it is.
Since this is seemingly turning into more of a personal attack, I'm going to ask that you take your personal complaints to a more personal medium (such as the BYOND pager). This thread isn't intended for conversations to happen; just for passing out information about the project.

I do appreciate your initial post inquiring about another game that you're obviously passionate about.
In case you missed the memo... 99% of byond is open source since there's only what... A dozen or two "original" games anymore... A vast majority of byond games are ripped sources no matter how you look at it. Weather it's stolen or given up by the original programmer, the fact is... Almost all of byond is open source and you can't really use SS13 as a good example of this. Sure it's open source, but so what? Even Tom admitted that it's nothing short of a miracle that source even compiles to begin with and after seeing it myself... I'm highly inclined to agree...


Anyways... Thanks for the release Spunky_Girl. Kudos on actually doing something for the community instead of just slamming everything like everyone else does.