zoza.blogg.se

Artifact of the week: Collision Box2D

Publicerad 2014-02-13 03:50:00 i 5SD033,

Alright, last week I worked on Learning Box2D and make a project where I would use it together with SFML. We(me and another coder in the group)  had some problems initially  as we first had wrong versions of both above listed "tools". So after we figured out that the SFML that we had been using before we started was 64 bits and that the Box2D we had wasn't compiled for VS 2012 either we got them working together. Box2D is not that hard in it self but it is a bit different because you don't always know what is going on behind the scenes when you first use it. At first I though that it was enough to just write the world, the bodies, set the gravity and draw a "sprite" in the form of a circle and designate it to the position of the body. It was then supposed to fall and when it hit the other box it was supposed to stop. When we started the project it did not do anything at all though.
 
 
 
 
The reason was that you still needed to make some more variables that are used to update the player.
 
 
 
 
After that we had a Ball that was affected by gravity. We then tested to make a simple rectangle to see if the collision would work. It did and so I started to work on Chains. They are made up by multiple vertices that are connected with lines that works very well as walls since its easy to form them to whatever form the room have.
 
To test this I wanted the player to be able to move freely and not just be dragged down by gravity. So I disabled gravity and used the SFML inputs to start with. I couldn't use them without modifying them a bit since it was the Box body i wanted to move and not the SFML "sprite". After that was done I put the chains in the project and hoped that it would work. At that point I had not created a fixture as I thought it was only used for making the bodies visible. But it apparently has to do with collision. After I fixed that something still was wrong. Box2D makes the whole window to have negative y value as it uses the top left corner as the origin instead of the lower left. So when I had set out the positions as positives figures thinking that it was somewhere on the window it was actually above the window. 
 
So here is an example of a chain:
 
 
 
 
 

Chains Box2D

Publicerad 2014-02-10 03:08:58 i Allmänt,

Alright, I managed to get Box2D to work with SFML. With some help i also got gravity to work and after that collision with a rectangle.  The reason why I chose rectangle was that it was the easiest way to see that Box2D really worked for us as we only knew that some functions such as create a body and gravity(which we dont even need in our game). The main thing we wanted Box2D was collision, so that we could create fully functional rooms that weren't made up of squares so that we could get the rooms to look like we wanted them. After that I amde so that you were able to walk with the player instead of just being pulled down by gravity as i felt that it was something that needed to be done anyway and that it was easier to check the collision if you can check from different angles.
 
It was pretty simple to make the player to walk in all the directions but to make it stop was another thing. SFML already have a simple way to make an object move, so all i had to do was to add the position to the body of Box2D istead of the player from SFML. What SFML does not have thoguh is a Keypressedonce function and when i looked after an alternativ solution I found out that Events apparently was not fit to use when moving cuz it was not smooth enough. I figured that out by just placing a if else under that If:s that was making the player able to move.
Until this point the caracter was only able to move in straight lines and not diagonally and I struggled a while to make this happen. I got help from a friend to make this happen and the solution was not too complex this time either.
 
After that was done the chains that I suggested we would use was the next step. They are points which are connected to each other with a vector, with connected I mean that they create a wall between them. So they are very effiecient to use to make boundries in a top down game from what I have seen so far. The only problem is that its some work to get there. We were probably not the quickest in setting the whole thing up. But there were many problems with different releases for both sfml and box2d that made it quite difficult to make it work. We will have a sprint meeting tomorrow to see what the next tasks are. But i think it is something along the lines to make enemies and AI to enemies, make the camera move and make the player able to shoot. After that except from stating win/lose conditions and make the time and helth we have a fully functional game. It will not be pretty at that point but it would work and be classified as a game. So I feel confident to make it now. It felt a bit rough when I didnt know if Box2D would work and we faced the option to face that we spent a week to nothing and instead use regular collisions. 
 
I was also working with our last project and it we solved many of the problems we had. We worked on one computer except for when i was playtesting to find bugs. So I did not code much but instead observed what my group partner did as he knows the code best and can bugfix much much much more efficiantly. We still have some stuff left, like some memory leaks, but it should not be any problems to do it.
 
