Faucet Networking, basics |
Здравейте ( Вход | Регистрация )
Faucet Networking, basics |
00:16:18, 24-December-2012, Monday
Коментар
#1
|
|
Мълчаливко Група: Потребител Коментари: 4 Регистриран: 23.12.12 Потребител № 1717 |
Та така...Какво е faucet networking?
Това е сравнително ново extension за Гейм Мейкър,който позволява да се правят мултиплеър игри.Води се по-добро от 39 длл,не съм навътре в тия неща,затова не мога да обясня точно какво му е по-доброто,но да приемем факта за верен,защото самият автор на популярното старо dll казва,че го е написал доста куцо. Та какво трябва да знаем за начало? За начало трябва да знаем,че връзките могат да се извършат с два вида протоколи TCP и UDP.Първият вид ( http://bg.wikipedia.org/wiki/TCP ) е най-разпространеният интернет протокол.Лично аз никога не съм се занимавал с втория вид,затова не смея да говороя за него. Също така трябва да знаем и какво е socket.Сокетът е връзката между клиент и сървър или обратното,чрез която се пращат пакети с дата.Също така имаме бъфери,които "държат" въпросната дата.При 39 длл си има default buffer,а при faucet networking има два бъфера send i receive buffer,които не може да се видят(нямат си имена),но може да се използват.Също така можете и да си направите свой бъфер с фунцкията Код buffer=buffer_create() ,ама да не се задълбаваме в подробности...Също така датата,която изпращаме трябва да има определен размер:Код //Byte = 1 Byte (heh) and can range from 0 to 255. //Short = 2 Bytes and can range from -32768 to +32767. //UShort = 2 Bytes and can range from 0 to +65536 //Int = 4 Bytes and can range from -2147483648 and +2147483647 //UInt = 4 Bytes and can range from 0 and +4294967296 //Float = 4 Bytes //Double = 8 Bytes Например,ако имаме да пращаме живот на играч,който е максимум 100,няма да използваме short,а byte,за да не създаваме излишен трафик... Getting started(Да започваме!) Създаваме server.gmk и client.gmk всяко с по един обект control вътре. Първо пъхаме в create-a control-a на клиента: Код server=tcp_connect("127.0.0.1",7777);//търсим сървър на този адрес После пъхаме в control обекта на сървъра в create-евент: Код listen = tcp_listen(7777);//това е акцептор на всички адреси през този порт На същия обект в степ: Код socket = socket_accept(listen); //търсим клиенти от адреса на акцептора Та сега това "socket" ни се води сокета на клиента,който сме приели.Той приема стойности само,когато се логне клиент,иначе =0... Па сега нека му пратим на клиента нещо... в същия степ евент слагаме: Код if (socket>0) { //send player to client write_byte(socket,1); //1 byte //firstbyte write_byte(socket,5); //1 byte socket_send(socket); //пращаме по сокета на логналия клиент... } write_byte(socket,1); //1 byte //firstbyte- е стойност,която ще получим в едно нещо наречено integer,което се превежда идентификатор(идентифицира,разпознава собщенията)... write_byte(socket,5); //1 byte- е съобщението,което получава клиента като стойност при определен случай на индификатора. socket_send(socket); //пращаме по сокета на логналия клиент... -е това вече е обяснено... Време е за клиента сега.Степ евента на control трябва така да го направиме да изглежда: Код tcp_receive(server,1); msgid=read_byte(server); switch (msgid) //индентификатор { case 1: tcp_receive(server,1); aaa=read_byte(server); break; } Та така.С първото tcp_receive получаваме "write_byte(socket,1); //1 byte //firstbyte",първият байт,който ни е пратен и индификатора различава.От него надолу индификатора казва според стойността му какво трябва да се случи.В нашия случай стойността на msgid=read_byte(server);,което е е получената стойност на write_byte(socket,1); е 1 (case 1:) и е получено по сокета server. Следователно индификатора казва,че нататък трябва да се получи още един байт tcp_receive(server,1);,който го четем aaa=read_byte(server);. Този байт се оказва петицата от write_byte(socket,5); //1 byte . Сега,ако връзката наистина се е получила сложете: Код if variable_local_exists("aaa") { draw_text(50,50,aaa); }; Трябва да се види една петица Ето тука качих това,за което говорих досега: http://www.2shared.com/file/iiVLHt_3/faucettutorial.html? Фауцет се тегли от http://gmc.yoyogames.com/index.php?showtopic=498062 има едно зелено текстче в поста "here".В .zip-a,който изтеглите има и едно pdf ,което ще ви научи на всичко останало... +В това,което съм качил добавих още няколко обяснения,за да е по-лесно. |
|
|
Олекотена версия | Час: 16:28:45, 18.05.24 |