个人技术总结——2d像素独立游戏美术入门

222200221林点 2024-12-13 17:10:35
这个作业属于哪个课程 软件工程-24年秋季
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标技术总结
其他参考文献见参考资料

目录

技术概述

我们的项目为一款剧情向的2D像素独立游戏,使用Godot作为游戏引擎,旨在通过引人入胜的剧情和独特的像素艺术风格为玩家带来沉浸式体验。作为游戏美术,我负责了大部分的场景绘制、大部分人物设计和立绘、过场插画和动画、怪物精灵图以及部分像素小人。为确保艺术风格一致,我使用了Procreate进行初步的草图与色彩设计,并利用Aseprite进行像素艺术的制作与动画。通过这些技术与工具的结合,创造出了一种既具表现力又不失像素美感的游戏视觉风格。

使用的工具和技术

  • Godot引擎:作为主要的游戏引擎,负责2D游戏的实现,包括物理、动画、场景管理等。
  • Procreate:用于角色设计、场景绘制和其他2D图形创作,便于草图和细节的快速修改。
  • Aseprite:主要用于制作像素艺术,处理精灵、动画、瓦片集等。

技术详述

Godot引擎的使用

Godot是本项目的主要游戏引擎。由于其强大的2D功能,特别适合用于像素艺术风格的游戏开发。Godot的节点系统支持灵活的资源管理,场景与动画的实现都较为直观。

2D场景与Tilemap系统:利用Godot的Tilemap系统构建游戏世界,通过管理Tileset和Layer来创建丰富的场景,使得大范围的地图可以通过模块化的设计更高效地实现。

extends TileMap

func _ready():
    # 加载Tileset
    var tileset = preload("res://path_to_your_tileset.tres")
    set_tileset(tileset)
    
    # 填充TileMap中的指定位置
    set_cellv(Vector2(5, 5), 0)  # 设置(5, 5)位置的瓦片,索引为0
    set_cellv(Vector2(6, 5), 1)  # 设置(6, 5)位置的瓦片,索引为1
    
    # 获取某个位置的瓦片信息
    var tile = get_cellv(Vector2(5, 5))
    print(tile)  # 输出瓦片的索引

动画系统:Godot的动画系统能够完美支持2D像素动画,通过其简单的动画编辑器制作流畅的角色和怪物动画。通过导入Aseprite中的帧动画,可以高效地实现游戏内的动态效果。

2D动画

extends AnimatedSprite

func _ready():
    # 设置动画循环
    set_animation("walk")
    # 确保动画循环播放
    play("walk", true)

func _process(delta):
    if Input.is_action_pressed("ui_right"):
        # 根据玩家输入更新精灵朝向
        flip_h = false
        if !is_playing():
            play("walk", true)
    elif Input.is_action_pressed("ui_left"):
        flip_h = true
        if !is_playing():
            play("walk", true)
    else:
        # 停止播放动画
        stop()

使用动画树实现复杂动画

extends Node2D

onready var animation_tree = $AnimationTree
onready var animation_state_machine = $AnimationTree/parameters/playback

func _ready():
    animation_tree.active = true  # 启用动画树
    animation_state_machine.travel("Idle")  # 默认状态为站立

func _process(delta):
    if Input.is_action_pressed("ui_right"):
        animation_state_machine.travel("Run")
    elif Input.is_action_pressed("ui_left"):
        animation_state_machine.travel("Run")
    else:
        animation_state_machine.travel("Idle")

使用动画精灵制作帧动画

extends AnimatedSprite

func _ready():
    # 默认开始走路动画
    set_animation("walk")
    play("walk", true)

func _process(delta):
    if Input.is_action_pressed("ui_up"):
        # 播放跳跃动画
        set_animation("jump")
        play("jump", true)
    elif Input.is_action_pressed("ui_left"):
        # 播放行走动画,向左
        set_animation("walk")
        flip_h = true
        play("walk", true)
    elif Input.is_action_pressed("ui_right"):
        # 播放行走动画,向右
        set_animation("walk")
        flip_h = false
        play("walk", true)
    else:
        # 停止动画
        stop()

