Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

DarkBASIC Discussion / DarkNOOBS Project 4: Breakout

Author
Message
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 29th Jun 2009 15:55 Edited at: 8th Aug 2009 18:42
Ok who all do we have working on this project?




heres a zip with the source code and all the media:

last updated: August 8th 10:38 am central time

Attachments

Login to view attachments
AcP2142
14
Years of Service
User Offline
Joined: 22nd Jun 2009
Location: Sitting on top of TGC forums
Posted: 29th Jun 2009 16:08
Well as you know I am following along and if it is alright with you I may offer some input. In that case you could kind of consider me a member of the team. If you want I could try to provide some of the game art. Just tell me if you would like me to help in any way.

The only thing constant in life is CHANGE.
arbiter chewbacca hybrid
15
Years of Service
User Offline
Joined: 30th Nov 2008
Location:
Posted: 29th Jun 2009 16:35
I'm aboard...


Vista is a paradox created by Bill Gates to force the noble pc gamers of america to console I am here to change that. [link]www.kdlproductions.webs.com[link]
Ashingda 27
16
Years of Service
User Offline
Joined: 15th Feb 2008
Location:
Posted: 29th Jun 2009 16:41
I am too.
bobbyd
15
Years of Service
User Offline
Joined: 17th Jan 2009
Location:
Posted: 29th Jun 2009 18:34
im in

whats the theme of the breakout game scifi etc
Phaelax
DBPro Master
21
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 29th Jun 2009 22:37
I'll offer assistance and answer questions, but I'm not coding it. Actually, I've almost finished writing a tutorial on making this game.

[url="http://dbcc.zimnox.com"][/url]
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 29th Jun 2009 23:55 Edited at: 29th Jun 2009 23:57
ok as I said on the noobs wanted thread, we'll be taking this project in steps, starting with the simple black and white basic breakout and working our way up, that way theres no chance of failing out like on project 3

heres the starting job assignments:

Ashingda:
you seem to enjoy media so ill leave that up to you, heres what we will need for the first version of the game:

bricks (a few different colors to start, maybe 3), ball (we could make that in game but I doubt it would look as good as a true shaded ball), and a paddle (as boring or fancy as you like)

arby:

I want you to come up with the basic main menu, nothing fancy, just a working menu showing buttons for instructions, the game itself, and credits (ill design those later, u just leave a non-working button for it)

bobby:

you can start on the actual game, all we need is one level with working movement and physics

a few notes:

-leave your section as a subroutine that we can copy and paste into the game easily

-try to make your code as expandable as possible, such as having the locations of the bricks in an array or having images for the bricks, paddle, etc

-indent and rem your code as much as possible, this is a group project and we need to know why you typed something

ok this is the general form for the game:



There are only 10 kinds of people in the world, those who understand binary and those who dont
TDK
Retired Moderator
21
Years of Service
User Offline
Joined: 19th Nov 2002
Location: UK
Posted: 30th Jun 2009 02:03
Quote: "bricks (a few different colors to start, maybe 3)"


What colours should he do seeing as you are "starting with the simple black and white basic breakout"?



Sorry - couldn't resist pointing that one out...

TDK

Libervurto
17
Years of Service
User Offline
Joined: 30th Jun 2006
Location: On Toast
Posted: 30th Jun 2009 02:49 Edited at: 30th Jun 2009 02:52
I don't want to impose but I think bobby's task is a bit unfair, you should break down the coding into parts. I've given each part a rough difficulty rating to help with your delegations. Of course I am just offering a suggestion, if you think of a better way to divide the workload go for it.
* Create Level (2) - an method for storing the positon of blocks.
* Ball Move (2) - updating the balls position via parameters like angle and speed.
* Ball Collision (3) - changing the balls direction and possibly removing blocks. Includes the ball falling off screen.
* Paddle Control (1) - managing input.
* Display (1) - using all data to position objects and text on screen.

Making this an expandable project is a good idea, but to achieve this everyone will have to think carefully about how they write their code making sure they allow for future additions. For example special bricks may be introduced that need two hits, so the coder could factor in a hit counter for each brick to prepare for this.

TGC Forum - converting error messages into sarcasm since 2002.
BN2 Productions
20
Years of Service
User Offline
Joined: 22nd Jan 2004
Location:
Posted: 30th Jun 2009 03:00
Good luck guys, I will be watching from the sidelines. Smartguy, enjoy the mug .

