Need some help with ProjectABE

So I’ve got a slight problem with ProjectABE. Some time ago @SamSibbens released some code for his unfinished game (the hack’n’slash game). I thought about programming it further as programming myself is the best way of learning and I liked his idea a lot. Now I imported it to ProjectABE and I get a huge error message in the Log-Part.

The error message:

(I hope it’s visible…)

Advice would be very helpful since my programming knowlede only consists of Java.

Do you have a link to the actual code at all?

I can guess from the error messages what the problem is: the code is misusing static and thus it’s causing linker errors, but without seeing the code I couldn’t actually specify which statics need removing or whether that’s only half the problem.

Yes, here it is. Thanks for helping me out!

I’d recommend using the ArduinoIDE for development. ProjectABE’s built in code editing is somewhat limited and it looks like it’s doing something weird with the cpp/h files. When using ArduinoIDE it seems to compile perfectly fine as is without any errors or warnings.

2 Likes

When compiling on the Arduino IDE there are some definite warnings, but it definitely compiles, so my advice would be similar to @tuxinator2009’s - try using the Arduino IDE (or an alternative editor with an Arduino plugin like VSCode/VSCodium) instead.

I’d usually advise that anyway, but if ProjectABE isn’t actually compiling something that compiles fine on the Arduino IDE that makes it a tangible solution rather than just good advice.

(It’s possible that fixing the warnings would fix compiling on ProjectABE too, but I don’t think that would be a good enough reason to stick to ProjectABE.)


I’d be happy to make a PR to fix the warnings,
but I’d need to ask @SamSibbens about the intended behaviour in some places.

Also as it doesn’t have a licence, technically none of us actually have permission to modify it anyway, so really we need to contact @SamSibbens to ask if he’ll put a licence on it so others can make use of it.

1 Like

I wouldn’t mind putting some type of “do anything you want, even commercially” license with simply an attribution/credits requirement. Alternatively, a “do anything you want, even commercially” license on everything except the sprites. One or the other (or both? One license for the sprites, one for the code?)

If you have one or two licenses you would recommend I’m all ears, it’s been a while since I read about licenses. I’m in Canada if that makes any difference

I’d be very happy to answer any questions - I haven’t done much programming in a while but I get email notifications and I’ll reply to anything that is needed

I’m not making any promises but I might even want to work on this as a team if you’d be interested. I still have this project in the back on my mind, but I don’t know when I would actually work on it again if it was on my own. Projects are usually more fun as a team (if you want to go at it on your own that’s fine with me too, I just need to find the right license to put on it)

I’m not making any promises but I might even want to work on this as a team if you’d be interested. I still have this project in the back on my mind, but I don’t know when I would actually work on it again if it was on my own. Projects are usually more fun as a team (if you want to go at it on your own that’s fine with me too, I just need to find the right license to put on it)

I would be interested but it wouldn’t be possible for the next year at least. I’ll do my highscool graduation (here in Germany it’s actually the “Gymnasium”. I think high school is the best comparison to that) next year.

MIT or BSD for the code.

One of the Creative Commons licences for the graphics.

You can use this page to add a licence to your GitHub repository but you may have to edit it afterwards to include a CC licence for the graphics.

1 Like

I did some readings based on your recommendations and ended up with this, hopefully that works:

Licenses.txt
There is one license for the sprites or images of this project which are located in the game_prototype/Images.h file.
Its content falls under this license and this license only: https://creativecommons.org/licenses/by-nc/4.0/legalcode

...................................................................................................

For everything other than the Images.h file, the license below applies:

...................................................................................................

MIT License

Copyright (c) 2020 TheProgrammer163

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

Here’s the link: https://github.com/TheProgrammer163/arduboy/blob/master/game_prototype/Licenses.txt

1 Like

Sounds like a job for MIT or BSD 3-Clause.

(Or Apache 2.0 if you also want people to “cause any modified files to carry prominent notices stating that You changed the files” - i.e. leave a comment saying // Edited by so-and-so.)

That’s also doable.
Creative Commons licences are more suited for sprites.
Wikipedia explains the general idea quite well here.

Generally country of origin makes little difference in regards to licences.
Creative Commons licences are specifically written to be as universal as possible.

(Part of the reason CC0 even exists is because some countries make it really hard to put things into the public domain, or don’t even have a concept of ‘public domain’.)

Most software licences aren’t quite as meticulous,
but should probably work the same everywhere.

I think most of the warnings were probably related to Entity::getSprite so there may not be as much of an issue as I was first expecting.

The only real issue would be how to handle the entity type being EntityType::None.

1 Like

I think since I was planning on simply using switch statements for entity functions, and to use a fixed array for the entities in the game, that I was planning on using “none” to represent empty/available array slots and to not draw or update entities that are of type ‘none’.

I think you started your comment before I posted mine, so in case you missed it, I ended up with these licenses (MIT for the code and a Creative Commons, which ends up being just like you suggested)

I will now return to hibernation indefinitely. See y’all!

1 Like

The issue is more what getSprite should return for EntityType::None.
E.g. should it be a nullptr (which I think would probably crash the Arduboy2/Sprites rendering functions) or a valid blank image/placeholder.

Upon looking again, getSprite isn’t actually used anyway so the easiest solution is to just remove it rather than trying to fix it.

With that in mind, I’ve made a PR that fixes all the outstanding warnings:

Yes, that seems likely.
(Also I was replying in a hurry so I don’t think I bothered to read any of the other comments after the one I was replying to.)

Typically I’d recommend:

  • Having an image folder to keep the raw .png/.bmp images in
  • Putting the CC licence text in that folder
  • Making note of the CC licence in the generated header folder

But it’s not a major issue in this case since this is an unfinished game.


You may resume ‘hibernating’ now.

1 Like