怎样可以制作一款游戏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样可以制作一款游戏相关的知识,希望对你有一定的参考价值。

参考技术A 问题一:怎样制作一款游戏? 开发大型游戏需要下列工具:1.需要语言编译器:用于程序的编写与代码的翻译。
2.地图编辑器:用于地图的设置和关卡的设置。
3.脚本编辑器:用于游戏脚本的编写。
4.游戏开发引擎:好的引擎可以开发出好的游戏(包括图象引擎、物理引擎等)。
5.美工的图片动画处理工具:用于游戏图片CG处理。
6.音乐编辑器:用于游戏的音乐编辑。

2、3、4、5都是可以用1来编写的,但一般软件公司都会有自己的一套现成的(或购买或自行开发的)。
开发大型游戏1个人是很难完成任务的。

问题二:怎么制作一款游戏或软件?能用手机制作吗?求详细过程与图解! 完全可以

问题三:怎样能自己制作一个游戏 flash游戏制作软件[email protected] @.exe
制作入门wenku.baidu/...e=view
或wenku.baidu/...e=view
比较简单的示例:小游戏中的:只有这一关、捕捉红按钮、走迷宫、接水管一类的,一些小游戏网站都有,可以下载来用制作软件打开照着编出来的样子去模仿。
慢慢学吧,相信您能制作的不错,如果可以大家可以分享下哦

问题四:怎么制作一款手机游戏 楼主你好:
从题目看,你是想制作一款 游戏,但是我要告诉你的是,一个人完成一款游戏的概率是0.0000001%(哈哈,夸张了一点),游戏不是一个人能完成的。任何一款游戏制作软件要想很好的应用它,都是需要专业的指导和不断的针对练习的。
好了,让我来介绍下游戏制作里会用到哪些制作软件吧。
游戏制作至少要有,游戏建模和游戏程序编写。
3D游戏建模:要会3d *** ax或maya
游戏编程的话你要会一门编程语言,一般是C++,C++大学有学,但不教怎么做游戏。培训学校有教游戏编程的专业。当然有兴趣,可以看看这几本书:《C++Primer》,《windows游戏编程大师技巧》,《3D游戏编程大师技巧》,还有数据结构,算法,DirectX 和OpenGL。
最后说一句,游戏不是一个人做的。
如果你对游戏制作有兴趣,又不知道怎么涉足的话,可以点阅博思游戏教育的官方网站,也可以关注我们的新浪微博,微博ID:博思游戏教育基地”,相信你会有更多的收获。

问题五:游戏是怎么做出来的,一个人能做吗? 游戏的开发是一个团队来研发的,不是一个人能完成的,他需要前期的策划师,原画师和游戏美工师,程序员整个一个团队研发的。

问题六:怎么样才能做一个单机的游戏? 你一个人的话 不要学编程了,也不要学美术了。都来不及了。如果你没有基础的话。最简单的就是从游戏引擎开始,unty3d去下一个,然后去官网上找一个小游戏,跟着教程一步丹步走。比如下雨的程序不会做,就不要让你的游戏下雨,不会爆炸特效就不要让你的游戏爆炸。关键是要有一个好的想法。美术的话 ,画不出来就找别人画好的直接用。实在不行 画成火柴人那种可以把,最好避开动作类 角色扮演类 这类游戏,因为还需要动画,一开始给自己一个简单的目标,比较一个坦克 键盘控制左右移动 去攻击另外一个,等你能熟练完成再去考虑 坦克票不漂亮等问题。 有毅力的话你一定会成功3年连学带做 自己是可以做一款 非常不错的游戏的。如果没毅力 一辈子也做不出来。

问题七:怎样才能做一个简单的小游戏? 可以用Flash
即可以制作动画,也可以制作游戏。从网上下载软件就行