I agree with Obese though, a general "Start making the game" might be a bit extreme.

The color thing will probably get in the way, starting with just black and white, since color makes very little difference when it comes to the actual program, it will just limit your capabilities. To start simple, I would say, just start out with 1 hit blocks, then you can add code for blocks that require multiple hits, then blocks that can't be destroyed and so on and so forth.

Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose
Dark Dragon
16
Years of Service
User Offline
Joined: 22nd Jun 2007
Location: In the ring, Kickin\' *donkeybutt*.
Posted: 30th Jun 2009 03:48
I'm in but slapped.

I might be a bit slow.

Your signature has been erased by a mod because it was too big.CHANGE IT OR DIE!!!!!
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 03:50 Edited at: 30th Jun 2009 03:50
ok about the black and white 3 color thing, I mistyped, the plan was get 3 colors ready that each take one more hit than the last, then implement those in v2 of the game

and I fully agree about splitting things up betr, I was just finding it difficult to divide it up and NOT have each part be like 2 lines

ok heres a revised job list

arby:

I still feel that the menu would be a good task for you


ashingda:

take care of the above media stuff then report back for a new task


bobby:

why dont you take care of the level creation stuff, try making an array of x and y data for each block and use 0,0 to store the number of blocks (I try to use that 0,0 array slot in my programs for stuff like this since arrays are global, meaning they can be used in functions)


Me:

Ill be working on collision and, do you guys want to go with point() collision or memblock collision, memblock is more advanced but once you learn it then it becomes a very useful and fast method of checking pixel color data


whoever gets done with their part first report back here and they can work on the input, ill probably be done with both parts tonight so post once ur done to check if I've started



I just had a great idea for a future version, a multiplayer mode that combines pong and breakout, you have paddles on both sides of the blocks and its a score competition, if the ball gets past you then you lose a life, like regular pong, and if you lose all yoyr lives then you are eliminated and if reverts back to 1-player

There are only 10 kinds of people in the world, those who understand binary and those who dont
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 30th Jun 2009 03:58
I'll help

I know I'm not actually considered as a worker yet

I think you should start off with the point command and then maybe change it over to memblock.

Or you could do my idea that I'm using on my game and do three hidden sprites. One sprite for the walls and bricks, another sprite for the paddle, and a final sprite for the ball and just check for collision with the sprites.
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 04:18
sprites are slow though, so I dont want to teach them stuff that wont always work

and have u made an entry program yet? if not then head over to the noobs wanted thread and post a paint program, as simple or complex as you want

also if mods control hot threads (I dont know if they do) then can one please hot thread this?

There are only 10 kinds of people in the world, those who understand binary and those who dont
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 30th Jun 2009 04:26 Edited at: 30th Jun 2009 04:27
Yes I did make an entry program here:
http://forum.thegamecreators.com/?m=forum_view&b=10&t=131352&p=20
Although the only one who viewed it was BN2
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 04:33
alright you're in, why dont you go ahead and do the input stuff, pretty basic but right now all our parts (with the possible exception of mine) are pretty easy

and remember, keep it expandable

There are only 10 kinds of people in the world, those who understand binary and those who dont
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 30th Jun 2009 05:13 Edited at: 30th Jun 2009 05:14
I'm not sure of the size of the paddle yet or what powerups we'll have. Once we have them figured out, then I'll change it to suit it.



EDIT:
Just so you know, the up arrow key and w key were the keys I was planning to use for our powerups.
BN2 Productions
20
Years of Service
User Offline
Joined: 22nd Jan 2004
Location:
Posted: 30th Jun 2009 06:38
@smartguy

I don't remember who said it on the last thread, but I think that he was right when he said that memblocks should be off limits for us, seeing as how we are darkNOOBS

Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 30th Jun 2009 06:42 Edited at: 30th Jun 2009 06:42
I said something similar a few posts ago that we should start with the point command and later, if we can, move on to memblocks.
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 06:48 Edited at: 30th Jun 2009 07:01
ok, im fine with that, im having problems with my memblock collision anyway


edit:
or we could do a simplified memblock collision, you get an image of one pixel and turn it into a memblock, that would show the basics w/o involving the complex math

I wonder, is that faster than point, ill run some tests