Lastly I wnet through the core of the game that my other group member did so that I am familliar with it. He uses a different structure than the one i previously worked with but it works like that as well.

Collisionnnn

Publicerad 2014-02-05 02:33:29 i Allmänt,

So I have been working on collision today with another group member, we did it on one computer although we had different views on how to include the header files from box2d. One way is to just put them into the rest of the header files that are already in there and they will be "linked" automatically from the link that was made from SFML. The other is to take the whole box2d file into the project and then link again. I like the latter one but since it didnt really matter how we did it when we just was trying to figure box2d and collision out, I proposed a race to see which way was faster. I lost in speed and somehow the program was not happy with my link either so I think I should check that out. The problem that arised was that we did not have anything drawn out yet in the main project so we tried to combine the code of box2d with SFML and either make something that checks the collision in the prompter or to make bodies and se if it works. Therefore we thought that maybe this task should have been places after we had written the player and walls etc. So we ended it there for the day and went home and are checking on a way to watch collisions. Thats about it.

Second time is the charm

Publicerad 2014-01-30 00:58:15 i Allmänt,

Well this will suck. I have to do all the "end lines" myself to not get it go all over the layout.

 

Alright, I figured that if I am going to write so much each day. Then at least I can use it to help me improve my english. I don't really know what I am going to write today since I haven't gotten that much work done today. But I guess I can reflect on what I have learned today and go from there. 

 

So I had a meeting with Jerry and we talked about mostly objects and Friend classes and Inheritance. I was not sure about the whole thing when you wrote : Class, Class2, Class3.

I had a hunch about how it was working but I was not sure. And the tutorials(c++) I was looking at have taken more time than it has helped me. I am not a very quick reader though, so I guess that didn't help either. It's not always written in the way that we are used to. Instead of having a header and cpp file they make something in between. When I first looked at it i thought that I have never seen that in class.

 

Class Rectangle " "

         Int width, height;

public:

         void set_values (int, int);

         int area (void);

" " rect;

 

And it said that rect was the object of the class Rectangle. I could not connect it to anything we had done up until then and it still feels like a weird way to write it. 

 

So from what i can understand from with the meeting with Jerry, if you write Rectangle rect, then Rectangle is an abbreviation of everything that I wrote before rect. So instead of including the header from which it comes from you write all it contains to give rect the knowledge of what the class Rectangle exists of. The problem is that you can't refer to it later in the code since the whole class is inside another class. However, it is not a member variable or a method that is listed in the header file of said class. So it's a longer way of writing a code that does less for a bigger project really. If you really hate header files I guess you could use it for something that you don't want to use again later on.

 

The tutorials feels like they are good to use if you want alternate ways of doing the exact thing. Which is good in itself I guess, but when you read a tutorial to refresh your memory of something or that it isn't really making sense. Then it just makes it harder to find what you are looking for and what part is the most similar to what you have been taught. So it was good to be able to ask someone straight forward who can answer and describe the things you have a hard time with from different angles until you can see how it really is. This was a really long side track from the protected part. I got my hunches confirmed. That it is the class that is using the : Class, Class1, Class2 that is inheriting from the classes mentioned and that the "," is just for when it is more than one class that you are inheriting from. It is pretty logical as you use it when you declare many objects or variables on the same row. Then the object is not as clear, but I definitively got a better grasp on it after the meeting. So an object is something that you can change. It is not functions/methods and it is not member variables of classes you have not made. It is something that takes space so it can not be a pointer. 

If its an int you cannot change variable since it is not something that you created. I think he agreed to something like "Member variables that are not the same data type as the class itself" but I think that it still has to be mentioned that it must be a class made by you in the first place. I think i will figure out a better definition when I have watched more code and thought about it a bit more. I felt good to get those thing confirmed and explained thought as it was hard to follow reasoning and code without that knowledge.

