আমি এইচটিএমএল 5 ক্যানভাস, জাভাস্ক্রিপ্ট (জন রেসিগ সাধারণ উত্তরাধিকার পাঠাগার ব্যবহার করে) এবং সকেট.আইও সহ নোড.জেএস সহ সাধারণ মাল্টি প্লেয়ার তৈরি করার চেষ্টা করছি। আমার ক্লায়েন্ট কোড:
var ক্যানভাস = ডকুমেন্ট.সেটমেন্ট বিইআইডি ('গেম');
var প্রসঙ্গ = canvas.getContext ('2 ডি');
var সকেট = নতুন io.Sket ('127.0.0.1', {পোর্ট: 8080});
var প্লেয়ার = নাল;
var UP = 'UP',
LEFT = 'LEFT',
ডাউন = 'ডাউন',
অধিকার = 'অধিকার';
socket.connect ();
socket.on ('সংযুক্ত', ফাংশন () {socket.send ();
console.log ( 'তে সংযুক্ত!');
প্লেয়ার = নতুন প্লেয়ার (50, 50);
});
সকেট.অন ('বার্তা', ফাংশন (msg) {
যদি (msg == 'ইউপি') {
player.moveUP ();
} অন্যথায় যদি (msg == 'বাম') {
player.moveLEFT ();
} অন্যথায় যদি (msg == 'ডাউন') {
player.moveDOWN ();
} অন্যথায় যদি (msg == 'সঠিক') {
player.moveRIGHT ();
} অন্য {
}
});
socket.on ('সংযোগ বিচ্ছিন্ন', ফাংশন () {
console.log ( 'সংযোগ বিচ্ছিন্ন!');
});
var প্লেয়ার = Class.extend ({
init: ফাংশন (x, y) {
this.x = x;
this.y = y;
},
সেটএক্স: ফাংশন (এক্স) {
this.x = x;
},
getX: ফাংশন () {
এটিকে ফেরত দিন
},
setY: ফাংশন (y) {
this.y = y;
},
getY: ফাংশন () {
এটিকে ফিরিয়ে দিন
},
অঙ্কন: ফাংশন () {
কনটেক্সট.ক্রিয়ারেক্ট (0, 0, 350, 150);
প্রসঙ্গ.ফিলআরেক্ট (এটি.এক্স, এইটি, ১৫, ১৫);
},
সরান: ফাংশন () {
this.x + = 1;
this.y + = 1;
},
মুভআপ: ফাংশন () {
this.y--;
},
মুভলেফ্ট: ফাংশন () {
this.x--;
},
সরানোডাউন: ফাংশন () {
this.y ++,;
},
সরানরাইট: ফাংশন () {
this.x ++,;
}
});
ফাংশন চেককি কোড (ইভেন্ট) {
var কীকোড;
যদি (ইভেন্ট == নাল) {
কীকোড = উইন্ডো.ইভেন্ট.কি কোড;
} অন্য {
কীকোড = ইভেন্ট.কি কোড;
}
স্যুইচ (কী কোড) {
কেস 38: // ইউপি
player.moveUP ();
socket.send (ইউপি);
বিরতি;
কেস 37: // লেফট
player.moveLEFT ();
socket.send (বাম);
বিরতি;
কেস 40: // ডাউন
player.moveDOWN ();
socket.send (নিচে);
বিরতি;
কেস 39: // সঠিক
player.moveRIGHT ();
socket.send (ডান);
বিরতি;
ডিফল্ট:
বিরতি;
}
}
ফাংশন আপডেট () {
player.draw ();
}
var FPS = 30;
সেটইন্টারভাল (ফাংশন () {
হালনাগাদ();
player.draw ();
}, 1000 / এফপিএস);
ফাংশন init () {
ডকুমেন্ট.অনকিডাউন = চেককি কোড;
}
এটা();
এবং সার্ভার কোড:
var http = প্রয়োজনীয় ('http'),
io = প্রয়োজনীয় ('সকেট.আইও'),
বাফার = নতুন অ্যারে (),
সার্ভার = http.createServer (ফাংশন (req, res) {
res.writHead (200, Content 'বিষয়বস্তুর ধরণ': 'পাঠ্য / এইচটিএমএল'});
res.end ( 'ওহে বিশ্ব
');
});
server.listen (8080);
var সকেট = io.listen (সার্ভার);
socket.on ('সংযোগ', ফাংশন (ক্লায়েন্ট) {
ক্লায়েন্ট.অন ('বার্তা', ফাংশন (বার্তা) {
console.log (বার্তা);
client.broadcast (বার্তা);
})
client.on ('সংযোগ বিচ্ছিন্ন', ফাংশন () {
})
});
এবং আমি যখন প্রথম ক্লায়েন্টের সাথে দুটি ক্লায়েন্টের আই চালাচ্ছি তখন দ্বিতীয় ক্লায়েন্ট রেক্টে এবং দ্বিতীয় ক্লায়েন্টের সাথে প্রথম ক্লায়েন্ট রেক্টরে এবং তৃতীয় ক্লায়েন্টের মতো কিছু প্রথম এবং দ্বিতীয় ক্লায়েন্ট রেক্টরের স্থানান্তর করতে পারে।
আমার প্রশ্ন আছে কীভাবে বাস্তব মাল্টি প্লেয়ার তৈরি করবেন? এর মতো কিছু: তিনটি ক্লায়েন্টের এবং প্রথম ক্লায়েন্টটি রেকট 1, দ্বিতীয় রেকটি 2 এবং শেষ রেকটি 3 পান। প্রথম ক্লায়েন্ট কেবল রেকট 1 স্থানান্তর করতে পারে, ক্লায়েন্ট তৃতীয় কেবলমাত্র রেকটি 3 স্থানান্তর করতে পারে।
কারও ধারণা থাকতে পারে? আমি গুগলে অনুসন্ধান করি কিন্তু উত্তর খুঁজে পাই না।
আমার ইংরেজি ভাষার জন্য দুঃখিত, ধন্যবাদ।