问题八:怎么制作一个网页游戏 一、简单的程序框架。
webgame程序构成:
三大部分。
第一是数据流程。第二是程序。第三是美术。
其中,数据流程包括了功能。也只有在功能中才能体现数据流程。
数据流程相当的麻烦,后面再讨论。
比如最简单的卖买产品。
要实现这个功能。
那么需要有产品基础表、产品详细表、商店表、背包表。如果扩展性更强,相应的双表是少不不了的。
表的问题都简单了。关键是这个物品有什么用。这样物品的来源,一大堆数据,物品的走向,又是一大堆数据。
最后,这些数据得绕成一个圈。
绕圈是一件困难的事情。特别是功能和道具多了起来的时候。难度是2的n次方。
美术:
UI。简洁漂亮的界面总会有好处。
小图标。道具,地图,装备。一类至少10个吧?大体上百把个是需要的。
程序分5个部分:
服务器定时器。(C语言或自己设定服务器)定时循环执行某一段代码。而这段代码主要是根据数据库的数据进行更新。这个可以找个C语言程序员来做。对于C语言程序员来讲,这个功能是相当的简单。当然,具体的处理数据的判断和操作数据库,需要你自己写。让C语言程序员给你段标准代码就行了。完全支持sql语句的。
功能页面、功能函数。主要就是数据存取,判断,数据走向。
ajax函数。(可选)某些需要伪即时的功能要用到。
javascript函数。(可选)模拟客户端的数据计算。也就是webgame的与时间相关的数据。分为两部分。一部分是真实数据,是由服务器端的定时器计算的。另一部分是只有初始值,客户端显示用的。不需要即时同步,仅仅需要模拟同步就行。
数据库。一大堆基础数据表和详细数据表。基础数据表:比如等级1到等级100的用户的属性初始值。详细数据表:每个用户的具体属性。
二、一个详细的例子。
单纯的讨论数据流程是件痛苦的事情。
讨论程序而不给代码也是比较痛苦。
这里用的是php+mysql的。
那就按一个超简单的webgame的方式来讨论。配上适当的代码。应该有所帮助。不足的地方也请大家指出,对我个人也是帮助。
我们不去考虑游戏的可玩性,数值平衡等等问题。我们先只考虑一个简单例子的实现。
那么一个webgame的基本内容需要些什么呢?
数据库:玩家、地图、城市、建筑、武器、士兵。
功能:登陆、升级、个人战斗、士兵之间的战斗、与城市的战斗、修建建筑、打造武器、买卖道具。
(注意:每一个功能,必然对应1个或多个数据表。上面数据库中所列的只是基础中的基础。)
首先是地图、城市、建筑。
这里认为,地图可以有多张,城市在地图上,建筑在城市内。
地图表
Map :Map_ID ,X坐标, Y坐标,City_ID(城市ID),描述。
其中Map_ID是指地图的id。不是自动编号。一张地图就是一个Map_ID,可以重复。
城市表
City:City_ID,城市名字,城市所有人,城市等级,城市资源,描述。
建筑表
Build:ID,City_ID,建筑名称,建筑等级,建筑功能。
其中,地图表确定城市的位置,城市表确定城市的相关数据以及所有人,建筑表内的多条信息属于某一个城市。
建表后,显示出来。
一个for循环。把地图表整个取出来就ok。
跟普通网站的新闻列表没太大区别。不同的是,你需要取得X坐标和Y坐标定位。可以用tabel也可以用div。
class Map地图类

var $Map_ID;
function Map_bg_css($Map_ID)
$this->Map_ID = $Map_ID;

mysql_select_db($db_name,$link);
$sql=”select *......>>

问题九:游戏如何制作 我想制作一个属于自己的传奇游戏 用什么软件可以制作 dream maker 试一下这个软件吧

问题十:怎样可以看到一个游戏的设计程序 你可以花钱买通游戏的开发人员,呵呵,开个玩笑,一般游戏或其他如软件编译过后都是要经过混淆和加密的,即使你用了反射工具查看页不一定看的到它的源代码。如果真想看,就成为那个公司的员工,你就可以看了。