edit:
nope, since you have to sync between get image and make memblock from image, point is WWWWAAAAAYYYYY faster (although point is still RRRREEEEAAAALLLLLYYYY slow, 200 runs of point takes 5 seconds

There are only 10 kinds of people in the world, those who understand binary and those who dont
BN2 Productions
20
Years of Service
User Offline
Joined: 22nd Jan 2004
Location:
Posted: 30th Jun 2009 07:01
With brick break, you could just do simple box collision:

If The distance from the left side to the start point is < the ball diameter it is colliding and so on.

Or, I would suggest just using sprites, but you may need to work out something for speed. What about a system that will only display sprites for the 5 closest bricks and all else is just a PASTE SPRITE deal. That way you will only have 5 (or more, if you need em) sprites and it will LOOK like you have more, without a performance hit.

I did write a memblock point function that you can use, it is faster than the POINT() command, but it probably needs a little tweeking to give correct color values in 16bit depth (I have figured out red and greed, but for some reason blue never works right).

Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 07:04
back to the sprite thing, I think you could get away with 3 sprites:

ball
bricks (have an image of all active bricks on an offscreen bitmap then when the brick data changes then update the sprite image
and surrounding box

or maybe we could combine 2 and 3 into a simgle sprite, hmmmmm ill try some stuff

There are only 10 kinds of people in the world, those who understand binary and those who dont
Ashingda 27
16
Years of Service
User Offline
Joined: 15th Feb 2008
Location:
Posted: 30th Jun 2009 07:04
I'll get started on the Images shortly.


If memblock is out of the question, the 2nd best method in my book is the good old CheckArea() function.

Point() is ridiculously slow and sprites aren't the fastest solution "fps wise".
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 07:05 Edited at: 30th Jun 2009 07:12
whats the CheckArea() function?


edit:
I just had a cool idea, we could use sprite collision for the initial check then use paste image and point to check where the collision occured, four points per collision shouldnt be too terribly slow

There are only 10 kinds of people in the world, those who understand binary and those who dont
BN2 Productions
20
Years of Service
User Offline
Joined: 22nd Jan 2004
Location:
Posted: 30th Jun 2009 07:12
Yeah the checkarea was what I was thinking, it is just a check to see if the bounds are correct (check start and endpoints in each direction with that of the bricks).

For the 5 sprite thing, I wasn't including paddle and ball, just the 5 closest bricks (though you would need the paddle and ball as well). One large sprite would be problematic since you would need special calculations to figure out which brick is hit, calculations that could probably be done on its own making the sprite useless.

Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 07:13
wow even this "simple" breakout game is getting complicated

There are only 10 kinds of people in the world, those who understand binary and those who dont
Ashingda 27
16
Years of Service
User Offline
Joined: 15th Feb 2008
Location:
Posted: 30th Jun 2009 07:15
Quote: "whats the CheckArea() function?"

It's a box collision function.

For this example it's checking if the Ball coordinates are inside the the box coordinates. If the Ball is inside then 1 is returned else 0 is returned.
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 07:19
ok so its just an adaptation of my mouseover function:



There are only 10 kinds of people in the world, those who understand binary and those who dont
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 30th Jun 2009 07:23 Edited at: 30th Jun 2009 07:26
BN2 with the sprite collision all we would need is 3 sprites

1 sprite which would be positioned where the ball is

1 sprite which would be positioned where the paddle is

1 sprite that is black and red. This sprite should be basically a screen shot of what our level will look like. Red colored area would be where bricks and walls are and black area would be everything else.

Hide all the sprites(This will helps with performance impact) and just check for the collision between them.

or you can just do the check area collision like ashingda is saying

EDIT:
On second thought, we should go with ashingda's idea, because we would be able to figure out which brick we're colliding with easier.
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 07:32 Edited at: 30th Jun 2009 07:32
one thing we could do is if the ball hits the bricks then we loop around the circle 0-360

each iteration we use CheckArea to check for collision from the angle point with each box that theoretically COULD be in range for a collision

once we find the CHeckArea collision we store the collision angle and (assuming 0 degrees points straight up and 90 points to the right) if angle>315 or angle<45 then collision up, if 45<angle<135 then its collision right, etc

problem is thats 360 iterations and 360 function calls PER possible collision box, unless the use a step increment of like 10 then it might not be so bad

There are only 10 kinds of people in the world, those who understand binary and those who dont
Ashingda 27
16
Years of Service
User Offline
Joined: 15th Feb 2008
Location:
Posted: 30th Jun 2009 07:33
Quote: "ok so its just an adaptation of my mouseover function:"

Exactly! ^_^
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 07:34
right, did u read my post, I think you were typing while I was

There are only 10 kinds of people in the world, those who understand binary and those who dont
Ashingda 27
16
Years of Service
User Offline
Joined: 15th Feb 2008
Location:
Posted: 30th Jun 2009 08:25 Edited at: 30th Jun 2009 08:27
About the media, I think I'll hold off the images until we get some in game graphics first. Dont want to make images that may or maynot fit.

@Smartguy
Since you're project manager, you should lead the coding. Start off with the code structure you want us to work in. Then the rest of us will fill in what's needed.

Be ready for updates and try to not miss any posts. Compile everyone's working codes together as best you can and update the project download frequently.

A good idea is to use the 1st post for the download and screenshots. When you made an update just shout and refer to the 1st post. Maybe edit your 1st post to include more info on the game and have a list of current active members of this project.
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 30th Jun 2009 08:42 Edited at: 30th Jun 2009 08:43
I set up a little sample just to show everyone the basics of what we're going for. Smartguy can decide to use it or not.

BN2 Productions
20
Years of Service
User Offline
Joined: 22nd Jan 2004
Location:
Posted: 30th Jun 2009 09:01
I submit for your approval a MOSTLY complete system for finding the nearest 5 bricks from a field of 100.

Hold T to turn off the pasted bricks and hold y to turn them on (default). I say mostly because it still pastes sprites over the closest ones, but it also puts sprites there.

The "ball's" position is the mouse coordinates, for seeing the effect. As you can see, the performance impact of the HUGE number of loops is small, as I am still getting upwards of 200 fps CAPPED when the bricks are turned off and about 100 when on.

With this system, it would be easy to use SPRITE COLLISION to check the 5 sprite bricks with the (currently non existant) sprite ball to see which are hit, without taking the performance hit of 100 sprites.



Feel free to use any of the functions if they are useful.

Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose
arbiter chewbacca hybrid
15
Years of Service
User Offline
Joined: 30th Nov 2008
Location:
Posted: 30th Jun 2009 15:27
Ok I'll try but keep in mind it may be a little crude.


Vista is a paradox created by Bill Gates to force the noble pc gamers of america to console I am here to change that. [link]www.kdlproductions.webs.com[link]
Irojo
15
Years of Service
User Offline
Joined: 21st May 2008
Location: Eating toast.
Posted: 30th Jun 2009 16:57
I'm going to spend a good bit of money on an awesome keyboard that I can hook up to my computer soon, then I'm going to try and make music for our games.


Time is money. I just ripped you off.
BN2 Productions
20
Years of Service
User Offline
Joined: 22nd Jan 2004
Location:
Posted: 30th Jun 2009 17:01
Hey Irojo, long time no see!

Quote: "I'm going to spend a good bit of money on an awesome keyboard that I can hook up to my computer soon,"

When I first read that I was thining, "What else would you hook up a keyboard to??" then I realized you didn't mean the kind for typing

Great Quote:
"Time...LINE??? Time isn't made out of lines...it is made out of circles. That is why clocks are round!" -Caboose
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 17:24
lol bn2 same here

cool example pic, thats about what we're going for, only black and white to start

could you put all the input stuff into a subroutine that we can copy over, i would but honestly ur lack of indentation and spacing makes ur program pretty unreadable to me

i havent quite looked at your things yet bn2, im on the run at the moment ill post when i look at it, shouldnt be long

There are only 10 kinds of people in the world, those who understand binary and those who dont
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 19:25
thats cool bn2, I dont understand a lot of it but its cool

There are only 10 kinds of people in the world, those who understand binary and those who dont
Dark Dragon
16
Years of Service
User Offline
Joined: 22nd Jun 2007
Location: In the ring, Kickin\' *donkeybutt*.
Posted: 30th Jun 2009 21:42
Er......What's my job?

Your signature has been erased by a mod because it was too big.CHANGE IT OR DIE!!!!!
TheComet
16
Years of Service
User Offline
Joined: 18th Oct 2007
Location: I`m under ur bridge eating ur goatz.
Posted: 30th Jun 2009 23:05
Good luck with this! I'll be watching closely.

TheComet


Make the path of your enemies easier with Waypoint Pro!
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 30th Jun 2009 23:23
has anyone gotten their part done yet?

There are only 10 kinds of people in the world, those who understand binary and those who dont
Irojo
15
Years of Service
User Offline
Joined: 21st May 2008
Location: Eating toast.
Posted: 1st Jul 2009 00:12
Quote: "Hey Irojo, long time no see!"


Yep, back from vacation.

An awesome music keyboard. Lol.


Time is money. I just ripped you off.
pictionaryjr
15
Years of Service
User Offline
Joined: 12th Mar 2009
Location:
Posted: 1st Jul 2009 00:27
That1SmartGuy I already posted a subroutine for the controls, its just I'm still not sure of the parameters of the paddle and how we're doing the collision so I can't finish it.
Phaelax
DBPro Master
21
Years of Service
User Offline
Joined: 16th Apr 2003
Location: Metropia
Posted: 1st Jul 2009 00:56
wow, you guys move quick!

Quote: "Ill be working on collision and, do you guys want to go with point() collision or memblock collision"


I suggest neither, as neither are necessary and create more of a performance hit than need be. Since this is the DBC board, I guess there's no UDTs. Before people start coding all different aspects of the game you should really map out how it will all fit together, determine which functions require which parameters and what they return so others can write them into their code without having it.

I'd advise against using sprite collision and stick with a less encapsulated method. The reason being is that you'll need to know more than if a ball hits a brick, you'll need to know which edge (top/bottom or side) of the brick is hit so you can properly reflect the ball's direction.


Two ways you can map the bricks is to either build a 2D array of the map, placing a number wherever there is a brick, or storing a brick's location and building an array that has the same number of bricks on the screen. Personally, I'd go with the 2D array. It might take waste a few extra bytes of memory, but hardly anything to worry about.

There is a technique used in games like Wolfenstein 3D in building the maps which could be applied here for ball/brick collision which would limit the number of collision checks and would not require a loop through the 2D map data. It would also fix issues where a very fast ball travels through a brick without actually overlapping it, avoiding the appearance of a ball passing directly through the brick.

Some bricks require more than 1 hit to break them, using a 2D array you wouldn't need to worry about storing positions as the array itself would act as the layout. A 1 or higher would represent the presence of a brick and the number of hits required. When the number reaches 0 then remove the brick. And you can use -1 to represent the golden, indestructible bricks.

[url="http://dbcc.zimnox.com"][/url]
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 1st Jul 2009 01:05 Edited at: 1st Jul 2009 03:27
right that was the plan for different types of blocks phaelax

sorry I know theres lots of stuff we havent talked about like dimmensions of stuff, lets go with the bricks being 64*16, the paddle being 80*8 and the ball being radius 5?

if you have any questions then go ahead and ask

edit:

sorry DD just saw your post

right now I think ill just hold off with you and irojo since v1 of the game is pretty simple and therefore doesnt need much more help, ill give you guys parts once we get the fist build done, hopefully soon

There are only 10 kinds of people in the world, those who understand binary and those who dont
AcP2142
14
Years of Service
User Offline
Joined: 22nd Jun 2009
Location: Sitting on top of TGC forums
Posted: 1st Jul 2009 03:45 Edited at: 1st Jul 2009 03:50
i wonder who could be posting this. nobody knows. anyway... what is a memblock? that would really help me follow along with this project. thanks.

The only thing constant in life is CHANGE.
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 1st Jul 2009 03:46
ok heres the collision, its somewhat slow but only suring the collision, and even then its not enough to really cause problems

only the subroutine will really be used, the rest is just to show how it works

sprite 1 is the border and the bricks, 2 is the ball, once we get a working level creation system then we'll need to edit it to remove destroyed bricks



There are only 10 kinds of people in the world, those who understand binary and those who dont
That1Smart Guy
15
Years of Service
User Offline
Joined: 26th Feb 2009
Location: Somewhere...... yep
Posted: 1st Jul 2009 03:50
memblocks are somewhat advanced material acp, think of them as a bunch of data that can be accessed and edited at the byte level, allowing for strategic editing of images, sounds, bitmaps, meshes or custom memblock files

There are only 10 kinds of people in the world, those who understand binary and those who dont

Login to post a reply

Server time is: 2024-05-01 21:35:59
Your offset time is: 2024-05-01 21:35:59