I had some trouble with calling variables and functions too. But that also got solved a bit back. It's not that I have no idea of how to use the code. But it's just that i don't know exactly what it does. I am still able to know about how and when to use them and what it does. But it gets troublesome reading someone elses code and it felt like a huge wall which spread to all corners of the project.

 

So i have a plan in mind so that I wont forget stuff like that again. I will write down all important things I learned during the day in a document so that as soon as i think that I might need to refresh my memory on something I can easily check it up. I guess it would have a similar effect as to writing this blog. This blogs only purpose is not to help me remember things I have learned, but it helps me know what I have worked with and how I did it back then and how I thought about it. 

 

We also had out first meeting with Linus who will help us through the project and he recommended that we should use svn or git as opposed to dropbox as we are using now. It works with dropbox, but I can see how it might be a problem later on as the project grows to store all the parts on and off dropbox since we don't use it directly in dropbox since we would delete each others work easily. So that is something that i should check out as well. It took me way longer than I thought it would to write this so I'm glad that i started early.

 

So I am going to check the core of the project that Martin has made and then look up svn. 

Hopefully I will have more to write about tomorrow but I would not mind some sleep either so I will se how much I will be able to add to tomorrow's blog from tonight. 

 

I should make some more appointments with Jerry as well, the time went way to fast in that room. The thing is that our schedule doesn't help us very much as to when the classes will end. One only says when the class begins and one tells me until what hour the room the lecture will be held in is booked which seems to be way later than the lecture actually ends. And then there is the daily stand up meetings from scrum. I guess I can leave sometime for the guidance meeting but I don't think it is a good idea as long as I am the producer