我用Unity制作的第一款游戏Demo

我用Unity制作的第一款游戏Demo

Immortal(不朽)


游戏网址:https://play.unity.com/mg/other/immortal_webgl
或者:点击此处进行游戏

或者:下载游戏 提取码:qv8p

这是我使用 Unity 制作的第一款游戏Demo,一款2D的RPG游戏。
游戏中所有工作均为本人独立完成。

美术方面

哎,早知道该好好学学画画的,对队来说制作这个Demo最耗时、最难的工作就是画画了,画个老半天还是惨不忍睹。

为了不至于不堪入目,果断选择了2D像素风格,游戏中所有的Sprite和Image都是使用Aseprite制作的,比起PS,Aseprite绘制像素画太方便了,爱了爱了。
不知不觉都肝了150多个小时了。。。
角色移动动画

爆炸动画

每个像素都是泪呀T T

技术方面

比较难的点就是对象池的制作,为了保证可扩展性,对象池是用字典存储的,字典通过结构体数组的方式序列化(能在Inspector里直接添加对象简直舒服)。下面是对象池实现的C#代码:

/// <summary>
/// 对象池
/// </summary>
public class ObjectPool : MonoBehaviour

    //单例模式 
    public static ObjectPool instance;
    //对象类别
    public enum ObjectType
    
        Shadow,
        FireBall,
        FireExplosion,
        Wind
    

    #region 字典的序列化
    [System.Serializable]
    //可序列化的结构体数组(为了序列化字典)
    public struct ObjectDetail
    
        public ObjectType type; //类别
        public GameObject prefab; //预制体
        public int count; //数量
    
    [Header("对象池中的内容")]
    public ObjectDetail[] objectDetails;
    #endregion

    //缓存字典<对象类别, 对象队列>
    public Dictionary<ObjectType, Queue<GameObject>> cache = new Dictionary<ObjectType, Queue<GameObject>>();

    private void Awake()
    
        //单例模式
        instance = this;
        //初始化对象池
        Initialization();
    

    /// <summary>
    /// 初始化对象池并填满
    /// </summary>
    private void Initialization()
    
        foreach (var item in objectDetails)
        
            cache.Add(item.type, new Queue<GameObject>());
            for (int i = 0; i < item.count; i++)
            
                var newObject = Instantiate(item.prefab);
                newObject.transform.SetParent(transform);
                newObject.SetActive(false);
                cache[item.type].Enqueue(newObject);
            
        
    
    /// <summary>
    /// 填满对象池
    /// </summary>
    /// <param name="objectType">对象类别</param>
    public void FillPoll(ObjectType type)
    
        foreach (var item in objectDetails)
        
            if (item.type == type)
            
                for (int i = 0; i < item.count; i++)
                
                    var newObject = Instantiate(item.prefab);
                    newObject.transform.SetParent(transform);
                    newObject.SetActive(false);
                    cache[type].Enqueue(newObject);
                
                return;
            
        
    
    /// <summary>
    /// 返还给对象池
    /// </summary>
    /// <param name="type">对象类别</param>
    /// <param name="gameObject">对象</param>
    public void ReturnPool(ObjectType type, GameObject gameObject)
    
        gameObject.SetActive(false);
        cache[type].Enqueue(gameObject);
    
    /// <summary>
    /// 取出一个对象
    /// </summary>
    /// <param name="type">对象类别</param>
    /// <returns>取出的对象</returns>
    public GameObject GetFromPool(ObjectType type)
    
        if (cache[type].Count == 0)
        
            FillPoll(type);
        
        //出队
        var outObject = cache[type].Dequeue();
        //启用
        outObject.SetActive(true);

        return outObject;
    

技能系统的设计也比较难,为了保证可扩展性,代码改了又改,下面是技能类的实现和火球术的实现。
技能类的实现:

/// <summary>
/// 技能类
/// </summary>
public class Skill

    protected PlayerSkillController playerSkillController; //玩家技能控制器
    public Image CDImage; //CD的UI组件
    //冷却时间
    protected float coolDown;
    //冷却时间计时器
    protected float cdTimer;
    //技能在技能栏中的位置
    private int index;
    //是否可用
    public bool Available  get; set; 

    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="coolDown">冷却时间</param>
    /// <param name="index">技能在技能栏中的位置</param>
    protected Skill(float coolDown, int index, PlayerSkillController playerSkillController)
    
        this.coolDown = coolDown;
        cdTimer = coolDown;
        Available = true;
        this.index = index;
        this.playerSkillController = playerSkillController;
    

    /// <summary>
    /// 计算冷却时间
    /// </summary>
    protected void UpdateCD()
    
        if (cdTimer < coolDown)
        
            cdTimer += Time.deltaTime;
        
        else
        
            cdTimer = coolDown;
        
        CDImage.fillAmount = (coolDown - cdTimer) / coolDown;
    

    /// <summary>
    /// 使用技能
    /// </summary>
    /// <returns>使用成功返回true; 失败返回false</returns>
    protected bool Use()
    
        if (cdTimer == coolDown && Available)
        
            cdTimer = 0;
            return true;
        
        return false;
    

火球术的实现:

/// <summary>
/// 火球术
/// </summary>
public class FireBall : Skill, ISkill

    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="coolDown">冷却时间</param>
    /// <param name="index">技能在技能栏中的位置</param>
    /// <param name="playerSkillController">玩家技能控制器</param>
    public FireBall(float coolDown, int index, PlayerSkillController playerSkillController) : base(coolDown, index, playerSkillController)
    
        CDImage = GameObject.FindWithTag("FireBallCD").GetComponent<Image>();
    

    public void Update()
    
        UpdateCD();
    

    public new bool Use()
    
        if (base.Use())
        
            cdTimer = 0;
            GameObject fireBall = ObjectPool.instance.GetFromPool(ObjectPool.ObjectType.FireBall);
            fireBall.GetComponent<FireBallController>().SetProperty(
                playerSkillController.fireBallActiveTime,
                playerSkillController.fireBallDamage,
                playerSkillController.fireBallSpeed,
                playerSkillController.skillDirection,
                playerSkillController.transform.position
                );
            return true;
        
        return false;
    

游戏内容


游戏目前实现了人物的移动和三种不同类型的技能,怪物的移动和两种不同类型的技能,人物与怪物的受伤提示(颜色变化)和死亡效果,告示牌的互动对话UI系统,游戏的菜单UI系统,游戏的暂停、重开和退出功能,小地图功能等。

技能介绍:
火球术:通过对象池实现。使用了拖尾效果和粒子系统,包括飞行时间限制、碰撞检测、击中碰撞器发生爆炸的效果。

疾步:通过对象池实现人物残影效果,移速增加Buff。

掌心雷:通过Trigger实现检测怪物与三段伤害,通过RaycastHit2D实现遮挡识别。

怪物技能:
旋风:通过对象池实现,通过旋转矩阵实现8个方向同时发射。

风阵:通过Trigger实现检测玩家与持续伤害。

怪物实现:
通过仇恨距离与RaycastHit2D实现怪物仇恨系统与追随玩家功能。

通过随机方式选择怪物技能。

部分C#脚本:

推荐教程:
B站UP主: M_Studio
YouTuber:CouchFerret makes GamesB站搬运

以上是关于怎样可以制作一款游戏的主要内容,如果未能解决你的问题,请参考以下文章

Python制作当年第一款手机游戏-贪吃蛇游戏(练习)

怎样制作网页游戏

我用Unity制作的第一款游戏Demo

我用Unity制作的第一款游戏Demo

用threejs制作一款简单的赛车游戏

制作一款3D炸弹超人游戏