精灵和动画的优化

extends CanvasLayer

func _ready():
    # 只更新当前画面中的元素
    set_process(true)

Procreate的使用

Procreate被用于角色设计、场景概念和插画的初步创作。由于其便捷的触控界面和强大的绘画功能,Procreate成为了我在艺术创作过程中的主要工具。

  • 角色立绘与场景设计:使用Procreate进行草图和基础色块的绘制,快速迭代设计方案。通过图层和自定义笔刷,我能够有效地控制细节和风格一致性。

    开始界面初稿

    img


    开始界面二稿

    img


    开始界面终稿

    img

  • 细节调整与着色:在Procreate中完成色彩搭配和细节打磨后,再导出高分辨率图像进入Aseprite进行像素化处理。

    img

Aseprite的使用

Aseprite是我主要用于制作像素艺术和动画的工具,特别适用于精灵图的创作。

  • 像素艺术与动画:通过Aseprite制作角色和怪物的精灵图,采用每帧逐像素修改的方式,确保动画效果流畅且符合像素风格。利用Aseprite的图层功能,可以高效地管理动画帧。

    过场动画截图

    img

img

img

img

img

  • 精灵与动画管理:为了避免游戏中的精灵动画过于繁琐,使用Aseprite的调色板和图层管理功能,减少资源浪费,保持视觉上的统一性。

img

img

img

还有很多这里放不下.

技术使用中遇到的问题和解决过程

问题1:Procreate到Aseprite的过渡问题

在将Procreate的高分辨率图像导入Aseprite时,像素艺术的细节和边缘有时会被模糊化,尤其是渐变效果。

解决过程:避免在Procreate中使用过多渐变或模糊效果,尽量保持简洁的色块和清晰的边缘,确保导入Aseprite后仍能保持像素风格。此外,我还通过缩放和网格辅助功能进一步优化了图像的清晰度。

问题2:像素动画的流畅度与表现问题

在Aseprite制作复杂动画时,存在每帧切换不平滑的问题,尤其是快速运动的角色或怪物动画。

解决过程:通过减少每个动画的帧数,并精简不必要的细节,确保每一帧都能清晰呈现。同时,采用了Godot的运动模糊效果,弥补了低帧数带来的动画流畅性问题。

问题3:Godot中的像素图渲染问题

在Godot中使用像素图时,缩放后经常出现锯齿或模糊的现象,影响了游戏画面的清晰度。

解决过程:通过设置Godot的Filter属性为Nearest,避免默认的线性插值,使得像素图能够保持清晰且不失真,确保游戏画面能够呈现真实的像素艺术风格。

# 在主场景中设置所有精灵的缩放方式
func _ready():
    var sprites = get_tree().root.get_children()
    for sprite in sprites:
        if sprite is Sprite:
            sprite.filter = Sprite.FILTER_NEAREST

总结

通过合理的工具组合和技术应用,本项目成功实现了富有表现力且兼具游戏性与艺术性的2D像素世界。在制作过程中,尽管遇到了诸多技术挑战,但通过工具间的互补性以及对细节的不断打磨,最终呈现出了一款符合预期视觉效果的剧情向游戏。

参考资料

Godot Documentation: 官方文档,涵盖了Godot引擎的所有功能,尤其是2D部分。
https://docs.godotengine.org/

Procreate User Guide: Procreate的用户手册,帮助深入了解其绘画和设计工具。
https://procreate.art/handbook/

Aseprite Manual: Aseprite的使用手册,指导如何在这个工具中创建像素艺术和动画。
https://www.aseprite.org/docs/

...全文
197 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

109

社区成员

发帖
与我相关
我的任务
社区描述
202401_CS_SE_FZU
软件工程 高校
社区管理员
  • FZU_SE_TeacherL
  • 言1837
  • 防震水泥
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