I like the idea of loft and lounge better the more I think about it to be honest.
@BigBadHodad donât you want to try to program this? When I think about it, a project with interacting agents could be a learner-friendly project.
Youâd simply start by drawing the house on the screen â super simple. There would be no camera movement (or maybe only extremely simple vertical movement), thatâs already a win. Then youâd proceed to draw placeholder people in that house. You could skip input/output handling altogether at this stage, because the persons would be doing stuff autonomously â another huge win (IO handling in my view adds a lot of friction and bloat, itâs sooo much simpler without it). Then youâd start animating them, make them move across the floors, use doors, say things â these are all more or less independent functionalities that wouldnât make the code complex. Each action would be one method of the person class. Every day you could add one action. Only at the end of the project you could add some IO, menus, sound and eye candies.
Iâd love to but I have no confidence because I know nothing lol. If I had a coach then possibly.
At worst youâll end up with some kind of Pokitto screensaver/demo/proof of concept and learning a thing or two, so nothing to lose I guess Iâll be here to help, as well as others on this forum. @Pharap always helps people get the code written, as seen above.
Cool thank you, I need to make the âhouseâ next,
hmm I need to find another solution, when I try to make the âHouseâ in piskel it works fine till I zoom in to make the rooms and it loses the rest of the image
I try to make it in photoshop and no dice, it wonât give me the clean lines I need it keeps making them that blurry line thing photoshop does now.
piskel works but when I zoom in it loses everything no in frame
the house so far.
Reminds me my younger daughterâs doll house. Good job so far!
im not sure how to make the record player look, and it still needs a computer in the top floor green area
Still need to add a phone, and bookshelves in computer office and bottom floor by the chair.
Iâd honestly like to see what it looked like on a pokitto to see what I can do to improve it, I may have to go for the flat look in the zx spectrum version to make it look right on pokitto
As an added bonus, theyâre shorter so they use a bit less screen space :P
Iâd swap the kitchen and the lounge though, usually stairs and front doors are nearer the lounge.
+1 for âspidersâ
Honestly I wouldnât call the AI part âbeginner friendlyâ, state machines and decision trees are both relatively complicated.
I think the programming side of this would be beyond what @BigBadHodad is capable of at the moment.
I think heâd need to start smaller for his first project.
Like maybe attempting that minigame idea again.
It depends how you handle it.
If you abstract it away with some sort of command system then you only need to put the input in one area and you can forget about it the rest of the time - instead you end up writing your code to respond to requests to perform particular actions.
That sounds like a very quick way to end up with the dreaded âgod objectâ issue.
I think it would be better if doors knew how to open and close, and the state machine/decision tree node handles when the character opens the door.
(From the code point of view, the code checks if the character is close enough to the door and the door opens magically, without ever interacting with the character object - the door doesnât know the character exists, the character doesnât know the door exists, the flow control mechanism is aware of both.)
Yup, Iâm always ready to offer advice to anyone who asks.
(I usually find the designing and problem solving more fun than the actual writing.)
Itâs already looking very good.
@Pharap â doing it the proper way will make most simple projects difficult I know we argue about this all the time, but let me express my opinion again. For example:
^ This is of course how you should do it, but the fact alone that the person has to learn what command pattern is (and all the related OOP concepts along with it) is the friction I am talking about. I believe itâs okay to skip it for now. Itâs an advanced topic that can wait for later.
The same goes for the god object â of course your program will be better moddable, reusable and safer if you use all the proper patterns. But I donât think thatâs the goal here. Iâd personally go even without OOP here, but I think doing the âmy program is all one objectâ is a nice middle way that can teach about what a class is, without requiring to learn too many things at once.
The AI â I wouldnât even talk about state machines, again itâs not a beginner stuff. Simply do the AI with ifelses and state variables â for advanced programmers itâs the wrong way, but doing it the wrong way in the beginning is important to realize why itâs important to use the patterns.
That was basically my idea for this project â make mistakes and learn along the way. You canât learn all at once â like children are first taught you canât substract a bigger number from a smaller number, and only later theyâre told you actually can â I think itâs a proper way of learning, isnât it?
On the other hand though the other project would probably have a better chance to be finished which is very important for motivation, so actually if @BigBadHodad wanted to do it first, Iâd support that decision.
The house graphics is too nice though, it has to be made into a game sooner or later now. Very nice cozy house
Thereâs lots of different ways a command system can be done.
It doesnât have to involve inheritance and classes, it can be done by just having an enum class
for the different actions and each kind of action being a different value.
enum class Action
{
Jump, RunRight, RunLeft,
};
The idea behind it is more important than the specific execution.
That depends what you mean by âOOPâ.
Itâs one thing to go without inheritance and virtual methods,
itâs an entirely different things to not have methods on your objects or to go without classes entirely.
OOP has many different schools of thought after all, many of which are in disagreement with each other.
For example, thereâs debate over whether prototype-based systems count as object orientation because they donât feature classes.
They say the 4 pillars of OOP are abstraction, encapsulation, inheritance and polymorphism,
but if I write a class that uses none of those 4 pillars, is it still OOP?
Some would say yes, some would say no.
To me the answer doesnât matter,
what matters are the justifications for writing a class that way - the practical benefits, not the puritanical arguments over categorisation.
I donât even think of the way I write programs as OOP, I just think of it as programming with objects and classes.
I sometimes get the impression that you think I adhere to certain techniques for puritanical reasons,
but I assure you that whenever I make a design decision it is for purely practical reasons.
When I think about design, I think about the benefits and drawbacks of each approach, not whether something does what the buzzword-obsessed dogmatists think it should do.
Itâs the exact same approach I apply to selecting a licence - I pick what best achieves what I want to achieve, I donât follow dogmas.
Even if youâre just starting out, âmy program is all one objectâ is not the way to do things because it entirely misses the point of having objects in the first place.
The fundamental point of objects is twofold:
- To reduce repetition by creating a pattern that can be replicated (i.e. instantiating a class)
- To represent a concept with a single object instead of having the parts of that concept spread around different parts of the code base
Hence:
class Point
{
public:
float x;
float y;
public:
Point(void) = default;
Point(float x, float y) : x(x), y(y) {}
};
// An array of points
Point points[];
Instead of:
// Separate arrays of x and y values
float xs[];
float ys[];
Like I say, I donât think this is really the best game for a beginner to be attempting anyway.
Though I donât think state machines are that complicated.
State machines are one of the most fundamental building blocks of games, they govern the transition from titlescreen to gameplay.
Strictly speaking even an enum class
oriented switch statement is a state machine.
I donât like lying to children because it can cause irreversible damage in some cases, and unlearning the lies can be hard.
I prefer to say âactually you can subtract a larger number from a smaller number, but donât worry about that for the moment, instead just focus on this and Iâll explain the rest laterâ.
(Perhaps I just have the opposite of compulsive lying?)
Thatâs why I tried to help.
I even went out of my way to make the first example very simple in the hopes it would be easier for @BigBadHodad to get to grips with.
I used no classes or structs, just functions, enumerations and fundamental types.
That I agree with.
(Iâm still too preocupied to commit to anything more than advice giving though.)
On the AI, I figure it could check every 3-5 minutes to see which room it was in and randomly do something else kinda like the needs function every half hour
Iâll finish up the house tonight i left the top black in case it needs scrolling text and for the spiders
After youâve got the art done, Iâd suggest you start reading through some programming tutorials and start making some simple Pokitto programs to get started.
Doing art first and code second is a trap that often leads to unfinished projects.
Doing code first and art second is a better approach, as @Hanskiâs Pokitto Grand Prix demonstrates - thereâs still some graphics missing (partly my fault, I didnât get round to making that tree) but the functionality is there, and thatâs more important.
Projects always seem simple when theyâre just a collection of thoughts in your head and you have a vague idea of how everything should work, but the devil is in the detail.
When you come to try to turn those vague ideas into code they suddenly seem a lot more difficult to implement.
(Also 5 minutes and half hours seem like large time scales. I suspect 1-2 minutes and 5-10 minutes are more likely time scales, if not less.)
I think starting with code versus art depends â I mostly start with art and when itâs good, I feel motivated to put it in good use (then again though, many of my projects stay unfinished). Also big projects like The Elder Scrolls start with concept art, from what Iâve seen in some documentaries. But many people like the placeholder approach better and thatâs fine.
But now Iâm inclined to agree @BigBadHodad should start with something really, really simple, just to learn the workflow. Perhaps a game completely without any hand made art would be best. Simply use some geometrical shapes, text and so on.
I agree on starting with something easier. Personally I am more using the âwhat ifâ approach. Which is starting with display in something on screen, anything. And then ask my self what if ⌠Think of just 1 thing and try to do it. Which means that you will learn 1 thing at a time. My first ever game started as a cute heart displayed on the screen for my wife⌠And then turned into Love Rush for the Arduboy.
BUT⌠I really think this project should still be done. Maybe as a joined effort? I know we all are busy with our own things. But we should go back to it at some point.
Thatâs a bit of a different circumstance though.
Firstly, thatâs a really big project, so they have to plan.
Secondly, they have a whole team of people involved.
Thirdly, theyâre working to a budget and a deadline, so they canât just lose interest part way through.
And finally, their programmers have already learned to program, they arenât trying to learn on the job.
Itâs fine doing concept art as part of the planning stage,
but thereâs a difference between drawing concept art and committing to creating assets for the game.
I find if people start making the actual game art first, they can get carried away with the art and lose interest in actually creating the game because the programming is never as fun as the art.
Also, if they later realise the art has to change, theyâre reluctant to part with it - if you start with placeholders that you donât care about, itâs much easier to throw it away.
I think it should definitely be done,
but if @BigBadHodad wants to be involved in the programming then I think it would be best to delay it for now until heâs had a bit of experience with some smaller projects.
Without that experience, this project will end up seeming very daunting.
To be honest I think if we made it into a joined effort, me and @drummyfishâs styles would be clashing too much if we both wrote code.
Iâd want to be using classes with member functions and accessors with C++-style casting, scoped enumerations and various C++11 features,
while @drummyfish would be wanting to stick to data-only structs and free functions, C-style casting and macros.
We could spend days drawing up the treaty deciding how to compromise :P
@BigBadHodad
Last time I checked you were still just starting out with programming,
but I donât know how much youâve read since then.
To clarify, how much do you actually know about programming and/or C++?
Variables, if
, for
, while
, int
, bool
, enum
?
The coding style Iâd gladly accept because I think when multiple people work together, itâs already worth switching to the proper style, as long as we set the rules on the standard and so on, maybe I could even live with tabs if you insisted on them. But I think we could clash on other things, such as art licensing, or possibly some design decisions that arenât textbook examples and donât have one obvious solution, or even game design, because I canât easily make many compromises about the big picture I see. Better not try at this moment ^^ But I can see us working together if each of us worked on a separate reusable module, that could work very well. So maybe some day in the future we can make something like this.
As I said before, itâs not so much that itâs âproperâ, itâs that there are clear benefits to not avoiding particular techniques.
If you wanted spaces, youâd have to excuse me occaisionally submitting something with tabs.
My editors are set up to automatically switch to tabs when I start editing a section, and even without them I would go on autopilot and use tabs and Allman style anyway.
If you wanted me to adhere to a K&R + spaces style, youâd have to afford me extra time to go back and manually change it to that style, or for someone else to âclean upâ after me.
If itâs not my art I donât really care what the licence is.
Iâd be more concerned about the code licence (i.e. no GPL).
I canât really imagine a situation like that beyond stuff like âfile/data formatâ, but Iâll chalk that up as plausible.
If itâs not âmy gameâ then I donât care as much about game design.
I wasnât entirely happy about some of the design decisions in Dark & Under,
but it wasnât a deal breaker because I wasnât that emotionally invested in the design.
I was just there to make the odd suggestion and to focus on shrinking the code.
(If I was trying to make a game close to my heart, Iâd probably be an absolute tyrant. :P
)
Perhaps the bigger problem would be GitHub vs GitLab?
Very little, I read when I can (single dad syndrome lol we have less life than undead).
And to tell the truth I agree that I should work on something smaller, been thinking about it too, but I Really want to see this project get going and Iâll do the art if someone wants to work on it I need to finish the prototype house tonight and then Iâll create a empty one in case @drummyfish wants to work on a version where you build the house then move in a little pokitto person.
Also how many frames of animation does the character absolutely Need ? Walking climbing stairs doing stuff.
Also art wise this is all hand drawn using references from the zx spectrum version.