Результаты поиска
AGENTX001 Дата: Среда, 16 Января 2013, 19:06 | Сообщение # 181 | Тема: Пиксель - арт.
почётный гцупер
Сейчас нет на сайте
Цвет волос, обводку, правую ступню. И убери эти уродские рога
AGENTX001 Дата: Вторник, 15 Января 2013, 18:23 | Сообщение # 182 | Тема: Node.JS, Java Script и все что с этим связано.
почётный гцупер
Сейчас нет на сайте
IIyxMASTER , а что не ясно? Название функции само за себя говорит Предлагаешь сделать лучше? Я не против, сам понимаю что не труиЪ
AGENTX001 Дата: Понедельник, 14 Января 2013, 21:01 | Сообщение # 183 | Тема: Node.JS, Java Script и все что с этим связано.
почётный гцупер
Сейчас нет на сайте
Цитата (NancyWithoutSid )
Все же контейнеры для своих данных надо использовать подходящие, а не толкать котэ в бутылку
Там хешмап нужен. Если не ошибаюсь, то это кусок кода из загрузчика текстур, туда передается что-то вроде {'texureName': {path/texture.png}}
AGENTX001 Дата: Понедельник, 14 Января 2013, 20:52 | Сообщение # 184 | Тема: Node.JS, Java Script и все что с этим связано.
почётный гцупер
Сейчас нет на сайте
xMoonGuarDx , это было лишь образное выражение Хотя знаю несколько очень удачных проектов, сделанные двумя-тремя чертами, кодер один, остальные художники. И один мега удачный, изначально писавшийся одним программистом (угадайте КА?).
AGENTX001 Дата: Понедельник, 14 Января 2013, 20:44 | Сообщение # 185 | Тема: Node.JS, Java Script и все что с этим связано.
почётный гцупер
Сейчас нет на сайте
NancyWithoutSid , спасибо за критику. Понимаю, что не хватает теоретических знаний. Цитата (NancyWithoutSid )
Но в данном случае length - это публичное поле Array
Это не Array, это Object. Цитата (NancyWithoutSid )
Оно userLits глобальная переменная, доступная из сотни потоков. Где синхронизация?
Нет синхронизации Цитата (NancyWithoutSid )
Извини, но почему не function drawSprite(spr,x,y,angle,alpha) ? И так везде!
Ну... Привычка Цитата (NancyWithoutSid )
Ай ай ай! Как же мейнтейнить ваш код? Когда у вас ф-ия имеет либо 3, либо какое-то другое число аргументов, при чем при другом числе аргументов она будет падать и пытаться что-то делать Логичнее наверное было бы сделать все же 2
Этому коду почти пол года:) Многому научился, многое делаю по другому. Цитата (NancyWithoutSid )
Подведем итоги. Не важно подо что программировать(хоть под тостер), и на чем(хоть на фортране), главное делать это профессионально...
Это да Цитата (NancyWithoutSid )
а тут все в кучу.
Есть такое дело. Больше так не делаю Сибирский , не нервничай Добавлено (14.01.2013, 20:44) ---------------------------------------------
Цитата (IIyxMASTER )
Развивающаяся = сырой, Дуров признавал, что у их жабер сервера на ноде постоянно память течет.
"Дуров ты дурак". А по сути даже не представляю как у них может память убегать... Хотя чему тут удивляться, у них на страницах туева хуча глобальных объектов. (Ради интереса открой вк в хроме, ctrl-shif-j, и вбей в консоль window). Цитата (IIyxMASTER )
Просто модный тренд
Нет, модным трендом он был год назад. Сейчас вполне работоспособная весчь. Цитата (xMoonGuarDx )
У явы - это не просто так и оправдано, и никому это не мешает. Сервлеты пишут и писали на ней.
Друже, я не говорю, что java не подходит для написания серверов. Я лишь утверждаю, что Node.JS иногда бывает полезнее. Например если в одиночку пытаешься сделать ММО (и что-бы карваны грабить)
AGENTX001 Дата: Понедельник, 14 Января 2013, 17:08 | Сообщение # 186 | Тема: Node.JS, Java Script и все что с этим связано.
почётный гцупер
Сейчас нет на сайте
Цитата (xMoonGuarDx )
И расскажи-ка почему шарп гавно? Аргументы плиз.
Личное восприятие:) Слишком много ООП. Как и у Явы.
AGENTX001 Дата: Понедельник, 14 Января 2013, 13:59 | Сообщение # 187 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Цитата (Vinchensoo )
И покажи серверный код, если не жалко.
Ну вот, совсем немного:
Код
var io = require('socket.io').listen(7231); io.set('log level', 1); var LOG = function(text) { console.log('('+(new Date).toLocaleTimeString()+') '+text); } var FindFreeElement = function(arrayFromFind) { for (var i=0; i <= arrayFromFind.length; i++) { if (i == arrayFromFind.length) return i; if (arrayFromFind[i] === undefined || arrayFromFind[i] == null) return i; } } var AddRectElement = function(array, x, y, size, elem) { for (var i=0; i<=size-1; i++) { for (var j=0; j<=size-1; j++) { array[x+i][y+j] = elem; } } } var CheckRect = function(array, x, y, size, elem) { for (var i=0; i<size-1; i++) { for (var j=0; j<size-1; j++) { if (array[x+i][y+j] != elem) return false; } } return true; } var FindFreeRect = function(arr, size, elem) { var x = Math.round(Math.random()*arr.length-1), y = Math.round(Math.random()*arr[0].length-1); while (!CheckRect(arr, x, y, size, elem)) { x = Math.round(Math.random()*arr.length-1); y = Math.round(Math.random()*arr[0].length-1); } return [x, y]; } var mapW = 256, mapH = 256; var map = []; for (var x=0; x<mapW-1; x++) { map[x] = new Array(mapH); } var BLOCK = 1, BLOCK_STEEL = 2, GRASS = 3, WATER = 4; for (var x=0; x<mapW/2-1; x++) for (var y=0; y<mapH/2-1; y++) { if (Math.round(Math.random()*3) == 2) { var block = Math.round(Math.random()*4); AddRectElement(map, x*2, y*2, 2, block); } else { AddRectElement(map, x*2, y*2, 2, 0); } } var userList = []; var publickData = ['id', 'name', 'pos', 'color']; var GetPublickUserList = function(ignore) { var data = [] for (var i=0; i<userList.length; i++) if ((userList[i]) && i!=ignore) { data[i] = {}; for (var j=0; j<publickData.length-1; j++) { var key = publickData[j]; data[i][key] = userList[i][key]; } } return data; } var Player = function(socket, id, name, color, pos) { this.socket = socket; this.id = id; this.name = name; this.color = color; this.pos = pos; this.changePosition = function(x, y) { this.pos[0] = x; this.pos[1] = y; } userList[this.id] = this; socket.json.send({'evt': 'reAut', 'id': id, 'map': map, 'pos': pos, 'ulist': GetPublickUserList(id)}); socket.broadcast.json.send({'evt': 'newP', 'id': id, 'pos': pos, 'name': name, 'clr': color}); LOG('New player, name: '+name+', id: '+id+', position: ['+pos[0]+'; '+pos[1]+']'); this.socket.playerObject = this; } LOG('Welcome to "BCW" server!'); io.sockets.on('connection', function (socket) { socket.on('disconnect', function() { LOG('Player lost, name: '+socket.playerObject.name+', id: '+socket.playerObject.id); delete userList[socket.playerObject.id]; }); socket.on('message', function(data) { switch (data.evt) { case 'aut': new Player(socket, FindFreeElement(userList), data.name, data.clr, FindFreeRect(map, 5, 0)); break; } }); });
Добавлено (14.01.2013, 13:59) ---------------------------------------------Переезжаем:)
AGENTX001 Дата: Понедельник, 14 Января 2013, 13:59 | Сообщение # 188 | Тема: Node.JS, Java Script и все что с этим связано.
почётный гцупер
Сейчас нет на сайте
Мы с товарищами Vinchesoo и Kvins развели неслабый треш по этому поводу. Решили переехать сюда, дабы не захламлять форум. (Начало )
AGENTX001 Дата: Понедельник, 14 Января 2013, 13:02 | Сообщение # 189 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Цитата (KVinS )
ЗЫ. Предлагаю создать тему по NodeJS и вбрасывать там, интереснее будет.
Ок, ждем. Цитата (Vinchensoo )
Какое отношение имеет JIT-компиляция серверных кодов к браузерам клиента?
Chrome и Node юзают V8, который и занимется JIT-компиляцией. Цитата (Vinchensoo )
ЗЫЫ. Выложить примеры своих кодов на js, строчек 100 достаточно. Интересно посмотреть.
Старенький код, либа для HTML5:
Код
var log = true; var LOG = function(data) { if (log) console.log(data); } var EnableLog = function() { log = true; LOG('Log enabled!'); } var DisableLog = function() { LOG('Log disaled!'); log = false; } Number.prototype.degree = function () { return this * Math.PI / 180; } //Engine inits and settings functions //---------------------------------------------------------------------- var cnv, ctx; var upsCount, fpsCount, ups, fps, lastTick, nowTick, fpsInterval, upsInterval; var InitRock = function(initCnv, initCtx) { cnv = initCnv; if (arguments.length == 1) ctx = cnv.getContext('2d'); else ctx = initCtx; onmousemove = function(e) { mouseX = e.clientX; mouseY = e.clientY; } onclick = function(e) { isclicked = true; setTimeout(function() { isclicked = false; }, 1000/ups); } document.onkeydown = function(e) { keysPresseds[e.keyCode] = true; setTimeout(function() { keysUnpresseds[e.keyCode] = false; }, 1000/ups); } setInterval(function() { ups = upsCount; upsCount = 0; fps = fpsCount; fpsCount = 0; }, 1000); LOG('Rock init succesfull! Screen width: '+cnv.width+'px, screen height: '+cnv.height+'px;'); } var ShowCursor = function(bool) { if (bool == true) cnv.style.cursor = 'main'; if (bool == false) cnv.style.cursor = 'none'; } var GetFPS = function() { return fps; } var GetUPS = function() { return ups; } var RegRenderFunction = function(func) { var RenderFunction = function() { func(); fpsCount++; setTimeout(function() { RenderFunction(); }, 4); } RenderFunction(); LOG('Render function registrated!'); } var RegStepFunction = function(func, ups) { upsInterval = 1000/ups; lastTick = new Date(); setInterval(function() { nowTick = new Date(); deltaTime = (nowTick.getTime() - lastTick.getTime())/upsInterval; lastTick = nowTick; upsCount++; func(deltaTime); }, upsInterval); LOG('Step function registrated!'); } //Load functions //---------------------------------------------------------------------- var imgs = {}; var LoadTextures = function(loadList, path, onchank, onload) { var all_sprites = 0, sprites_loaded = 0; for (var i in loadList) all_sprites++; for (var key in loadList) { name = key; imgs[key] = new Image(); imgs[key].src = path+loadList[key]; imgs[key].name = key; imgs[key].onload = function() { LOG('Texture "'+this.name+'" loaded with "'+path+loadList[this.name]+'";'); sprites_loaded++; if (sprites_loaded == all_sprites) { onload(); } else { onchank(Math.round(sprites_loaded/all_sprites*100)); } } } } //Tiles var Tile = function(texname, repeat) { var ptrn = ctx.createPattern(imgs[texname], repeat); return ptrn; } var DrawTiles = function(tile, x, y, w, h) { ctx.save(); ctx.translate(x, y); ctx.fillStyle = tile; ctx.fillRect(0, 0, w, h); ctx.restore(); } //Textures workers //---------------------------------------------------------------------- var DrawTexture = function(tex_name, x, y, offsetX, offsetY, angle, alpha, partX, partY, partW, partH) { if (arguments.length > 3) { ctx.save(); ctx.translate(Math.floor(x), Math.floor(y)); if (angle > 360) { var fullAngles = Math.floor(angle/360); angle -= fullAngles*360; } ctx.rotate((angle).degree()); if (arguments.length > 6) ctx.globalAlpha = alpha; if (arguments.length > 7) { ctx.drawImage(imgs[tex_name], partX, partY, partW, partH, -offsetX, -offsetY, partW, partH) } else ctx.drawImage(imgs[tex_name], -offsetX, -offsetY); ctx.restore(); } else ctx.drawImage(imgs[tex_name], x, y); } //Sprite engine //---------------------------------------------------------------------- var SpriteObj = { texName: '', animList: {}, currentAnim: '', currentFrame: 0, frameWidth: 0, frameHeight: 0, offsetX:0, offsetY:0, animSpeed:0, timerForNextFrame: false } var DrawSprite = function(spr, x, y, angle, alpha) { if (spr.timerForNextFrame == false) { spr.timerForNextFrame = true; var pointSprite = spr; setTimeout(function() { pointSprite.timerForNextFrame = false; if (pointSprite.currentFrame == pointSprite.animList[pointSprite.currentAnim].lastFrame) { pointSprite.currentFrame = pointSprite.animList[pointSprite.currentAnim].firstFrame; } else { pointSprite.currentFrame++; } }, 1000/pointSprite.animSpeed); } DrawTexture(spr.texName, x, y, spr.offsetX, spr.offsetY, angle, alpha, spr.currentFrame*spr.frameWidth, 0, spr.frameWidth, spr.frameHeight) } var SpriteSetAnim = function(spr, name) { spr.currentAnim = name; spr.currentFrame = spr.animList[name].firstFrame; } var Sprite = function(textureName, frms, frmW, frmH, offsX, offsY, animL, animSpd) { var newSprite = {__proto__: SpriteObj}; with (newSprite) { texName = textureName; frames = frms; frameWidth = frmW; frameHeight = frmH; animSpeed = animSpd; offsetX = offsX; offsetY = offsY; for (var key in animL) { animList[key] = {}; animList[key].firstFrame = animL[key][0]; animList[key].lastFrame = animL[key][1]; } } LOG('Sprite created, he object: '); LOG(newSprite); return newSprite; } //Primitivs draw functions //---------------------------------------------------------------------- var textColor = '#000000'; var SetTextColor = function(color) { textColor = color; } var SetTextFont = function(font) { ctx.font = font; } var SetTextAlign = function(align) { ctx.textAlign = align; } var DrawText = function(text, x, y) { ctx.fillStyle = textColor; ctx.fillText(text, x, y); } var ClearScreen = function(color) { ctx.save(); ctx.fillStyle = color; ctx.fillRect(0, 0, cnv.width, cnv.height); ctx.restore(); } //Input controls functions //---------------------------------------------------------------------- var mouseX, mouseY, isclicked; var keysPresseds = [], keysUnpresseds = []; var GetMouseX = function() { return Math.round(mouseX); } var GetMouseY = function() { return Math.round(mouseY); } var MouseClicked = function() { if (isclicked == true) { isclicked = false; return true; } else return false; } var KeyPressed = function(key) { if (keysPresseds[key] == true) { keysPresseds[key] = false; return true; } else return false; }
Использование:
Код
window.onload = function() { InitRock(document.getElementById('canvas')); ShowCursor(false); ClearScreen('#804000'); SetTextColor('#80FFFF'); SetTextFont('32px TimesNewRoman'); SetTextAlign('center'); DrawText('Загрузка графики... 0%', 400, 250); var Start = function() { with(this){ sprCursor = new Sprite('texCursor', 2, 24, 24, 12, 12, {'main':[0, 1]}, 1); SpriteSetAnim(sprCursor, 'main'); tileGrass = new Tile('texGrass', 'repeat'); } RegStepFunction(Update, 30); RegRenderFunction(Render); SetTextColor('#80FFFF'); SetTextFont('16px TimesNewRoman'); SetTextAlign('left'); } var Update = function(dt) { if (MouseClicked()) alert('click!'); if (KeyPressed(90)) alert('Z pressed!'); } var Render = function() { ClearScreen('#0080C0'); DrawText('fps: '+GetFPS()+'; ups: '+GetUPS(), 5, 15); DrawTiles(tileGrass, 0, 552, 800, 48); DrawSprite(sprCursor, GetMouseX(), GetMouseY(), 0, 1); } LoadTextures({'texCursor':'сursor.png', 'texGrass':'grass.png'}, 'res/', function(procent){ ClearScreen('#82CFFD'); DrawText('Загрузка графики... '+procent+'%', 400, 250); }, Start); }
Сообщение отредактировал AGENTX001 - Понедельник, 14 Января 2013, 13:03
AGENTX001 Дата: Воскресенье, 13 Января 2013, 21:49 | Сообщение # 190 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Цитата (Vinchensoo )
К тому же, ява весьма строгая вещь в плане типизаций и прочих вещей, которые пхп и жс позволяют мешать в кучу.
Удивил:) То ты Фри Паскаль не юзал: он Int с Byte самостоятельно сложить не может. Цитата (Vinchensoo )
Что и требовалось доказать. Если ты не хочешь\ не можешь писать на ООП языках, то что тут вообще обсуждать?)
Ой, не надо, не надо... Цитата (Vinchensoo )
Врожденной ООП моделью.
Которая бесит. Жутко. ООП нужно использовать когда оно необходимо и по своему усмотрению. Цитата (Vinchensoo )
Не думаю, что в NodeJS запилили всякие прелести типа JIT-компиляции
JIT есть и достаточно давно. Сейчас уже и в большинстве современных браузеров (Chrome и Safari - точно).
AGENTX001 Дата: Суббота, 12 Января 2013, 22:04 | Сообщение # 191 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Цитата (Vinchensoo )
фреймворки типа nodeJS
Оу! Чув, разберись в предмете спора! Цитата (Vinchensoo )
В жаве тоже есть куча доп. модулей, которые js и не снились
В данном случае я про серверное программирование. Цитата (Vinchensoo )
просто java сложнее осилить.
Ой ли?! Чем java отличается от любого другого языка? Цитата (Vinchensoo )
Дельфи или C# тоже подойдет
Паскаль - да, но шарп... Это вообще убожество! Класс на классе и классом перемешано! Даже для вывода в консоль нужно заюзать 3 класса....
AGENTX001 Дата: Суббота, 12 Января 2013, 20:01 | Сообщение # 192 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Цитата (MGD-team )
абсолютно никакой аргументация я таки не увидел
Куча дополнительных модулей, удобство.
AGENTX001 Дата: Пятница, 11 Января 2013, 18:03 | Сообщение # 193 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Цитата (KVinS )
Ну я вырос на факте, что для сервера или java или C++. =)
Стереотипы, ве... Цитата (MGD-team )
Зачем нужен js на сервере?
О! очень даже нужен! На самом деле JS необычайно гибкий и "красивый" язык. Кроме того, возможность писать и сервер и клиент на одном ЯП достовляет:) Например валидация данных: написал в сервере, ctrl-c, ctrl-v, пару строчек кода и опа-ля клиент теперь тоже следит за правильностью написания E-maila:)
AGENTX001 Дата: Четверг, 10 Января 2013, 19:48 | Сообщение # 194 | Тема: [3MORPG] [AIR + JAVA] Wild Cats Online
почётный гцупер
Сейчас нет на сайте
Осмелюсь "впихнуться" в вашу беседу:) Кто что думает о Node.JS? Кроме меня его кто-нибудь пробовал? Цитата (KVinS )
По сравнению с простыми сокеты я ничего лёгкого не увидел. Хотя, может, просто не в духе маны курил =)
Ну, у событийной модели много чего интересного. Хотя поначалу получаешь немало пинков - важно грамотно все организовывать.
AGENTX001 Дата: Четверг, 10 Января 2013, 19:10 | Сообщение # 195 | Тема: Пиксель - арт.
почётный гцупер
Сейчас нет на сайте
OleGoN , ну, про это я знаю. Просто резать картинку на части, что бы потом склеить в GIF не очень удобно...
AGENTX001 Дата: Среда, 09 Января 2013, 19:43 | Сообщение # 196 | Тема: Пиксель - арт.
почётный гцупер
Сейчас нет на сайте
OleGoN , принципиально только свободное (или купленное) ПО. Google Docs, GIMP (фотки), Pain.NET(пиксельарт), Blender+Makehuman. P.S.: К играм не относится
AGENTX001 Дата: Среда, 09 Января 2013, 19:34 | Сообщение # 197 | Тема: ПЭИНТ НЭТ
почётный гцупер
Сейчас нет на сайте
Цитата (TimKruz )
(по-умолчанию включено; для каждого инструмента отдельно настраивается)
Это в старых версиях, сейчас сглаживание для всех инструментов одним кликом откл./вкл.
AGENTX001 Дата: Среда, 09 Января 2013, 19:22 | Сообщение # 198 | Тема: Пиксель - арт.
почётный гцупер
Сейчас нет на сайте
Ой, как у вас тут скучно... Кто знает маленькую программку что бы стрип в гифку преобразовать?
AGENTX001 Дата: Суббота, 05 Января 2013, 19:33 | Сообщение # 199 | Тема: MMORPG Платформер "Век Бивней"
почётный гцупер
Сейчас нет на сайте
Цитата (zxc76 )
AGENTX001, перезалей файлы в статье про защиту плиз) Там исходник и дллка вроде)
Пфф... У меня нету Господи, сам сделай, там кода на 30 строчек
AGENTX001 Дата: Пятница, 04 Января 2013, 18:55 | Сообщение # 200 | Тема: MMORPG Платформер "Век Бивней"
почётный гцупер
Сейчас нет на сайте
Цитата (KVinS )
AGENTX001, А твои то танчики как?
Все так же:) Сегодня уже спрашивали: Цитата
Привет , танки доделал ? --- Привет:) Нет, то не до них, то просто влом:) Java Script мне жостко мозг выносит, не работает, то, что ну просто ОБЯЗАНО работать. На поиски ошибок в коде уходит времени намного больше, чем на написание кода. Причем в большинстве случаев, ошибки элементарные, в стиле "опечатался в названии переменной".
Хотя по сути, буквально пара человеко/часов и можно делать ОБТ.