(I'm not originally the producer but we were told to have at least one week as producer each).

That was akward

Publicerad 2014-01-30 00:43:57 i Allmänt,

Antar att jag antagligen borde förhandsgranska innan jag lägger upp nåt som jag skrev någon annanstans. Trodde det skulle funka att bara kopiera över från documentet men det verkar som att så inte är fallet.

WORK HARDER

Publicerad 2014-01-30 00:41:13 i Allmänt,

Alright, I figured that if I am going to write so much each day. Then at least I can use it to help me improve my english. I don't really know what I am going to write today since I haven't gotten that much work done today. But I guess I can reflect on what I have learned today and go from there. 

So I had a meeting with Jerry and we talked about mostly objects and Friend classes and Inheritance. I was not sure about the whole thing when you wrote : Class, Class2, Class3.

I had a hunch about how it was working but I was not sure. And the tutorials(c++) I was looking at have taken more time than it has helped me. I am not a very quick reader though, so I guess that didn't help either. It's not always written in the way that we are used to. Instead of having a header and cpp file they make something in between. When I first looked at it i thought that I have never seen that in class.

 

Class Rectangle {

         Int width, height;

public:

         void set_values (int, int);

         int area (void);

 } rect;

 

And it said that rect was the object of the class Rectangle. I could not connect it to anything we had done up until then and it still feels like a weird way to write it. 

 

So from what i can understand from with the meeting with Jerry, if you write Rectangle rect, then Rectangle is an abbreviation of everything that I wrote before rect. So instead of including the header from which it comes from you write all it contains to give rect the knowledge of what the class Rectangle exists of. The problem is that you can't refer to it later in the code since the whole class is inside another class. However, it is not a member variable or a method that is listed in the header file of said class. So it's a longer way of writing a code that does less for a bigger project really. If you really hate header files I guess you could use it for something that you don't want to use again later on.

 

The tutorials feels like they are good to use if you want alternate ways of doing the exact thing. Which is good in itself I guess, but when you read a tutorial to refresh your memory of something or that it isn't really making sense. Then it just makes it harder to find what you are looking for and what part is the most similar to what you have been taught. So it was good to be able to ask someone straight forward who can answer and describe the things you have a hard time with from different angles until you can see how it really is. This was a really long side track from the protected part. I got my hunches confirmed. That it is the class that is using the : Class, Class1, Class2 that is inheriting from the classes mentioned and that the "," is just for when it is more than one class that you are inheriting from. It is pretty logical as you use it when you declare many objects or variables on the same row. Then the object is not as clear, but I definitively got a better grasp on it after the meeting. So an object is something that you can change. It is not functions/methods and it is not member variables of classes you have not made. It is something that takes space so it can not be a pointer. If its an int you cannot change variable since it is not something that you created. I think he agreed to something like "Member variables that are not the same data type as the class itself" but I think that it still has to be mentioned that it must be a class made by you in the first place. I think i will figure out a better definition when I have watched more code and thought about it a bit more. 

I felt good to get those thing confirmed and explained thought as it was hard to follow reasoning and code without that knowledge. I had some trouble with calling variables and functions too. But that also got solved a bit back. It's not that I have no idea of how to use the code. But it's just that i don't know exactly what it does. I am still able to know about how and when to use them and what it does. But it gets troublesome reading someone elses code and it felt like a huge wall which spread to all corners of the project.

 

So i have a plan in mind so that I wont forget stuff like that again. I will write down all important things I learned during the day in a document so that as soon as i think that I might need to refresh my memory on something I can easily check it up. I guess it would have a similar effect as to writing this blog. This blogs only purpose is not to help me remember things I have learned, but it helps me know what I have worked with and how I did it back then and how I thought about it. 

 

We also had out first meeting with Linus who will help us through the project and he recommended that we should use svn or git as opposed to dropbox as we are using now. It works with dropbox, but I can see how it might be a problem later on as the project grows to store all the parts on and off dropbox since we don't use it directly in dropbox since we would delete each others work easily. So that is something that i should check out as well. It took me way longer than I thought it would to write this so I'm glad that i started early.

So I am going to check the core of the project that Martin has made and then look up svn. Hopefully I will have more to write about tomorrow but I would not mind some sleep either so I will se how much I will be able to add to tomorrow's blog from tonight. 

I should make some more appointments with Jerry as well, the time went way to fast in that room. The thing is that our schedule doesn't help us very much as to when the classes will end. One only says when the class begins and one tells me until what hour the room the lecture will be held in is booked which seems to be way later than the lecture actually ends. And then there is the daily stand up meetings from scrum. I guess I can leave sometime for the guidance meeting but I don't think it is a good idea as long as I am the producer(I'm not originally the producer but we were told to have at least one week as producer each).

Nya kurser

Publicerad 2014-01-22 23:23:49 i Allmänt,

Så efter ett välbehövligt uppehåll så var det dags för nya tag :P
Vi rivstartar med en vecka packad med lektioner och uppgifter, känns lite chockartat men antar att det bara är att ta på sig grovhandskarna och jobba. Det ska bli spännande att se hur SFML fungerar. Jag skulle vilja Programmera och testa runt mer själv/utanför projektet, då jag känner att prototypen är lite svår, men jag har knappt någon tid fram till måndag-tisdag. 

And we are done

Publicerad 2014-01-19 19:03:36 i Allmänt,

Yes
 
Sista dagen på projektet vilket känns både roligt och tråkigt. Det är roligt att vi hann klart och att vi förhoppningsvis är klar med kursen men tråkigt då vi inte fick spelet så bra som vi velat. Men det blir nog ingen vila på det här stället, imorgon kl 9 börjar nästa kurs, men vi hade ju ändå ett 9 timmar uppehåll mellan kurserna :P

Lördag 18/1

Publicerad 2014-01-19 00:13:52 i Allmänt,

Tjosan
 
Börjar närma sig slutet nu. Jag gjorde ett tappert försök på min egen loading bar på photoshop, men det visade sig att jag inte blivit något bättre på det sen förra gången. Så det slutade med att jag gjorde klart det med instruktioner från sebbe. Sedan gjorde jag textfilen till animations och gjorde så att spritemanagern var animationsredo. Particle systemet gjorde jag också ett sista försök på, men jag får det inte att funka så det får jag kolla på efter projektet.
 
Så det som jag ska göra nu är att skriva animation classen och göra ändringarna för det i engine. Sedan ska jag skriva rapporten och jag vet inte om jag kan göra något mer. Ska kolla om sebbe ska ha hjälp med något mer imorgon, men tror det mest är saker som sebbe klarar av/gör bäst kvar nu.

Fredag 17/1

Publicerad 2014-01-17 23:43:56 i Allmänt,

Alright, har några bra enklare particle effects som jag kollat på nu, länkningen funkar nästan. I ena jag kollat på så använde dom bara SDL som extra biblotek att länka så det var inget nytt medan det var GL, Glaut, Glu på den andra. Det vart något fel dock med LPCWSTR på alla strings och 2 ställen till(str är ju för string så), man kunde tydligen lösa det att sätta ett "L" framför stringen för attt få den att gillas för en Long pointer constant wide string.
Så dom sista 2 felen vet jag inte vad det är just nu då det inte är char/strings och jag vet inte om det skulle hjälpa med ett "L" nånstans så vet jag inte vart det skulle vara heller. Så det är väl det jag ska kolla imorgon innan vi ska börja sätta ihop text m.m imorgon i vårt project. Jag gillar att kunna hålla på att testa mig fram har jag märkt för att se vad allt har för funktioner med nya program. Det blir dock lite svårare att göra det när man inte kan starta programmet :P Nu ska jag sova, god natt

Torsdag 16/1

Publicerad 2014-01-16 20:24:25 i Allmänt,

hellö
 
Har inte gjort någonting på projectet så har inte haft något att skriva. Jag länkade ihop och har fixat så vi kan lägga in text/typsnitt nu med ttf och sebbe lyckades få till det sista med animations så den delen är också klar. Så det sista har varit particles vilket verkar vara det svåraste att göra av det jag har gjort hitills. Skulle vara väldigt roligt att bli bra på dock. Får se om jag kan få klart det i tid eller om jag borde göra något annat istället då tiden börjar bli knapp och det inte har något att göra med ett komlett spel utan är något snyggare som skulle vara roligt att göra.

Lördag 11/1

Publicerad 2014-01-12 00:08:28 i Allmänt,

God dag
 
Jag fick i updrag att fixa text till spelet, se hur det funkar i sdl. Så jag kollade upp det och hittade att det var SDL_ttf biblioteket man skulle använda sig av. Sen började det roliga, hur många gånger kan man länka/lägga filer fel? En par gånger var svaret iaf. Har fortfarande inte helt fått till det men kommer närmare och närmare. 
 
Har lagt spelen på hyllan nu sista veckan då vi måste arbeta effektivt nu. Blev en massa krångel när vi skulle tillbaka till gotland så vi kunde inte jobba lika bra som förut med olika resedagar och dygn och allt vad det blir. Så vi ligger inte där vi ahde velat vara vid det här laget.
 
Tänkte att jag skulle försöka fixa till det här med texten nu i helgen och förhoppningsvis animationerna. Det är nåt som krånglar där som jag inte helt förstår, men det har nog med att jag inte riktigt förstår principen. Så jag ska kolla igenom det nogrannare och förhoppningsvis lista ut vad som ska göras. Particle effecten får jag nog kolla på lektion för det är bara 3D turtorials överallt.    
 
Tidigare har jag jobbat tillsammans med min kollega mer och gjort mindre uppgifter. Även om jag lärde mig mycket så är det roligare om man kan bidra med något och ta en hel del. Gäller bara att klara av det. Skrev en lite längre bloggning i dag då jag känner att det har varit lite på sistone. Det är dock inte för att vi inte har orkat bloggat, utan helt enkelt att vi inte har lyckats få så mycket gjort. 

Söndag 5/1

Publicerad 2014-01-06 00:44:46 i Allmänt,

Har bara fortsatt att repeterat idag för att kunna ge mig på particle system och för att göra ett bra jobb på animations där jag håller på att länka ihop och fixa dom från föreläsningarna så jag har någon mall då dem inte verkade funka rakt av. 

Lördag 4/1

Publicerad 2014-01-04 22:37:57 i Allmänt,

Hallå i stugan
 
Hade resdag igår. Har igår och idag hållit på att repetera gamla saker som jag inte helt har häng på och lära mig mer om particle effects. 

Onsdag 1/1

Publicerad 2014-01-02 00:59:00 i Allmänt,

Hallå i stugan
 
Har inte gjort några direkta delar igår och idag utan mer försökt få koll på hur man gör partikel system och animationer. Så det är nog inte så mycket att skriva om. Kan nog länka SDL bibloteken i sömnen nu iaf efter alla försök till particle program ^^

Måndag 30/12

Publicerad 2013-12-31 00:59:28 i Allmänt,

Jobbade en del idag och skrev en del men programmet börjar bli ganska stort nu. Höll bla på med koden för att städerna inte ska hamna på samma eller för närliggande rutor. Har börjat med att kolla på partikel system oxå som jag ska fortsätta med imorgon(senare idag).

Torsdag 26/12

Publicerad 2013-12-26 22:48:50 i Allmänt,

Hallå i stugan!
 
Idag har vi tagit upp jobbet med projectet efter jul.
Jag gjorde inte direkt något idag utan mer följt det sebbe gjorde då det var mycket buggfix och jag klarar inte av det riktigt om man inte får några felmeddelanden. Men jag har tagit in lite ljud som vi kan använda senare.

Fredag 20/12 2

Publicerad 2013-12-21 01:42:01 i Allmänt,

Det blev inget mera idag, förhoppningsvis så blir det klart på söndag, då vi inte kommer att jobba något imorn då det är resdag.

Fredag 20/12

Publicerad 2013-12-20 13:38:00 i Allmänt,

Har hållit på med "design documentet" över spelet idag och igår, tänkt och igår, tänkte det ger ju sig lite självt när man lämnar in det vad man har gjort. Men det verkar ta mer tid än väntat att få klart det. Så jag skriver en blogg nu så skriver jag en till ikväll när vi förhoppningsvis är klar med den.

Tisdag 17/12

Publicerad 2013-12-17 22:05:09 i Allmänt,

Alright
 
Idag har vi fixat grunden för spelet.
Vi har en "ruta" med en loading screen och en main menu.
Det går att klicka sig till main menun från loading screen och från main menun har vi 3 knappar som inte gör något än.
 
Jag skrev (med hjälp av sebbe)  Button och MainMenu. 
 
 

Post mortem

Publicerad 2013-10-12 15:50:34 i Allmänt,

We made Left for dead as a paper prototype. I myself havent played the game but most people in the group knew the game very well and its not hard to figure the game out. You run and kill zombies and get guns, ammo, health.
The objective of the game is to survive.
 
Our game was alot of fun to play when we tested it. It wasnt that balanced, and much was based on luck. We didnt have the time to change that significantly so it still was when the time was up.
That was the critique we got as well. So all in all it worked out fine. Our work strategy was just to get a game fast, and then test and change stuff until it was good enough. The time then ran out on us so the game only got to like 2/3 of what we wanted it to be but it was alright knowing that we were on the right track and that we probably can do it better next time.

First post

Publicerad 2013-10-03 00:30:20 i Allmänt,

Alright
 
I'm just realised that I'm not sure if this should be in swedish or english, if i had to guess I would say either english or that it doesn't matter. There for I will write this one in english.
As far as im concerned it should be about refelctation on my education in gamedesign.
 
So far so good I would say, I find it a bit confusing when I try to find information since there is 2-3 different places to search for it and the sceadules seems more like a copy of the booked rooms than a list of where we should actually be.
 
I realised i need to practice on my presentations. Not because I felt like I couldn't handle to be up on a "stage", talking to a larger group of people, but because my powerpoint looked like shit compared to others. It was my first powerpoint so i guess i could always blame it on that. But that excuse is pretty lackluster and will only work max one time.
 
On another subject, I kinda took one of my gameing names for this blogg. I dont feel like we got anymore restrictions or instructions than: 
 
1. Start a blogg
2. Start it now
3. Write sometimes

Senaste inläggen

Kategorier

Arkiv

Prenumerera och dela